Nos jogos, os materiais geralmente influenciam apenas a aparência visual dos objetos. A aparência visual é efetuada por shaders. Então, com relação à terminologia, existe uma diferença entre materiais e shaders? Você deve escrever um shader para um material?
shaders
terminology
materials
danijar
fonte
fonte
Respostas:
Um material é uma combinação de atributos que descrevem como deve ser a superfície de um determinado material.
Alguns motores usam sombreadores diferentes para materiais diferentes; nesse caso, uma definição de material pode ter a seguinte aparência:
Outros mecanismos usam um sombreador para todos os objetos (ou melhor, os motores decidem qual sombreador usar, dependendo dos parâmetros, dos recursos da GPU e de outros fatores como a distância); nesse caso, um material seria mais parecido com isto:
fonte
Um material especifica como um objeto responde à luz.
Existem alguns parâmetros comuns:
Agora diga que você tem um triângulo processado com material
M
.M
tem Kd = (1,0,0) (resposta difusa em vermelho), Ks = (1,1,1) (resposta especular em branco), Ns = 25 (o destaque especular será bastante nítido e sem distorção) e nenhum map_Kd ( sem textura).O trabalho do shader é usar a matemática para assumir as posições dos vértices do triângulo , a posição da luz, os valores da cor do material e descobrir qual cor o triângulo deve aparecer. Um sombreador de vértice faz esse "cálculo de sombreamento" uma vez em cada vértice e interpola a cor através do triângulo.
Uma operação comum em um shader para calcular a resposta difusa em um vértice é:
fonte
Um material é o que você aplica à geometria para fornecer uma cor e um padrão. Uma textura é um componente de um material.
Um sombreador é um pequeno programa que permite que esse material seja renderizado em tempo de execução. O bom dos shaders é que você pode fazer de tudo, desde renderizar o material, adicionar efeitos dinâmicos como reflexos especulares e reflexões até coisas extremamente inteligentes, como fazer buracos falsos nas paredes onde uma bala atingiu.
então, em resposta à sua pergunta - sim, há uma diferença, também há uma pequena sobreposição - você pode criar um material vermelho ou escrever um sombreador para tornar as coisas vermelhas, mas as duas também permitem que você faça muitas coisas não poderia com o outro.
e não, você não precisa de um shader por material. embora um material exija a renderização de um shader, você pode ter um para todos os seus materiais, se desejar. eles fazem coisas específicas; portanto, se você quiser que tudo fique brilhante, por exemplo, basta escrever um.
Um bom exemplo de shaders é em artes de guerra. existe um conjunto de materiais para a cena, mas quando você pressiona um botão para alternar para a visão tática, os shaders que estão processando esses materiais mudam para que as coisas pareçam delineadas e geralmente diferentes. O mesmo acontece no batman: o 'modo de detetive' de Arkham.
fonte
Embora atrasado, existe um "truque" que pode ajudá-lo a entender melhor.
Um material é tudo o que está anexado a um determinado sombreador para essa chamada de empate.
Por exemplo, na resposta acima, você tem este material: [Material] Shader = NormalMappedSpecular.glsl Texture1 = Rock.png Texture2 = RockNormal.png Texture3 = RockSpecular.png
que traduziu que você renderizará com um sombreador que faz um mapa normal e uma computação especular e usará as três texturas dentro desse sombreador.
Posteriormente, você pode reutilizar o mesmo shader, com outras 3 texturas diferentes (como car, carNormal e carSpecular), você fará uma chamada de desenho diferente com um material diferente, apenas porque alterou os parâmetros do shader.
Em suma, um material é tudo o que cria exclusivamente uma chamada de empate usando o mesmo sombreador com os mesmos parâmetros (texturas, uniformes, atributos).
Espero que isso ajude a visualizar melhor
fonte