全方位阴影贴图射灯

时间:2012-11-30 12:37:29

标签: opengl graphics directx hlsl shadow-mapping

我在延迟渲染器中实现了全向阴影贴图,但在解决此问题时遇到了问题:

这是一张图片:shadow problem example

当我只是沿着每个轴指向正方向和负方向的六个聚光灯时,就会发生这种情况。我知道这个问题是由聚光灯计算引起的,它保持了光锥的照明,这就是为什么它是圆形的。

我的第一个想法是禁用锥形计算,但显然是因为如果你通过一个光线看到另一个光线会混合在一起会将光线混合在一起。如果我将光线渲染的几何体从圆锥形状更改为基于正方形的金字塔(我想我还需要做什么?)然后我就可以使用光锥体(我已经拥有)代替一个锥形计算来测试当前像素是否落在平截头体内,对吧?

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

1 个答案:

答案 0 :(得分:0)

你有6个截头,但请注意

  1. 你不需要检查背面或正面,只是它是否在无限金字塔中
  2. 每张脸由两个相邻的平截头体共享
  3. 每张脸都被面向后方的平截头体镜像
  4. 这意味着您只需要检查6个平面的像素IN TOTAL,以查看您需要访问的阴影贴图。