许多光源的阴影映射 - 速度慢吗?

Shadow mapping for many light sources - is it slow?

我已经达到了为单个光源实现延迟渲染和阴影映射的地步。我期待添加更多光源以了解延迟渲染如何提高性能,但我意识到这次阴影贴图几乎毁掉了它。

这是意料之中的事吗?当有很多光源时,我应该使用另一种阴影算法吗?

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

一般来说,阴影与灯光的数量关系不大。可以容忍一两个阴影投射灯,但超过这个数量会严重影响您的性能。几乎所有通用照明机制都是如此(可能 基于光线追踪的阴影除外)。

延迟渲染不会改变这方面的数学。您仍然需要从每个阴影光源的角度渲染场景,并且您的照明通道仍然需要从这些纹理中获取以进行阴影处理。

典型的解决方案是将阴影投射灯的数量限制为主要光源,也许 次要光源。其他一切都不会投射阴影。