渲染具有不同类型的N个灯的数量的场景

时间:2013-11-28 10:44:56

标签: opengl

如果我需要用场景绘制N个灯光的数量,灯光类型可能是点/点/方向或天光,每个灯光投射阴影,渲染它使用 opengl es 2.0

一次通过是不够的,所以我听到了多次通过照明,但我不知道如何实现它。

我现在的想法是:按照类型对灯光进行分组,然后循环每个组并将场景渲染为RT,最终混合(使用添加混合或乘法?)所有RT到颜色缓冲区。但我认为颜色缓冲区中的RGB值会溢出。

所以,我不知道怎么做,不能暗示着色,没有光预传,没有浮动纹理没有HDR .......

1 个答案:

答案 0 :(得分:0)

对于多次通过照明,您可能需要使用添加乘法混合的组合。这是因为对于每个灯光,您希望累积漫反射和镜面反射术语,然后在最后,您将累积的灯光乘以基础材质属性。

你是绝对正确的,在大多数情况下,除非你非常小心你的灯光,计算出的漫反射值在某些时候会超过 1.0 。它不会溢出本身,因为它是浮点数,但它会 钳制 1.0 在将其写入颜色缓冲区之前。

如果没有HDR,最好的办法是改变衰减系数,使光线更快地衰减。这样可以将超亮区域的大小缩小到非常接近光源的效果,效果将类似于非HDR镜面高光(小块褪色)。