在 glsl 中创建 2d 投影的更快方法?

faster way to create 2d drop shadow in glsl?

我正在尝试使用 glsl 创建 2d 投影滤镜。

我现在正在做的是首先将我的像素渲染成纹理,然后对其应用高斯模糊滤镜,然后将其绘制到具有着色颜色的主帧缓冲区,然后在顶部绘制实际像素。

结果很好,但是性能很低。所以有一种使用 glsl 创建投影的更简单方法,因为阴影不需要实际像素的所有颜色分量,只需要 alpha 值?

如果形状不变,您可以预先计算阴影。如果不是,那只是让你的模糊着色器更高效的问题。网上有很多关于此的信息,例如 Rideout's article (archived) or ivankuckir's article (archived)。

诀窍是尽量减少 Texture2D 调用的数量并使用线性插值等内置功能。

另请参阅Fastest Gaussian blur implementation