兰伯特光照模型——在平面某点漫反射光的光强与该反射点的法向量和入射光角度的余弦值成正比。逐像素光照可以得到更加哦平滑的光照效果。但是,即便使用了逐像素漫反射光照,有一个问题仍然存在。在光照无法达到的区域,模型的外观通常是全黑的,没有任何明暗变化,这会使模型的背光区域看起来就像一个平面一样,失去了模型细节表现。实际上我们可以通过添加环境光来得到非全黑的效果,但即便这样仍然无法解决背光面明暗一样的缺点。为此,有一种改善技术,就是半兰伯特光照模型,是在原兰伯特光照模型的基础上进行了一个简单的修改。
片元着色器中计算漫反射光照的C#代码:
fixed halfLambert=dot(worldNormal,worldLightDir)*0.5+0.5;
fixed3 diffuse=_LightCorlor0.rgb*_Diffuse.rgb*halfLambert;
fixed3 color=ambient+diffuse;
return fixed4(color,1.0);