Bloom 未完成

openGL高级光照部分目录 见 openGL高级光照部分目录

种方法是使其发光;然后光线在光源周围流动。这有效地给观者一种错觉,这些光源或明亮的区域非常明亮。

这种轻微流动或发光效果是通过称为Bloom的后处理效果实现的。Bloom为场景中所有明亮的区域提供类似辉光的效果。下面是带有和不带发光的场景示例(图片由Epic Games提供):

Bloom提供了关于物体亮度的明显视觉线索。当以一种微妙的方式完成时(有些游戏根本无法做到),Bloom会显著提高场景的照明度,并允许产生大量的戏剧性效果。

Bloom与HDR渲染结合使用效果最好。一个常见的误解是HDR和Bloom是一样的,因为许多人可以互换使用这些术语。然而,它们是完全不同的技术,用于不同的目的。可以使用默认的8位精度帧缓冲区实现Bloom,就像使用HDR而不使用Bloom效果一样。很简单,HDR使Bloom更有效地实现(我们稍后将看到)。

为了实现Bloom,我们像往常一样渲染一个照亮的场景,并提取场景的HDR颜色缓冲区和一个只有明亮区域可见的场景图像。然后对提取的亮度图像进行模糊处理,并将结果添加到原始的HDR场景图像之上。

让我们一步一步地演示这个过程。我们渲染一个充满4个明亮光源的场景,可视化为彩色立方体。彩色灯光立方体的亮度值介于1.5和15.0之间。如果要将其渲染到HDR颜色缓冲区,场景如下所示:

我们使用这个HDR颜色缓冲纹理,提取所有超过一定亮度的片段。这给了我们一个图像,当碎片强度超过某个阈值时,只显示亮颜色区域:

然后我们采取这个阈值亮度纹理和模糊的结果。bloom效应的强度很大程度上取决于所使用的模糊过滤器的范围和强度。

产生的模糊纹理是我们用来获得发光或光流动效果的。该模糊纹理将添加到原始HDR场景纹理的顶部。由于“模糊过滤器”(blur filter)使亮区域在宽度和高度上都得到了扩展,因此场景中的明亮区域似乎会发光或流光(Bleed light)。

Bloom本身并不是一个复杂的技术,但很难做到完全正确。它的大部分视觉质量是由用于模糊提取的亮度区域的模糊过滤器的质量和类型决定的。简单的调整模糊过滤器可以彻底改变布卢姆效果的质量。

遵循这些步骤,我们可以得到Bloom的后处理效果。下一张图简要总结了实施Bloom所需的步骤:

第一步需要我们根据某个阈值提取场景的所有明亮颜色。让我们先深入研究一下。

//待续

猜你喜欢

转载自blog.csdn.net/tiao_god/article/details/107326205