【问题标题】:Implementing Ambient lighting in a deferred Renderer?在延迟渲染器中实现环境照明?
【发布时间】:2015-12-08 00:58:36
【问题描述】:

我最近在我的引擎中添加了延迟着色,并遇到了一种称为“光体积”的技术。虽然它很棒,因为它将光照计算减少到最低限度(仅执行光照体积中的片段),但我无法弄清楚如何使用环境光照渲染场景的其余部分!

我得到以下场景没有环境照明:(光量已以灰色突出显示)

当然,我总是可以渲染一个全屏四边形,但我会失去这种技术的好处。

有什么建议吗?

编辑:感谢尼科尔,我终于让它工作了:)这是一张新照片:

【问题讨论】:

  • Nicol 的回答是正确的,但也许您可以详细说明为什么您认为对每个像素的迭代会扼杀环境光源延迟渲染的好处?您仍然只考虑那些实际出现在屏幕上的像素,而不是任何随后被覆盖的中间结果,就像您在原始渲染器中所做的那样。
  • 我实际上的意思是,将点光源渲染为全屏四边形是在浪费性能......因为你不需要穿过没有被灯光照亮的部分!

标签: opengl


【解决方案1】:

您在单独的通道中进行环境照明。就像使用延迟渲染的一般灯光一样。这是一般的想法,每个光都发生在它自己的通道中,你通过与它们进行加法混合将结果累积到帧缓冲区中。

环境光被简单地视为另一个光源。

【讨论】:

  • 是的,我试过这样做,但有一个问题:首先我用环境光渲染了整个场景,然后渲染了点光源:你实际上得到了这个:stackoverflow.com/questions/34121885/…
  • 在渲染点光源时,实际上是在顶部添加了光​​照,所以你可以看到光体边缘和场景其余部分的区别!
  • @Coder32:是的,但这不是你上面的问题。您上面的问题是您没有进行第二次环境通过。如果这样做,那么您将获得环境照明。点光源+光量效果不是您想要的问题是一个单独的问题,您显然已经问过了。
  • 还有一件事:你对如何处理光衰减中的那些“那种”圆圈有什么建议:让衰减更平滑? (您可以通过放大在图 2 中看到它)
猜你喜欢
  • 1970-01-01
  • 2015-04-14
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 2022-01-28
相关资源
最近更新 更多