写shader的时候 经常会看到 颜色相乘 相加 为啥呢 新手肯定一头雾水
首先要明确一点 颜色的rgb的每个值都是[0,1]
颜色值相乘必然会使颜色值减小(物体更暗),相加必然会使颜色值增加更加接近1(物体更亮)
在计算光照反射时,经过物体材质的反射,光的颜色必然是经过削弱的,所以在计算光照反射时用颜色值相乘。
而在计算贴图采样颜色和环境光颜色时,也用了颜色值相乘,这是因为这时候计算的是两个颜色值的混合。在现实生活中,把很多不同颜色的颜料混合在一起时,他们的颜色最后会变为黑色。这说明他们的颜色值都是越来越小的,rgb值越来越趋近于0,所以才会变成黑色。所以在计算两个颜色值的混合时用颜色相乘。
然后就是颜色相加,在最后返回像素颜色的时候,用的时环境光颜色和漫反射颜色、高光反射颜色相加。这是因为不同类型的光照计算必然是要让物体变亮的(即颜色值增加),所以在计算各种不同的光照效果叠加时应用颜色值相加。
就是下面俩链接
https://zhuanlan.zhihu.com/p/522941696
https://juejin.cn/post/6844903682463662088
乘的时候 因为都不到1 乘就颜色变暗 接近黑色( 个人理解 有点类似油漆混合 颜色越多颜色越深 )
加的时候 颜色变白 (是不是和太阳光一个道理?颜色越多越接近白色)
看下面两张图
相乘
相加
相减
相加除以2