【问题标题】:Adding sunlight to a scene将阳光添加到场景中
【发布时间】:2014-03-26 13:54:20
【问题描述】:

我正在用 3D 渲染一些交互式场景,我想知道:如何向其中添加阳光?我会尽力解释我现在是如何设置它的。

您现在看到的是定向光(太阳)由黄点表示,我想将其替换为逼真的阳光。

当前绘制顺序为:

  • 对于所有对象:
    • 为阴影进行光深度传递。
  • 然后对于所有对象:
    • 使用光深度纹理为对象本身执行绘制通道。

我应该在哪里添加逼真的阳光?不过我有一些想法:

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

您将如何处理渲染代表真实太阳的漂亮阳光?

【问题讨论】:

  • 如果您添加一些环境光,您将获得更逼真的外观。除此之外,您还能做什么,取决于您的场景。例如。对于房间场景,您可以在窗户中添加小灯。然后还有更高级的技术,例如环境光遮蔽、光能传递、路径跟踪……并非所有这些都适合渲染。顺便说一句,照明质量很大程度上取决于法线。您的法线不适合模型。这是使其不切实际的另一个因素。
  • 不知道。不是来自我。也许是因为这个问题非常广泛且不具体。

标签: opengl graphics 3d lighting


【解决方案1】:

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

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

另一种可能在物理上不准确但给出“漂亮”效果的技术是Ambient Occlusion

环境光遮蔽用于表示场景中每个点暴露在环境光下的程度。因此,管的封闭内部通常比暴露的外表面更封闭(因此更暗);管子内部越深,它变得越封闭(越暗)。

【讨论】:

    猜你喜欢
    • 2019-06-21
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2020-09-05
    • 2014-04-12
    • 2015-04-17
    • 2020-01-10
    • 2011-12-03
    相关资源
    最近更新 更多