Unity shader 使用 半兰伯特 (Half-Lambert)漫反射会使得模型在没有直射光的情况下漆黑一片

问题:

Unity shader 使用 半兰伯特 (Half-Lambert)漫反射会使得模型在没有直射光的情况下漆黑一片,原因不得而知。

使用半兰伯特漫反射代码如下:

***********************half兰伯特漫反射计算
//fixed3 diffuse = _LightColor0.rgb * (dot(i.worldNormal, ligthDir)*0.5 + 0.5)*_Diffuse.rgb;






//输出为:
return fixed4(ambient + (diffuse + specular) * atten, 1.0);

结果便是,整个输出都被毁了。

Unity shader 使用 半兰伯特 (Half-Lambert)漫反射会使得模型在没有直射光的情况下漆黑一片_第1张图片

被圈起来的模型

将半兰伯特漫反射替换为兰伯特漫反射

fixed3 diffuse = _LightColor0.rgb *  max(0, dot(i.worldNormal, ligthDir))*_Diffuse.rgb;

其他都不变。

输出结果如下,已经可以正常显示环境光了 

Unity shader 使用 半兰伯特 (Half-Lambert)漫反射会使得模型在没有直射光的情况下漆黑一片_第2张图片

解决方法:

无!!

总结:

哪位大神能够给我解释一下?实在是不懂。

你可能感兴趣的:(shader,Unity,unity)