Unity Shader踩坑笔记-2 ForwordBase-半兰伯特光照模型的问题记录
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); fixed halfLan = 0.5*dot(worldNormal,worldLight) + 0.5; fixed3 diffuse1 = _LightColor0.rgb * _Diffuse.rgb * halfLan; o.color = Amb + diffuse1; } 右侧为半兰伯特模型的表现效果: 上图有加入了环境光。 然后,当我们把hierarchy面板中的Directional Light禁用掉,有趣的现象就出现了。 直接看代码,半兰伯特漫反射模型的光照是环境光+漫反射才对,然而,我们看到的却是: 为了能让半兰伯特漫反射模型能在无光照时正确的表现环境光的效果,代码可以进行一点点修改即可: fixed halfLan = 0