Materiales, Shaders y Texturas
Standard Shader

Creando y utilizando Materiales

Para crear un nuevo Material, utilice Assets->Create->Material del menú principal o el menú de contexto Project View.

Por defecto, los nuevos materiales son asignados al Standard Shader, con todas las propiedades del mapa vacías, así:

Una vez el Material haya sido creado, usted puede aplicarlo a un objeto y ajustar todas su propiedades en el Inspector. Para aplicarlo a un objeto, simplemente arrástrelo desde el Project View a cualquier objeto en la Scene o Hierarchy.

Ajustando las Propiedades de los Materiales

Usted puede seleccionar qué Shader utilizar para cualquier Material en particular que utilice. Simplemente expanda el despegable Inspector en el Inspector, y escoja su nuevo Shader. El Shader que usted escoja dicta las propiedades disponibles para cambiar. Las propiedades pueden ser colores, deslizadores(sliders), texturas, números, o vectores. Si usted ha aplicado el material a un objeto activo en la Scene, usted verá sus cambios de la propiedad aplicada al objeto en tiempo real.

Hay dos maneras para aplicar una Texture a una propiedad.

  1. Arrástrelo desde el Project View encima del cuadrado de Textura
  2. Haga click en el botón Select, y escoja a textura desde la lista despegable que aparece

Shaders Integrados

Además del Standard Shader,hay un número de otras categorías de shaders integrados para propósitos especializados:

  • FX: La iluminación y efectos de vidrio.
  • GUI y UI:: Para gráficos de la interfaz de usuario.
  • Mobile: Un shader simplificado de alto rendimiento para dispositivos móviles.
  • Nature: Para árboles y el terreno.
  • Particles: Los efectos del sistema de partículas.
  • Skybox: Para renderizar ambientes del fondo detrás de toda la geometría
  • Sprites: Para uso con el sistema de sprite 2D
  • Toon: Renderizado tipo-caricatura.
  • Unlit: Para un renderizado que evite toda la iluminación & sombras
  • Legacy: Las colecciones grandes de shaders más viejos que fueron sustituidos por el Standard Shader

Detalles Técnicos del Shader

Un Shader es un script que contiene cálculos matemáticos y algoritmos para saber cómo los pixeles en la superficie de un modelo deberían parecerse. El standard shader realiza cálculos de iluminación realistas y complejos. Otros shader podrían utilizar cálculos más simples o diferentes para mostrar diferentes resultados. Dentro de cualquier shader dado hay un número de propiedades que se le pueden dar valores por un Material utilizando ese shader. Estas propiedades pueden ser números, definiciones de color o texturas, que aparecen en el inspector cuando se mire un material. Los materiales luego son utilizados por los componentes de renderización adjuntados a Game Objects, para renderizar cada mesh del Game Object.

Es posible y a menudo deseable tener varios materiales diferentes que pueden referenciar la mismas texturas. Estos materiales pueden también usar el mismo o diferentes shaders, dependiendo en los requerimientos.

A bajo hay un ejemplo de una combinación de configuración posible utilizando tres materiales, dos shaders y una textura.

En el diagrama nosotros tenemos un carro rojo y un carro azul. Ambos modelos utilizando un material por separado para la carrocería, “Red car material” y “Blue car material” respectivamente.

Ambos estos materiales de la carrocería utilizan el mismo shader personalizado, “Carbody Shader”. Un shader personalizado puede ser utilizado ya que el shader agrega características extras específicamente para los carros, tal como un renderizado metálico brillante, o tal vez tiene una característica personalizada de un damage masking.

Cada uno de los materiales de la carrocería tienen una referencia al “Car Texture”, el cual es un mapa de textura que contiene todos los detalles de la carrocería, sin un color de pintura específico.

El shader Carbody (de la carrocería) también acepta un color tine, que es configurado a un color diferente para carros rojos y azules, dándole a cada carro un aspecto diferente mientras se utiliza una sola textura para ambos de ellos.

Los modelos de la rueda del carro utilizan un material separado nuevamente, pero esta vez ambos carros comparten el mismo material para sus ruedas, ya que las ruedas no difieren en cada carro. El material de la rueda utiliza el Standard Shader, y tiene una referencia nuevamente a la Textura del Carro.

Tenga en cuenta cómo la textura del carro contiene detalles para la carrocería y ruedas - este es un texture atlas, significando que diferentes partes de la imagen de textura están explícitamente mapeados a diferentes partes del modelo.

Incluso los materiales de la carrocería están utilizando una textura que contiene la imagen de la rueda, la rueda no aparece en el cuerpo ya que esa parte de la textura no está mapeada a la geometría de la carrocería.

Similarmente, el material de la rueda está utilizando la misma textura, que tiene detalle de la carrocería en él. El detalle de la carrocería no aparece en la ruede, debido a que solamente la porción de la textura que muestra el detalle de la llanta es mapeado a la geometría de la rueda.

Este mapeo se realiza por el artista 3D en una aplicación externa de 3D, y se llama “UV mapping”.

Para ser más específico, un Shader define:

  • El método para renderizar un objeto. Esto incluye código y cálculos de matemáticas que pueden incluir los ángulos de fuentes de luz, el ángulo de vista, y otros cálculos relevantes. Los shaders también pueden especificar diferentes métodos dependiendo en el hardware de los gráficos del usuario final.
  • Los parámetros que pueden ser personalizados en el inspector de materiales, tal como texture maps, colores y valores numéricos.

Un Material define:

  • Qué shader utilizar para renderizar este material.
  • Los valores específicos para los parámetros del shader - tal como qué mapas de textura, y el color y los valores numéricos en utilizar.

Los Shaders personalizados son para ser estrictos por programadores de gráficas. Estos son creados utilizando el lenguaje ShaderLab, le cual es bastante simple. Sin embargo, hacer que un shader funcione bien en una variedad de tarjetas gráficas es un trabajo que involucra y requiere un conocimiento bastante compresivo acerca de cómo las tarjetas gráficas funcionan.

Una cantidad de shaders están construido a Unity directamente, y algunos más vienen en la librería Standard Assets.

Materiales, Shaders y Texturas
Standard Shader