En los juegos, los materiales a menudo solo influyen en la apariencia visual de los objetos. La apariencia visual se ve afectada por los sombreadores. Entonces, con respecto a la terminología, ¿hay alguna diferencia entre los materiales y los sombreadores? ¿Deberías escribir un sombreador para un material?
shaders
terminology
materials
danijar
fuente
fuente
Respuestas:
Un material es una combinación de atributos que describen cómo debería verse una superficie del material dado.
Algunos motores usan diferentes sombreadores para diferentes materiales, en cuyo caso una definición de material podría verse así:
Otros motores usan un sombreador para todos los objetos (o más bien los motores deciden qué sombreador usar dependiendo de los parámetros, las capacidades de la GPU y otros factores como la distancia), en cuyo caso un material se vería más así:
fuente
Un material especifica cómo responde un objeto a la luz.
Hay un par de parámetros comunes:
Ahora di que tienes un triángulo renderizado con material
M
.M
tiene Kd = (1,0,0) (respuesta difusa roja), Ks = (1,1,1) (respuesta especular blanca), Ns = 25 (el resaltado especular será bastante nítido y no borroso) y no map_Kd ( sin textura).El trabajo del sombreador es usar las matemáticas para tomar las posiciones de vértice del triángulo , la posición de la luz, los valores de color del material y determinar de qué color debe aparecer el triángulo. Un sombreador de vértices realiza este "cálculo de sombreado" una vez en cada vértice e interpola el color a través del triángulo.
Una operación común en un sombreador para calcular la respuesta difusa en un vértice es:
fuente
Un material es lo que aplica a la geometría para darle un color y un patrón. Una textura es un componente de un material.
Un sombreador es un pequeño programa que permite procesar este material en tiempo de ejecución. Lo bueno de los sombreadores es que puedes hacer todo, desde simplemente renderizar el material, hasta agregar efectos dinámicos como reflejos y reflejos especulares hasta cosas extremadamente inteligentes, como hacer agujeros falsos a través de paredes donde una bala ha golpeado.
Entonces, en respuesta a su pregunta, sí, hay una diferencia, también hay una pequeña superposición: puede hacer un material rojo o escribir un sombreador para que las cosas se vean rojas, pero ambos también le permiten hacer muchas cosas No podría con el otro.
y no, no necesitas un sombreador por material. Aunque un material requiere un sombreador para ser renderizado, puede tener uno para todos sus materiales si lo desea. hacen cosas específicas, así que si quisieras que todo fuera brillante, por ejemplo, podrías escribir uno.
Un buen ejemplo de sombreadores es en gears of war. hay un conjunto de materiales para la escena, pero cuando presionas un botón para cambiar a la vista táctica, los sombreadores que procesan estos materiales cambian para que las cosas se vean contorneadas y generalmente diferentes. Lo mismo sucede en Batman: el 'modo detective' de Arkham.
fuente
Aunque tarde, hay un "truco" que puede ayudarlo a comprender mejor.
Un material es todo lo que se adjunta a un sombreador determinado para esa llamada de sorteo.
Por ejemplo, en la respuesta anterior, tiene este material: [Material] Shader = NormalMappedSpecular.glsl Texture1 = Rock.png Texture2 = RockNormal.png Texture3 = RockSpecular.png
lo que tradujo que se renderizará con un sombreador que hace un mapa normal y un cálculo especular, y utilizará las 3 texturas dentro de ese sombreador.
Más adelante, puede volver a usar el mismo sombreador, con otras 3 texturas diferentes (como car, carNormal y carSpecular), realizará una llamada de dibujo diferente con un material diferente, solo porque cambió los parámetros del sombreador.
Con todo, un material es todo lo que crea de forma única una llamada de dibujo utilizando el mismo sombreador con los mismos parámetros (texturas, uniformes, atributos).
Espero que esto ayude a visualizarlo mejor
fuente