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:


  1. ​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).
  2. ​half4 Lighting<Name> (SurfaceOutput s, half3 viewDir, UnityGI gi);​​ This is used inforward rendering path for light models that are view direction dependent.
  3. ​half4 Lighting<Name>_Deferred(SurfaceOutput s, UnityGI gi, out half4 outDiffuseOcclusion, out half4 outSpecSmoothness, out half4 outNormal); ​​ This isused in deferred lighting path.
  4. ​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.