我正在实现延迟渲染器中的全向阴影映射,但是遇到了解决这个问题的困难:
这是一张图片:
当我只是将六个聚光灯沿着每个轴的正负方向指向时,就会出现上图所示的情况。我知道问题是由于聚光灯计算使得光在灯光锥内而导致圆形的。
我的第一个想法是禁用锥体计算,但显然,因为灯光混合在一起,如果你从一个灯光看向另一个灯光,就会有重叠。如果我将灯光渲染的几何形状从锥形改为基于正方形的金字塔(我认为我必须这样做?),那么我将能够使用灯光的截锥体(我已经有了)而不是锥体计算来测试当前像素是否落在截锥体内,对吗?
如果是这样的话,有人知道在像素着色器中实现这个的最佳方法是什么吗?我想过只检查该点是否在截锥体的每个平面前面,但这似乎在像素着色器中执行代价太高。