In the Built-in Render Pipeline, when using a Surface Shader, how lighting is applied and which Passes of the shader are used depends on which Rendering Path is used. Each pass in a shader communicates its lighting type via Pass Tags.
ForwardBase
y ForwardAdd
se utilizan.Deferred
pass se utiliza.PrepassBase
y PrepassFinal
passes se utilizan.Vertex
, VertexLMRGBM
y VertexLM
passes se utilizan.ShadowCaster
pass se utiliza.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 ForwardAdd
están presentes), entonces ese objeto se renderiza como lo haría un Vertex Lit path, mirar abajo.
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.
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.
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)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.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.