มาเริ่มกันเลยดีกว่า
1. ให้ทำการสร้าง Shader ตั้งชื่อ RimLight
2. ส่วนของ Properties ให้เพิ่ม _RimColor และ _RimPower
_RimColor("Rim Color", Color) = (1, 1, 1, 1)
_RimPower("Rim Power", Range(0.5, 8.0)) = 3.0
3. ในส่วนของ #pragma surface surf Lambert ให้แก้เป็น
#pragma surface surf Rim (หรือจะเป็นชื่ออื่นก็ได้ตามใจชอบครับ)
4. ประกาศตัวแปร
uniform float4 _RimColor;
uniform float _RimPower;
5. จากนั้นให้สร้าง function
half4 LightingNPR(SurfaceOutput o, half3 lightdir, half3 viewdir, half atten)
{
// คำนวณค่า Lambert Lighting
float lambert = saturate(dot(o.Normal, lightdir));
half4 diffuse = half4(o.Albedo.rgb * _LightColor0.rgb * (lambert * atten * 2) , 1.0);
// คำนวณค่า Rim Lighting
float rim_term = 1.0 - saturate(dot(viewdir, o.Normal));
rim_term = pow(rim_term, _RimPower);
half4 rim = half4(_RimColor.rgb * rim_term, 1.0);
// รวม Lambert กับ Rim Light เข้าด้วยการ add
return diffuse + rim;
}
6. เท่านี้ก็ได้ Rim Light แบบที่ 2 แล้วครับ