后处理管线
2026/7/26大约 4 分钟
后处理管线 (Post-Processing) - 全屏效果与画面增强
引言:后处理是什么
主渲染得到的是一张(通常是 HDR 的)图像;后处理把它当作输入,用一连串全屏 Pass 施加效果(Bloom、色调映射、DOF、颜色分级…),最终产出呈现给屏幕的图像。
- 每个效果通常是一个或几个全屏 Pass(对屏幕纹理采样计算),开销与几何无关、与分辨率相关。
- 顺序至关重要 —— 尤其色调映射(HDR→LDR)前后,效果表现完全不同。
一、典型后处理链与顺序
关键顺序原则:
- Bloom 在色调映射之前(需在 HDR 线性空间提取高亮)。
- 色调映射把 HDR 压到 LDR,是分水岭。
- 颜色分级通常在色调映射之后(对 LDR 调色,或用 LUT)。
- TAA 通常更靠前(在主渲染阶段解析);FXAA 等纯后处理 AA 靠后。
- UI 在后处理之后叠加,避免被模糊/调色污染。
二、Bloom(泛光)
模拟强光在镜头/眼睛中的光晕溢出。
- 必须在 HDR 空间做:只有 HDR 才能区分"很亮"(>1)的区域,产生自然溢出。
- 多级降采样 + 模糊是为了高效获得大范围柔和光晕。
三、色调映射(Tonemapping)
把 HDR(可能远大于 1)的亮度压缩映射到 LDR [0,1],同时尽量保留细节与观感。是后处理链的核心分水岭。
下图对比几种常见色调映射曲线:

| 算子 | 特点 |
|---|---|
| Clamp(无映射) | 直接截断到 1,高光死白、丢细节 |
| Reinhard | x/(1+x),简单,但整体偏灰、对比不足 |
| ACES(Filmic) | 电影级 S 曲线,暗部/高光过渡自然、对比好,业界主流 |
| Uncharted2 / 其它 Filmic | 可调的电影感曲线 |
四、景深(DOF)与运动模糊
| 效果 | 原理 | 要点 |
|---|---|---|
| 景深 DOF | 模拟镜头焦平面:焦内清晰、焦外模糊;按深度计算模糊半径(CoC 弥散圆),分近/远场处理 | 需深度缓冲;边界处理避免漏色 |
| 运动模糊 Motion Blur | 沿运动向量方向采样模糊,模拟快门期间的运动 | 需运动向量(与 TAA 共享);分相机运动/物体运动 |
两者通常放在色调映射之前(在 HDR/线性空间做更正确)。
五、颜色分级(Color Grading)
对图像做艺术化调色:曝光、白平衡、对比度、饱和度、色相、Lift/Gamma/Gain 等。
- 常用 LUT(颜色查找表) 实现:把调色离线烘焙成一张 3D LUT,运行时查表 —— 高效且美术可控。
- 一般在色调映射之后对 LDR 调色(或在 log 空间做,取决于管线)。
六、性能与实践
- 后处理是填充率/带宽大户(全屏多 Pass、多次采样),是 GPU 侧常见性能热点。
- 优化:
- Bloom/DOF 等降分辨率处理(半分辨率模糊再上采样)。
- 合并 Pass:把色调映射 + 颜色分级 + AA 等合进 uber 后处理 Pass,减少全屏读写。
- 移动端尤其注意带宽:每个全屏 Pass 都读写整帧,TBR 上代价明显;能合就合、能降分辨率就降。
- 顺序错误是常见 bug:如把 Bloom 放到色调映射后 → 光晕不自然;UI 放到调色前 → UI 被染色。
附:核心概念速查
| 概念 | 说明 |
|---|---|
| 后处理链 | 主渲染后的一系列全屏效果 Pass |
| Bloom | HDR 空间提取高亮 + 多级模糊,模拟光溢出 |
| 色调映射 | HDR→LDR 压缩,ACES 为主流 |
| DOF | 景深,按 CoC 弥散圆按深度模糊 |
| Motion Blur | 沿运动向量模糊 |
| 颜色分级 / LUT | 艺术调色,常用 3D LUT 查表 |
| 顺序原则 | Bloom→色调映射→颜色分级→后处理 AA→UI |
总结
- 后处理链是主渲染完成后在最终图像上施加的一系列全屏效果 Pass,开销与分辨率相关。
- 标准顺序:Bloom(HDR 空间)→ 色调映射(HDR→LDR 分水岭)→ 颜色分级 → 后处理 AA → UI 叠加。
- Bloom 必须在 HDR 空间提取高亮并做多级模糊,以模拟自然光晕。
- 色调映射将 HDR 亮度压缩至 LDR [0,1],ACES 是业界主流算子。
- DOF 和运动模糊在色调映射前的线性空间处理更为正确。
- 颜色分级常用 3D LUT 查表实现,通常在色调映射之后进行。
- 优化方向:降分辨率处理、合并 Pass 减少全屏读写、移动端注意带宽。
