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