我在3D引擎中实施照明,并发现了计算照明方式的缺陷。在合成着色器中,我获得了漫反射颜色和光照计算。计算照明的正确方法
return diffuseColor * (diffuseLight + ambient);
据我所知,这是做事的标准方式。但是,例如,如果颜色是0,1,0,而光线是1,0,0,那该怎么办。 (在本例中忽略环境) 结果将会是0,0,0。但在现实生活中,如果我得到一张纯净的绿色纸,并且将红色的光照射到它上面,它应该变成黄色。或者至少不是黑色。
其他游戏如何解决这个问题?
我可以发誓,它按照我描述的方式工作。我一定一直在用计算机工作太久,以附加条件考虑颜色。至少我不是唯一一个这样想的人,在我问这里之前咨询了我的朋友。 – Programmdude