Bloom(辉光)是游戏开发中最常用的后处理效果之一。它模拟了摄像机镜头或人类眼睛在直视强光时的光学散射现象,让原本只是“亮白色”的像素点看起来真的在向外“发光”。
1. Bloom 的核心原理
Bloom 的实现过程可以简单理解为“提取—模糊—叠加”三个步骤:
1.1 亮度提取 (Thresholding)
程序会检查屏幕上所有像素的亮度。只有超过特定阈值(Threshold)的像素才会被提取出来。
- 非 HDR 模式: 亮度范围是 0 到 1。
- HDR 模式(推荐): 亮度可以远超 1。这能更精准地识别太阳、激光或爆炸等真实高亮区域,而不至于让白色的墙壁也跟着发光。
1.2 降采样与模糊 (Downsampling & Blurring)
为了让光晕看起来柔和且覆盖范围广,我们需要对提取出的高亮部分进行模糊。 - 降采样: 为了性能和模糊范围,通常会将图片缩小几倍。
- 多级模糊: 现代做法(如 Unity URP)通常采用 高斯模糊 (Gaussian Blur) 或 双重滤波 (Dual Filtering)。它会生成一系列不同分辨率的模糊层(金字塔结构),从小到大层层叠加,从而产生从核心到边缘平滑过渡的光晕。
1.3 混合 (Composition)
将处理后的模糊光晕图片,以“加色(Additive)”或“屏幕(Screen)”的方式叠加回原始的场景画面上。
2. 在 Unity URP 中实现 Bloom
在 URP 中,Bloom 已经集成在 Volume 系统中,不需要自己写 Shader,只需几个配置步骤:
第一步:开启后处理功能
-
在 URP Asset 中: 找到你正在使用的 Universal Render Pipeline Asset,确保 HDR 已勾选(非常重要,否则效果很死板)。
HDR -
在 Camera 上: 选中主摄像机,在 Inspector 面板中勾选 Post Processing 开关。
Post Processing
第二步:创建 Volume
- 在 Hierarchy 窗口右键:Volume > Global Volume。
- 在 Volume 组件中,点击 New 创建一个新的 Profile。
-
点击 Add Override > Post-processing > Bloom。
Bloom
夸张效果
第三步:参数调优
开启 Bloom 后,你会看到以下核心参数:
| 参数 | 说明 | 建议 |
|---|---|---|
| Threshold | 阈值。亮度超过多少才开始发光。 | 若开启了 HDR,建议设为 1.0 左右。 |
| Intensity | 强度。光晕的整体亮度。 | 建议根据氛围微调,不宜过高。 |
| Scatter | 扩散。控制光晕向外发散的距离。 | 值越高,光晕越朦胧。 |
| Tint | 色调。给光晕染上一层颜色。 | 可用于营造夕阳(橙色)或科技感(蓝色)。 |
| Dirt Mask | 污渍贴图。模拟镜头上的灰尘。 | 增加真实感的神器。 |
3. 进阶技巧:如何让太阳效果更自然?
- 配合 HDR 材质: 不要单纯通过提高 Bloom 的 Intensity 来增加亮度。你应该在材质的 Base Map 颜色拾取器中,将 Intensity 调高(例如 +2.0),这样只有这个物体会爆亮,而其他物体保持正常。
- 使用 Lens Flares(镜头光晕): Bloom 解决的是“晕”,而太阳通常还需要“芒”。URP 现在有专门的 Lens Flare (SRP) 组件,可以模拟光线进入镜头的折射。
- 抗锯齿 (Anti-aliasing): 开启 TAA(时域抗锯齿)可以有效减少高亮像素在移动时的闪烁(Fireflies)。
避坑指南: > 如果你发现屏幕变得雾蒙蒙的,通常是因为 Threshold 设得太低,导致中等亮度的区域也参与了发光。尝试调高 Threshold,只让最亮的点闪耀。



