Version: 2020.2
Writing Surface Shaders
Ejemplos del Surface Shader

Surface Shaders and rendering paths

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.

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.
  • VertexLM pass is used for lightmapped objects, when lightmaps are double-LDR encoded (mobile platforms). No realtime lighting is applied; pass is expected to combine textures with a lightmap.
Writing Surface Shaders
Ejemplos del Surface Shader