将阳光添加到场景中

时间:2014-03-09 12:35:59

标签: opengl graphics 3d lighting

我正在以3D渲染一些互动场景,我想知道:如何为它添加阳光?我会尝试解释现在最好的设置方法。

scene

你现在看到的是定向光(太阳)用黄点表示,我想用真实的阳光代替。

目前的绘图顺序是:

  • 对于所有对象:
    • 为阴影做一个浅景深。
  • 然后是所有对象:
    • 使用光线深度纹理对对象本身进行绘制传递。

我会在哪里添加逼真的阳光?我对此有一些想法:

  • 在当前绘制顺序之后,将输出保存到纹理中,并使用着色器获取纹理并在其上添加阳光。
  • 在当前绘图顺序之后,使用着色器将阳光简单地添加到目前为止所绘制的内容,以便在屏幕上的所有内容之后绘制它。
  • 或者在场景的其余部分被绘制之前画出阳光?

你如何处理渲染代表真实生命太阳的美好阳光?

1 个答案:

答案 0 :(得分:1)

要逼真地模拟阳光,您可能需要实现某种形式的global illumination。我们在物体上看到的许多照明不是直接来自光源,而是来自其他物体反射的光线。全局照明模拟反射光。

  

[全局照明]不仅考虑直接来自光源的光(直接照明),还考虑来自同一光源的光线被场景中的其他表面反射的后续情况,是否反射(间接照明)。

另一种技术可能不是物理上准确的,但是给出了很好的"查看结果为Ambient Occlusion

  

环境遮挡用于表示场景中每个点暴露于环境光照的方式。因此,封闭的管内部通常比暴露的外表面更封闭(因此更暗);在管内更深处,它变得越多(越暗)。