多次下采样有好处吗?


14

所以我遇到了这个站点,您可以在第一和第二段中看到以下几行:

为了获得粗略而简单的效果,请将场景的明亮部分(例如光源)绘制到FBO中,然后使用GL_LINEAR缩小几次对其进行下采样。对于最终渲染,只需将原始场景与降采样的FBO结合即可。

在下面的示例中,原始场景为128 x 128,并被下采样3次。这需要4个framebuffer对象。原始场景显示在左上方,最终渲染显示在右上方。

有什么原因我应该多次降采样(128-> 64-> 32-> 16)而不是一次降采样(128-> 16)?

如果您向下滚动更多,他们甚至将其下采样9次。(128-> ...-> 16-> 128-> ...-> 16->依此类推)。为什么不这样做(128-> 16-> 128-> 16->等等)?


真正荒谬的方法。只需模糊缓冲区并使用进行下采样GL_NEAREST
晶体管

Answers:


23

有两个主要好处:

首先,如果您将下采样率放大两倍以上,则原始图像中的某些像素将不会对结果图像产生影响。使用GL_LINEAR,每个目标像素将仅从源图像的最多4个像素中采样;其他像素只是被丢弃。通过以两倍的倍数进行下采样,可以确保源图像中的每个像素对下一层的效果均相同。

其次,在该站点上讨论的算法需要每个帧缓冲区对象;即使没有充分理由以这种方式进行下采样,它们实际上都是必需的。您不能跳过64x64或32x32图像,因为这些图像被用作构造高斯模糊结果图像的一部分。

最后,如果您阅读该文章,您会发现它并没有主张将图像降采样9次;它仅对3个像素进行降采样,然后对这些降采样的图像进行几次操作。您正在查看的图像仅在处理的每个步骤之后显示了这3张降采样图像的状态,没有显示单独的降采样事件。


嗯,这对我来说现在意义非凡。谢谢。
Greffin28 '16

1
(顺便说一句,我在自己的游戏中使用的光晕效果是基于链接页面上描述的方法的。就我个人而言,由于我从一个更大的初始图像开始,但我对图像进行了5倍而不是3倍的采样,但我仍然想要一个不错的,宽广的模糊度。)
特雷弗·鲍威尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.