2

我正在尝试实现平铺延迟渲染方法,现在我被卡住了。我正在计算每个图块(32x32)的最小/最大深度并将其存储在纹理中。然后我想为我的场景中的每个点光源(球体)计算屏幕空间边界框(边界正方形),由矩形的左下角和右上角坐标表示(参见我的应用程序中的图片)。这与最小/最大深度一起用于检查光线是否影响实际瓷砖。

问题是我不知道该怎么做。任何想法,源代码或精确的数学?

光的边界框,渲染的光量

更新 我猜你的想法

我的尝试

4

1 回答 1

3

屏幕空间基本上是一个 2D 实体,因此不要考虑边界框,而是考虑边界矩形。

这是一个简单的计算方法:

  1. 使用 ModelViewProjection 矩阵将世界空间边界框的 8 个角点投影到屏幕上
  2. 找到这些点的边界矩形(这只是点的最小/最大 X 和 Y 坐标)

可以使用更复杂的方法来计算点光源的屏幕空间边界矩形。我们计算了四个通过相机位置并与光的照明球面相切的平面(光半径)。每个切平面与图像平面的交点在图像平面上给出了 4 条线。这条线定义了生成的边界矩形。

有关数学详细信息,请参阅本文:http ://www.altdevblogaday.com/2012/03/01/getting-the-projected-extent-of-a-sphere-to-the-near-plane/

于 2014-02-17T13:56:17.417 回答