C# 2D XNA 4.0场景中的镜头光斑

C# 2D XNA 4.0场景中的镜头光斑,c#,xna,2d,flare,C#,Xna,2d,Flare,我正在XNA中创建实时场景,它是仅使用精灵的2D场景(在四边形上渲染,精灵上带有alpha贴图的标准精灵贴图)。我想创建简单的镜头光斑,实际上只是光源周围的遮挡(我不需要相机中心方向来偏移镜头光斑的多个精灵,等等),我基本上只需要计算光源精灵(小星星)的多少像素被渲染,并根据它设置镜头光斑精灵的比例(因此,如果精灵没有来自相关精灵的可见像素,则缩放0) 我知道如何在3D中实现这一点,我通读了这篇文章并测试了一些东西: 我想问一下在2D场景中做这件事的最佳和最便宜的方法是什么(计算每像素精度或类

我正在XNA中创建实时场景,它是仅使用精灵的2D场景(在四边形上渲染,精灵上带有alpha贴图的标准精灵贴图)。我想创建简单的镜头光斑,实际上只是光源周围的遮挡(我不需要相机中心方向来偏移镜头光斑的多个精灵,等等),我基本上只需要计算光源精灵(小星星)的多少像素被渲染,并根据它设置镜头光斑精灵的比例(因此,如果精灵没有来自相关精灵的可见像素,则缩放0)

我知道如何在3D中实现这一点,我通读了这篇文章并测试了一些东西:

我想问一下在2D场景中做这件事的最佳和最便宜的方法是什么(计算每像素精度或类似精度渲染/遮挡的精灵像素数)


我也知道模具缓冲区可能会有帮助,但我不确定如何在这种情况下应用。

好的,有两种方法可以解决它,一种是老式的方法,使用模具计算遮挡像素的数量,并根据它缩放镜头光斑的精灵

其他方法:现代方法,使用屏幕空间镜头光斑,隔离明亮像素(我建议HDR渲染管道,使用高于1.0的亮度值生成镜头光斑,但这取决于场景平均值和最大值),并生成重影,如下所示: