我正在尝试实现平铺延迟渲染方法,现在我被卡住了。我正在计算每个图块(32x32)的最小/最大深度并将其存储在纹理中。然后我想为我的场景中的每个点光源(球体)计算屏幕空间边界框(边界正方形),由矩形的左下角和右上角坐标表示(参见我的应用程序中的图片)。这与最小/最大深度一起用于检查光线是否影响实际瓷砖。
问题是我不知道该怎么做。任何想法,源代码或精确的数学?
更新
我正在尝试实现平铺延迟渲染方法,现在我被卡住了。我正在计算每个图块(32x32)的最小/最大深度并将其存储在纹理中。然后我想为我的场景中的每个点光源(球体)计算屏幕空间边界框(边界正方形),由矩形的左下角和右上角坐标表示(参见我的应用程序中的图片)。这与最小/最大深度一起用于检查光线是否影响实际瓷砖。
问题是我不知道该怎么做。任何想法,源代码或精确的数学?
更新
屏幕空间基本上是一个 2D 实体,因此不要考虑边界框,而是考虑边界矩形。
这是一个简单的计算方法:
可以使用更复杂的方法来计算点光源的屏幕空间边界矩形。我们计算了四个通过相机位置并与光的照明球面相切的平面(光半径)。每个切平面与图像平面的交点在图像平面上给出了 4 条线。这条线定义了生成的边界矩形。
有关数学详细信息,请参阅本文:http ://www.altdevblogaday.com/2012/03/01/getting-the-projected-extent-of-a-sphere-to-the-near-plane/