为什么最终的颜色值是着色器程序中另外两个颜色值的乘积



在漫射照明模型或其他模型中,一个像素的最终颜色值应该是另外两个光的颜色值的乘积,我不太明白。这样的:

float4 c;
c.rgb = (s.Albedo * _LightColor0.rgb*diff);

这是因为你还需要考虑灯光的颜色和周围反射的光线。

在您提交的代码中,s.Albedo是对象本身的颜色,_LightColor0.rgb提供主光的颜色(即场景中的定向光)。作为一个实验,首先试着改变你的主灯的颜色,从白色到红色再到蓝色,你会注意到发生了什么。

同样,没有_LightColor0.rgb * diff乘以对象将给出平面颜色,看起来更像一个2D对象。

最新更新