opengl - 许多光源的阴影贴图 - 速度慢吗?

标签 opengl shadow-mapping deferred-rendering

我已经达到了为单个光源实现延迟渲染和阴影贴图的程度。我本来期待添加更多光源来看看延迟渲染如何提高性能,但我意识到这次阴影贴图几乎毁了它。

这是可以预料到的吗?当有很多光源时我应该使用另一种阴影算法吗?

我所做的是从每个灯光的角度创建一个立方体贴图。然后,当在延迟渲染着色器中渲染片段时,我会考虑每个灯光对该片段的贡献程度,这意味着片段可以看到哪些灯光。因此,这只是对片段是否处于光源阴影中的正常检查。

最佳答案

一般来说,阴影不能很好地随灯光数量变化。一两个阴影转换灯是可以容忍的,但超过这个数量就会严重影响你的表现。几乎所有通用照明机制都是如此(也许基于光线追踪的阴影除外)。

延迟渲染不会改变这一点的数学原理。您仍然必须从每个阴影光源的角度渲染场景,并且您的照明 channel 仍然必须从这些纹理中获取来进行阴影。

典型的解决方案是限制主光源和辅助光源的阴影转换灯的数量。也许。其他一切都不会转换阴影。

关于opengl - 许多光源的阴影贴图 - 速度慢吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53932811/

相关文章:

c++ - libGL 确实存在,但链接器无法找到它 - Qt 4.8.7、CentOS 7.5

python - 如何使用 glXChooseFBConfig 和 ctypes 模块初始化 OpenGL?

c - Material 着色不起作用

c++ - 使用 OpenGL 比较两个图像

c++ - 稳定的阴影贴图

c++ - 稳定级联阴影映射中的光 View 矩阵

c++ - OpenGL 延迟渲染不工作

opengl - 无法创建具有超过 8 个渲染缓冲区的 FBO

opengl - 具有延迟渲染的阴影贴图