Version: 2017.4
Temas Avanzados de ShaderLab
Consejos de rendimiento al escribir shaders

Pipeline de Rendering de Unity

Los shaders definen cómo un objeto se ve por sí mismo (sus propiedades materiales) y cómo reacciona a la luz. Debido a que los cálculos de iluminación deben estar integrados en el shader, y hay muchos tipos de luces y sombras posibles, escribir shaders de calidad que “sólo funcionan” sería una tarea complicada. Para hacerlo más fácil, Unity tiene Surface Shaders, donde todas las funciones de iluminación, sombreado, lightmapping, avance y entrega diferida son atendidas automáticamente.

Este documento describe las peculiaridades de la iluminación de Unity y el pipeline de rendering y lo que sucede detrás de las escenas de Surface Shaders.

Rendering Paths

La forma en que se aplica la iluminación y qué Passes del shader se utilizan depende de que cuál Rendering Path. Cada pass en un shader comunica su tipo de iluminación a través de Etiquetes Pass.

Forward Rendering path

ForwardBase pass renderiza ambiente, lightmaps, y una luz direccional principal y las luces (vertex/SH) no importantes una vez. El ForwardAdd pass se utiliza para cualquier luz aditiva por pixel; una invocación por objeto iluminado por tal luz se hace. Mire Forward Rendering para detalles.

En forward rendering se utiliza, pero en un shader no tiene forward-suitable passes (i.e. ni los tipos de pass ForwardBase ni ForwardAddestán presentes), entonces ese objeto se renderiza como lo haría un Vertex Lit path, mirar abajo.

Deferred Shading pat

El pass Deferred renderiza toda la información necesaria para la iluminación (en shaders incorporados: color difuso, color especular, suavidad, normal del espacio del mundo, emisión). También agrega lightmaps, reflection probes e iluminación ambiental en el canal de emisión. Consulte Deferred Shading para obtener más detalles.

Legacy Deferred Lighting path

El pass PrepassBase renderiza normales y el exponente especular; El pass PrepassFinal produce el color final combinando texturas, iluminación y propiedades del material emisivo. Toda la iluminación en escena regular se realiza por separado en el espacio de la pantalla. Consulte Deferred Lighting para obtener más detalles.

Legacy Vertex Lit Rendering path

Dado que la vertex lighting se utiliza con más frecuencia en plataformas que no soportan shaders programables, Unity no puede crear múltiples variantes shader internamente para manejar casos lightmapped vs. no lightmapped. Así que para manejar los objetos lightmapped y no lightmapped, varios passes tienen que ser escritos explícitamente.

  • Vertex pass se utiliza para objetos no lightmapped. Todas las luces se renderizan a la vez, utilizando un modelo de iluminación de función fija OpenGL/Direct3D (Blinn-Phong)
  • El VertexLMRGBM pass se utiliza para los objetos lightmapped, cuando los lightmaps están codificados RGBM (PC y consolas). No se aplica iluminación en tiempo real; Se espera combinar texturas con un lightmap.
  • El VertexLMM pass se utiliza para los objetos lightmapped, cuando los lightmaps son codificados con doble LDR (plataformas móviles). No se aplica iluminación en tiempo real; Se espera combinar texturas con un lightmap.

Véase también

Temas Avanzados de ShaderLab
Consejos de rendimiento al escribir shaders
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961