다음 예시는 조명이 오브젝트의 가장자리를 ‘래핑’하는 Diffuse 조명의 수정 버전인 Wrapped Diffuse 를 보여 줍니다. 이는 피하 산란 효과를 시뮬레이션하는 데 유용합니다. CGPROGRAM 섹션만 변경되므로 주변 셰이더 코드가 생략됩니다.
...ShaderLab code...
CGPROGRAM
#pragma surface surf WrapLambert
half4 LightingWrapLambert (SurfaceOutput s, half3 lightDir, half atten) {
half NdotL = dot (s.Normal, lightDir);
half diff = NdotL * 0.5 + 0.5;
half4 c;
c.rgb = s.Albedo * _LightColor0.rgb * (diff * 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...
다음은 씬에 방향 광원이 하나일 때 텍스처가 있을 경우와 없을 경우를 보여줍니다.