Пример использования поверхностного шейдера в встроенном Render Pipeline
В следующем примере показана модель освещения «Рамп», которая использует рампу текстуры для определения того, как поверхности реагируют на углы между светом и нормой. Это может быть использовано для различных эффектов, и особенно эффективно, когда используется с освещением Toon.
...ShaderLab code...
CGPROGRAM
#pragma surface surf Ramp
sampler2D _Ramp;
half4 LightingRamp (SurfaceOutput s, half3 lightDir, half atten) {
half NdotL = dot (s.Normal, lightDir);
half diff = NdotL * 0.5 + 0.5;
half3 ramp = tex2D (_Ramp, float2(diff)).rgb;
half4 c;
c.rgb = s.Albedo * _LightColor0.rgb * ramp * atten;
c.a = s.Alpha;
return c;
}
struct Input {
float2 uv_MainTex;
};
sampler2D _MainTex;
void surf (Input IN, inout SurfaceOutput o) {
o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;
}
ENDCG
...ShaderLab code...
Вот как это выглядит с текстурой и без текстуры, с одним направленным светом в Scene:
