3

我在延迟渲染器中实现全向阴影映射,但无法解决这个问题:

这是一张图片:阴影问题示例

这就是当我将六个聚光灯沿正负方向指向每个轴时发生的。我知道这个问题是由聚光灯计算引起的,将灯光保持在锥体中,这就是为什么它是圆形的。

我的第一个想法是禁用锥体计算,但显然因为如果你通过一个灯看到另一个灯会混合在一起,就会有重叠。如果我将要为灯光渲染的几何形状从锥形更改为基于方形的金字塔(我认为我无论如何都需要这样做?)然后我将能够使用灯光的平截头体(我已经拥有)锥体计算来测试当前像素是否落在截锥体内,对吗?

如果是这样,有人知道在像素着色器中执行此操作的最佳方法是什么吗?我只想检查该点是否位于平截头体的每个平面的前面,但这在像素着色器中似乎很昂贵。

4

1 回答 1

0

你有 6 个平截头体,但请注意

  1. 你不需要检查背面或正面,只需检查它是否在无限金字塔中
  2. 每个面由两个相邻的平截头体共享
  3. 每张脸都由朝后的平截头体镜像

这意味着您只需对照 6 个平面检查像素,即可查看需要访问的阴影贴图。

于 2012-12-05T20:42:53.637 回答