Version: 2017.4
Legacy Shaders (Shaders de Legado)
La Familia de Sombreadores Normales

El Uso y rendimiento de shaders integrados

Los Sombreadores en Unity son usados a través de Materials, que esencialmente combina el código del sombreador con parámetros como texturas. Una explicación en profundidad de la relación Sombreador/Material se puede leer aquí.

Las propiedades del Material van a aparecer en el Inspector cuando ya sea el Material en sí mismo o un GameObject que utilice el Material seleccionado. El Inspector de Material se ve así:

Cada Material se verá un poco diferente en el Inspector, dependiendo del sombreador específico que esté utilizando. El sombreador en sí mismo determina qué tipo de propiedades serán disponibles para ajustar en el inspector. El Inspector del Material es descrito en detalle en Material reference page. Recuerde que un sombreador es implementado a través de un Material. Entonces mientras que el sombreador define las propiedades que serán mostradas en el Inspector, cada material en realidad contiene la información ajustada de los deslizadores, colores, y texturas. La cosa más importante que hay que acordarse acerca de esto es que un sombreador sencillo puede ser usado en múltiples materiales, pero un Material sencillo no puede ser usado en múltiplos sombreadores.

Consideraciones de Rendimiento

Hay un número de factores que pueden afectar el rendimiento en general de su juego. Esta página va a hablar específicamente acerca de las consideraciones de rendimiento para Built-in Shaders. El rendimiento de un sombreador en su mayoría depende en dos cosas: el sombreador en sí mismo y qué Rendering Path es usado por el proyecto o cámara específica. Para recomendaciones de rendimiento cuando escriba sus propios sombreadores, vea la página ShaderLab Shader Performance.

Rendering Paths y el rendimiento del sombreador(shader)

De los rendering paths que Unity soporta, Deferred Lighting y Vertex Lit paths tienen el rendimiento más predecible. En Deferred Lighting, cada objeto por lo general es dibujado dos veces, sin importar qué luces lo estén afectando. Similarmente, en Vertex Lit cada objeto por lo general es dibujado una vez. Entonces, las diferencias de rendimiento en los sombreadores en su mayoría dependen en cuántas texturas ellos usan y qué calculaciones hacen.

El Rendimiento del Sombreador en Forward rendering path

En Forward rendering path, el rendimiento de un sombreador depende en ambos el sombreador en sí mismo y las luces en la escena. La siguiente sección explica los detalles. Hay dos categorías básicas de sombreadores desde una perspectiva de rendimiento, Vertex-Lit, y Pixel-Lit.

Los sombreadores Vertex-Lit en Forward rendering path son siempre más baratos que sombreadores Pixel-Lit. Estos sombreadores trabajan calculando la iluminación basada en los vertices del mesh, usando todas las luces a la vez. Por esto, sin importar qué tantas luces estén brillando en el objeto, solamente tendrá que ser dibujado una vez.

Los sombreadores Pixel-Lit calculan la iluminación final en cada píxel que es dibujado. Por esto, el objeto tiene que ser dibujado una vez para obtener la iluminación de ambiente y la iluminación principal direccional, y una vez para cada luz adicional que está brillando en él. Por lo tanto, es N rendering passes, dónde N es el número final de las luces de píxel que están brillando en el objeto. Esto aumenta la carga en el CPU que tiene que procesar y envía comandos a las tarjetas gráficas, y en la tarjeta de gráficos para procesar los vertices y dibujar los píxeles. El tamaño del objeto Pixel-lit en la pantalla también afectará la velocidad en el que es dibujado. Entre más grande el objeto, más lento será dibujado.

Entonces los sombreadores pixel lit vienen con un precio en el rendimiento, pero ese precio permite algunos efectos espectaculares: sombras, normal-mapping, un buen aspecto de reflejos especulares y light cookies, solo por nombrar algunos.

Recuerde que las luces pueden ser forzadas a un modo de píxel (“importante”) o vertex/SH (“no importante”). Cualquier luz de vertice que brille en un sombreador Pixel-Lit va a ser calculada basada en los vertices del objeto o todo el objeto, y no aumentará el costo de renderización o efectos visuales que están asociados con las luces de píxeles.

El Rendimiento General del Sombreador

Fuera de los Built-in Shaders, ellos vienen más o menos en este orden de complejidad creciente:

  • Unlit. Esto es solamente una textura, no afectada por cualquier iluminación.
  • VertexLit.
  • Diffuse.
  • Normal mapped. Este es un poco más caro que el Diffuse: agrega una textura más (normal map), y un par de instrucciones de sombreado.
  • Specular. Esto añade el cálculo resaltado especular.
  • Normal Mapped Specular. Nuevamente, esto es un poco más costoso que Specular.
  • Parallax Normal mapped. Esto agrega la calculación de paralaje de normal-mapping.
  • Parallax Normal Mapped Specular. Esto añade ambas cálculos de paralaje de normal-mapping y la calculación resaltada especular.

Shaders simplificados móviles

Adicionalmente, Unity tiene varios sombreadores simplificados destinados para plataformas móviles, debajo de la categoría “Mobile”. Estos sombreadores funcionan en otras plataformas también, entonces si usted puede vivir con su simplificación (e.g. una aproximación especular, sin soporte de color por material etc.), intente usarlos!

Para ver las simplificaciones especificas que se han hecho para cada shader, mire los archivos .shader del paquete de “built-in shaders” y la información se lista en la parte superior del archivo en algunos comentarios.

Algunos ejemplos de los cambios que son comunes a través de todos los shaders Móviles son:

  • No hay un color de material o color principal para el tinte del shader.
  • Para los shaders que toman un normal map, el tiling (tejas) y el offset (desfase) desde la textura base se utiliza.
  • Los particle shaders no soportan AlphaTest o ColorMask.
  • Característica y soporte de iluminación limitado - e.g algunos shaders solo soportan una directional light.
Legacy Shaders (Shaders de Legado)
La Familia de Sombreadores Normales