本文借鉴《Unity Shader入门精要》,算是对自己学习的总结,也希望分享下所学知识~~
因为兰伯特光照模型比较暗,所以使用了一种视觉加强技术。
公式:
反射光线强度 = 入射光线颜色 * 漫反射颜色 * (0.5 * ( 法线方向 · 光源方向 ) + 0.5)
把 法线方向 · 光源方向 的值从原来的 [-1,1],限制到了 [0,1] 范围内。
原来背光面小于 -1 的值都映射到了 0,现在也会有明暗效果了。
这里只有一处修改:
//修改前:
fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb * saturate( dot(worldNormal, worldLight) );
//修改后:
fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb * ( dot(worldNormal, worldLight) * 0.5 + 0.5 );