3

我理解绽放/发光效果背后的想法:我们对纹理进行下采样以保持卷积核较小。现在我正在尝试实施它,我不太确定我应该走哪条路。

我的第一个想法是用来glGenerateMipMap做下采样。但是,我不能告诉它在 4 个步骤之后停止。这对我来说有点像黑匣子,据我所知,它可能会生成 10 张图像来对我的屏幕从 1024*768 到 1*1 进行采样。也许这些最后的步骤很便宜,因为一切都已经很小了,但也许它们不是。

我四处搜索,发现很多人都依赖 FBO 而不是glGenerateMipMap. 我熟悉 FBO,因为我使用延迟照明。我的第二个想法是简单地将带有线性采样器的“四边形”渲染为较小的纹理。我会连续四次这样做,每次将宽度和高度减半。但是,我发现有些人更喜欢使用自己的片段着色器进行下采样而不是依赖GL_LINEAR,我想知道为什么;也许它更快?

有什么方法可以连续 4 次快速对全屏纹理进行下采样,同时保留每个版本?我不需要花哨的边缘保持采样算法,因为无论如何我都会模糊一切。

4

1 回答 1

2

我们对纹理进行下采样以保持我们的卷积核很小。

或者,您只需首先以较小的分辨率渲染绽放/发光层。这可以节省填充率,之后您不必缩小。

我的第二个想法是简单地将带有线性采样器的“四边形”渲染为较小的纹理。

这不是全部下采样。它是采样点之间的线性插值,可能会产生伪影。

于 2013-04-29T12:39:37.483 回答