我理解bloom / glow效果背后的想法:我们对纹理进行下采样以使我们的卷积内核保持较小。现在我正在尝试实施它,我不太确定我应该走哪条路。
我的第一个想法是使用glGenerateMipMap
进行下采样。但是,我不能告诉它在4步之后停止。对我来说这是一个黑盒子,据我所知,它可以生成10张图像,从1024 * 768到1 * 1对我的屏幕进行采样。也许这些最后的步骤很便宜,因为一切都已经很小了,但也许它们不是。
我用Google搜索,发现许多人依赖FBO而不是glGenerateMipMap
。我熟悉FBO,因为我使用了延迟照明。我的第二个想法是简单地使用线性采样器将“四边形”渲染为更小的纹理。我会连续四次这样做,每次减半宽度和高度。但是,我发现some people preferred使用自己的片段着色器进行下采样而不是依赖GL_LINEAR
,我想知道为什么;也许它更快?
连续4次快速下采样全屏纹理的方法是什么?保留每个版本?我不需要花哨的边缘保留采样算法,因为无论如何我都要模糊一切。
答案 0 :(得分:2)
我们对纹理进行下采样以使卷积内核保持较小。
或者您只是首先以较小的分辨率渲染bloom / glow图层。这样既可以节省填充率,也不必在之后缩小。
我的第二个想法是简单地将带有线性采样器的“四边形”渲染成更小的纹理。
这不是下采样。它是采样点之间的线性插值,可能会产生伪影。