我想渲染一个由多个灯点亮的场景。由于灯光数量没有预定义,我决定通过光线渲染光线。
我的问题是:在我生成几个RT-Textures包含不同灯光点亮的结果后,如何将它们组合起来生成最终结果?
有些文章表明灯光是添加剂。但是,例如,#define _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING 1
上color_i
的一个像素被light_i
着色。最终颜色RT-Texture_i
(根据附加属性)更容易饱和,我不认为这是正确的(与现实世界相比)。
修改
以下图像由两个光源渲染,一个来自正面,另一个来自顶面(场景)。
前脸灯:
Top-Face Light:
最终结果(加在一起):
在这里,花瓶上的影子非常不自然。是由于添加了两张图片引起的,我该如何解决?
PS:此演示基于XEffects完成。
答案 0 :(得分:0)
最终颜色color_1 + color_2 + ... + color_n(根据附加属性)更容易饱和,我不认为这是正确的(与现实世界相比)。
这是正确的照明方式,是的,结果会饱和,所以如果使用r,g,b的浮点值,请记得将最终值钳位到最大值为1.0f计算。
此外,应使用
对灯光进行衰减,以使照明贡献减少,具体取决于与灯光的距离float attenuation = 1.0 / (1.0 + k * pow(distanceToLight, 2));
其中' k'是根据您的口味调整的任意衰减因子。