延迟着色中的多个阴影贴图

时间:2018-05-15 15:01:14

标签: opengl 3d deferred-rendering

我对在延迟着色中使用多个阴影贴有疑问。我在前向着色中实现了一个阴影贴图。 在前向渲染中,在每个对象的顶点着色器中,我计算了它在光照空间中的位置,并将其与片段着色器中的阴影贴图进行比较。我可以看到使用多个投影矩阵数组和一组阴影贴图作为制服。

在延迟阴影的情况下,我想知道什么是常见的做法。我看到的方式有几个选择:

  1. 在延迟着色中,对于每个像素,我计算它在每个光照空间中的位置,并将其与相应的光照贴图进行比较。 (那样我对每个片段和每个可能太昂贵的矩阵进行计算?)

  2. 在正向渲染中,我计算每个投影中每个顶点的位置,每个位置都有一个G缓冲区输出。然后我在延迟着色中进行比较。 (这样我每个顶点只计算一次位置,而不是每个像素计算一次,但我有一个阴影贴图和每个阴影的光照空间位置似乎不是最理想的)

  3. 有点像2.但我在前向渲染中进行验证。这样我可以存储许多布尔值,如果它在光线中或不在一个int纹理中的每个阴影。问题是我不能那样做软阴影。

  4. 也许更好的东西?

  5. 要合成:1需要多个矩阵乘法,但易于实现。 2需要很少的矩阵乘法但很多纹理和输出(受图形卡限制)。而且每个像素需要很少的输出和很少的计算。但我不能'得到柔和的阴影,因为结果是一个布尔数组。

    我并不是为了更好的表现,而是为了学习新的东西。我愿意接受建议。也许我误会了什么。有标准的方法吗?

0 个答案:

没有答案