https://docs.unity3d.com/Manual/SL-SurfaceShaderLighting.html
Lighting Model declaration
Lighting model is a couple of regular functions with names starting with Lighting. They can be declared anywhere in your shader file or one of included files. The functions
are:
-
half4 Lighting<Name> (SurfaceOutput s, UnityGI gi);This is used inforward rendering path for light models that are not view direction dependent (e.g. diffuse). -
half4 Lighting<Name> (SurfaceOutput s, half3 viewDir, UnityGI gi);This is used inforward rendering path for light models that are view direction dependent. -
half4 Lighting<Name>_Deferred(SurfaceOutput s, UnityGI gi, out half4 outDiffuseOcclusion, out half4 outSpecSmoothness, out half4 outNormal);This isused in deferred lighting path. -
half4 Lighting<Name>_PrePass (SurfaceOutput s, half4 light);This is used in light prepass (legacy deferred) lighting path.
Note that you don’t need to declare all functions. A lighting model either uses view direction or it does not. Similarly, if the lighting model only works in forward, do not declare the _Deferred or _Prepass function.
This way, all Shaders that use it compile to forward rendering only.
本文详细介绍了Unity中Surface Shader的光照模型声明,包括用于前向渲染路径和延迟光照路径的函数,如Lighting_Name()等,阐述了如何根据不同需求选择合适的光照模型。
332

被折叠的 条评论
为什么被折叠?



