Unity-后期处理效果之Bloom
- 什么是Bloom
- Bloom属性
什么是Bloom
Bloom是一种游戏常见的一种屏幕效果叫做高光溢出,是一种光学效果,其中来自明亮来源(如闪光)的光表现为泄露到周围对象中。通俗来说就是这种特效可以模拟真实摄像机的一种图像效果,他让画面中较亮的区域"扩散"到周围的区域,造成一种朦胧的效果。高光溢出 (Bloom) 是非常独特的效果,可以使场景截然不同,可能使人想起魔法或梦幻般的环境(尤其是在与HDR渲染结合使用时)。另一方面,在设置正确时,还可以使用此效果增强照片写实性。非常明亮的对象周围的发光是可在电影和摄影中观察到的常见现象(其中亮度值差别极大)。高光溢出 (Bloom) 是较简单但经过优化的快速高光溢出 (FastBloom) 和旧式高光溢出和光晕 (BloomAndFlares) 图像效果的增强版本。
下面是官方文档给出的解释:
The Bloom effect creates fringes of light extending from the borders of bright areas in an image, contributing to the illusion of an extremely bright light overwhelming the Camera.
You can also use Lens Dirt to apply a full-screen layer of smudges or dust to diffract the Bloom effect.
Bloom属性
首先可以通过右键->Volume->Global Volume 创建一个Vloum。没有的可以通过Package Manager下载PostProcessing。
在创建的Global Volume 中会有Volume组件,在Volume组件中的Profile(配置文件)后面点击New,新建一个配置文件,然后点击Add Oberride 就可以添加Bloom属性了。
可以看到Bloom上有很多属性,默认是不启用的,如果想使用这些属性要把他勾选上。
属性 | 说明 |
Threshold(阀值) | 如果场景中物体的亮度超过这个阀值才会发生高光溢出 |
Intensity(强度) | 发生高光溢出的强度 |
Scatter(散射) | 表示泛光区域和非泛光区域的过渡,最小值0表示没有过渡最大值1表示最缓慢的过渡效果 |
Tint(色彩) | 表示高光溢出的颜色 |
Clamp(限定) | 与Threshold相对应,限定泛光效果的最大衍射值 |
High Quality Filtering(高质量) | 提高画质 |
下面是官方文档给出的解释:
Property | Function |
Intensity | Set the strength of the Bloom filter. |
Threshold | Set the level of brightness to filter out pixels under this level. This value is expressed in gamma-space. |
Soft Knee | Set the gradual threshold for transitions between under/over-threshold (0 = hard threshold, 1 = soft threshold). |
Clamp | Set the value for clamping pixels to control the Bloom amount. This value is expressed in gamma-space. |
Diffusion | Set the extent of veiling effects in a screen resolution-independent fashion. |
Anamorphic Ratio | Set the ratio to scale the Bloom vertically (in range [-1,0]) or horizontally (in range [0,1]). This emulates the effect of an anamorphic lens. |
Color | Select the color of the tint of the Bloom filter. |
Fast Mode | Enable this checkbox to boost performance by lowering the Bloom effect quality. |
Texture | Select a Dirtiness texture to add smudges or dust to the lens |
Intensity | Set the amount of lens dirtiness. |
在此场景中,高光溢出 (Bloom) 使用阈值 1.0,这表示只有 HDR 反射、亮点或放射表面才发光,但是普通光照一般不受影响。在此特定示例中,只有车窗(表现 HDR 太阳光反射值)才发光。
也就是说,在绝大多数情况下,图像的亮度值不会超过1,但是如果我们开启了HDR,硬件会允许我们把颜色值存储在一个更高精度范围的缓冲中,此时像素的亮度值可能会超过1.所以阀值设置为1.0,可以使正常的LDR不受到影响,只有亮度值超过1的HDR会受影响。这是文档中给出的:
Details
With properly exposed HDR scenes, the Threshold should be set to ~1 so that only pixels with values above 1 leak into surrounding objects. Drop this value when working in LDR or the effect won’t be visible.
Bloom的实现原理是根据一个阀值提取出图像中较亮的区域,把他们存储在一张渲染纹理中,再利用高斯模糊对这张渲染纹理进行模糊处理,模拟光线扩散的效果,最后再将其和原图像进行混合,最终得到的效果。