Shader学习使用的是Unity2018.1.0b
在学习基础光照模型时,除了逐顶点光照和逐像素光照以外,为了给无光照的阴影部分增强视觉效果,我们也会使用半兰伯特漫反射光照模型,然而在使用半兰伯特模型时,一旦关闭环境中的光源(有环境光)会出现很有趣的现象。
逐顶点光照的顶点着色器:
void vert(in a2v v,out v2f o){
o.pos=UnityObjectToClipPos(v.vertex);
fixed3 Amb = UNITY_LIGHTMODEL_AMBIENT.xyz;
float3 worldNormal = normalize(mul(v.normal,(float3x3)unity_WorldToObject));
float3 worldLight = normalize(_WorldSpaceLightPos0.xyz);
fixed3 diffuse1 = _LightColor0.rgb * _Diffuse.rgb * saturate(dot(worldNormal , worldLight));
o.color = Amb + diffuse1;
}
逐顶点光照的半兰伯特模型顶点着色器:
void vert(in a2v v,out v2f o){
o.pos=UnityObjectToClipPos(v.vertex);
fixed3 Amb = UNITY_LIGHTMODEL_AMBI