兰伯特定律(Lambert is law);
反射光线的强度与表面法线和光源方向之间夹角的余弦值成正比;
漫反射公式:C diffuse=(C light * M diffuse)max(0, <N*<L)
(入射光线 的颜色和强度 * 材质 的漫反射系数)max(0, 表面法线 *光源方向的点积)
弊端就是在模型光照无法达到的区域通常是全黑的,没有任何明暗变化。
半兰伯特光照模(Half Lambert);
C diffuse=(C light * M diffuse)(0.5( <N*<L)+0.5)
背面无光也可以有明暗变化
半兰伯特是没有任何物理依据的,他仅仅是一个视觉加强技术
shader "Unity Shader Book/Chapter6/HalfLambert"{
properties{
_Diffuse("Diffuse",Color) = (1,1,1,1)
}
SubShader{
pass {
Tags{"LightMode" = "ForwardBase"}
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "Lighting.cginc"
fixed4 _Diffuse;