07 · 后期处理、影像参数与镜头语言
07 · 后期处理、影像参数与镜头语言
你的游戏在玩家眼里"是什么样子",最后一道关口在这里。 本文件覆盖:后处理栈、色彩管理、影像/视频参数、宣发素材录制、镜头语言。 独立游戏最容易在这里既烧性能又毁色彩——务必按本文件的参数执行。
1. 后处理栈:顺序、预算与取舍
标准顺序(顺序错了会出问题)
1. 抗锯齿 (TAA / FXAA / SMAA) ← 在 HDR 之后、tonemap 之前或之后视引擎而定
2. 深度/法线相关 (DOF / SSAO / SSR) ← 需要深度,越早越好
3. Bloom ← HDR 环境下做
4. 自动曝光 (Eye Adaptation)
5. 色调映射 (Tonemapping) ← 关键点:HDR → LDR 的转换
6. 色彩分级 (Color Grading / LUT) ← 在 LDR 空间做(独立于 tonemap)
7. 镜头效果 (色差 / 暗角 / distortion)
8. 颗粒 / 抖动 (Grain / Dithering) ← 最后,抗色带
9. 上采样 (FSR / DLSS / XeSS) ← 如果用了渲染缩放
10. UI ← 最后叠加,不受后处理影响
预算表(1080p,Low 档总预算 ≤ 1.5ms)
| 效果 | Low | Mid | High | 备注 |
|---|---|---|---|---|
| TAA | 0.4 | 0.4 | 0.4 | 便宜且必要(防闪烁) |
| SSAO | ❌ | 0.8 | 1.0 | 独立游戏常用 AO 烘焙替代 |
| Bloom | 0.3(半分辨率) | 0.5 | 0.8 | 半分辨率做,几乎看不出差别 |
| DOF | ❌ | 0.6(半分辨率) | 1.0 | 独立游戏常可省 |
| Tonemap | ~0 | ~0 | ~0 | 几乎免费 |
| Color Grading(LUT) | 0.1 | 0.1 | 0.1 | 极便宜 |
| 色差/暗角/失真 | 0.2(合并) | 0.3 | 0.4 | 合并到一个 pass |
| 颗粒/抖动 | 0.1 | 0.1 | 0.1 | 极便宜 |
| 合计 | ≈1.1 | ≈2.8 | ≈3.8 |
三条省钱铁律
- Bloom / DOF / 半透明类效果一律降采样到 1/2 甚至 1/4 分辨率
- 合并 pass:把色差+暗角+失真+颗粒合成一个 "Uber Final Pass",而不是 4 个独立效果
- 颗粒和 LUT 是性价比之王:加起来 0.2ms,却是"电影感"的主要来源
2. 色彩管理(独立游戏最常出错的地方)
色彩工作流(必须全链路一致)
创作(sRGB) → 引擎计算(Linear) → 渲染(HDR) → Tonemap → Grading → 输出(sRGB / HDR)
| 环节 | 设置 |
|---|---|
| 项目色彩空间 | Linear(绝不是 Gamma) |
| 颜色贴图(_BC / UI) | sRGB ✅(勾选) |
| 数据贴图(_N / _ORM / _M / _H / LUT) | Linear ❌(不勾 sRGB) |
| 渲染目标 | HDR(R11G11B10F 或 R16G16B16A16F) |
| Tonemap | ACES 或 Neutral |
| 输出 | sRGB(SDR) / PQ 或 HLG(HDR) |
最常见的错:法线贴图勾了 sRGB → 光照全错但没人知道为什么。 把它写进导入预设,永绝后患。
色调映射选择
| Tonemapper | 特点 | 适用 |
|---|---|---|
| ACES | 电影感、高对比、暗部压缩、饱和度略降 | 写实/严肃/电影向 |
| Neutral(Unity 的) | 保留色相,只压高光 | 卡通/风格化首选(不破坏美术定好的颜色) |
| Filmic(旧) | 老式,饱和度高 | 一般不选 |
| Reinhard | 简单,偏灰 | |
| None / Clamp | 硬裁 | 像素风/复古风故意用 |
关键:卡通/手绘风格用 ACES 会把美术精心调的颜色改掉(尤其高饱和处变灰)。 风格化项目优先 Neutral 或自定义,别盲目上 ACES。
LUT(色彩分级)
| 规格 | 建议 |
|---|---|
| 1D LUT | 256×1 或 1024×1;只控制 per-channel 曲线 |
| 3D LUT | 32³ 或 33³;可控制交叉通道(做风格化必备) |
| 格式 | .cube(通用)/ .3DL / 引擎专用 |
| 制作 | 在引擎里用 LookDev 调 → 导出 LUT → 美术在 PS 里再修 → 导回 |
| 数量 | 3–6 个(按章节/情绪),运行时插值 |
| 注意 | LUT 必须在正确的色彩空间烘焙(LDR LUT 在 tonemap 后采样) |
色彩脚本(见 principles/04):不同章节/情绪用不同 LUT,运行时按 blendTime 插值。
3. 影像 / 视频参数(关键配置表)
分辨率与渲染缩放
| 项 | 建议 |
|---|---|
| 内部渲染分辨率 | 原生 100%(High)/ 90–100%(Mid)/ 70–85%(Low) |
| 上采样 | FSR(通用)/ DLSS(NVIDIA)/ XeSS(Intel)/ 引擎内置 TAAU |
| 动态分辨率 | 移动端强烈建议开(目标帧率触发缩放) |
| 分辨率缩放范围 | 50%–100%,不要低于 50%(会糊) |
| 渲染目标格式 | HDR 用 R11G11B10F(省带宽);LDR 用 R8G8B8A8 |
0.8 渲染缩放 + FSR 上采样:在 99% 的屏幕上肉眼几乎无差,却省下 35% 的 GPU 填充。 这是独立游戏性价比最高的性能手段之一。
抗锯齿
| 方式 | 成本 | 画质 | 适用 |
|---|---|---|---|
| FXAA | 极低 | 中(糊) | Low 档 / 移动端 |
| SMAA | 低 | 中高 | 平衡选择 |
| TAA | 中 | 高(但有拖影) | 3D 首选(配合锐化 0.3–0.5) |
| MSAA | 高 | 高(几何边缘) | 前向渲染 + 不需要后处理时 |
| 无 AA | 0 | 锯齿 | 像素风/复古风故意用 |
| TAA + 锐化 | 中 | 高 | 推荐组合 |
TAA 注意:会导致 UI/文字抖动;快速运动有拖影。提供 TAA 强度与锐化两个参数。
帧率与同步
| 项 | 建议 |
|---|---|
| 目标帧率 | 60(PC) / 30(移动端 Low) / 不设上限 + 可选上限(High) |
| VSync | PC 默认开(或提供开关);移动端强制 |
| 可变刷新率 | 支持则开(GSync/FreeSync) |
| 帧率上限选项 | 30 / 60 / 120 / 无限制(给玩家选) |
| 物理步长 | 必须固定(如 1/60),与渲染帧率解耦 |
| 慢动作 | 用 timeScale 缩放,但 UI/输入用 unscaled time |
铁律:所有 gameplay 逻辑用固定时间步长;所有视觉/动画可用 deltaTime。 否则高刷屏玩家会有不同的物理表现。
视频录制参数(宣发素材 / 实机录制)
| 场景 | 分辨率 | 帧率 | 编码器 | 码率 | 容器 |
|---|---|---|---|---|---|
| Steam 商店视频 | 1920×1080(或 2560×1440) | 60(与游戏一致) | H.264(High) | 12–20 Mbps | MP4 |
| 预告片(上传平台) | 1920×1080 起,可 4K | 60 | H.264 / H.265 | 20–45 Mbps(1080p) | MP4 / MOV |
| 社交媒体短片 | 1080×1920(竖)或 1080×1080 | 30–60 | H.264 | 8–12 Mbps | MP4 |
| GIF / 动图 | ≤ 800px 宽 | 24–30 | — | — | GIF / WebP |
| 开发内部记录 | 1280×720 | 30 | H.264 | 5 Mbps | MP4 |
通用录制设置
| 参数 | 值 | 说明 |
|---|---|---|
| 关键帧间隔 | 2 秒(或 1 秒) | 便于平台处理与拖动 |
| Profile | High / Main | |
| 色深 | 8-bit(SDR)/ 10-bit(HDR) | |
| 色彩空间标记 | 必须写对(BT.709 for SDR / BT.2020 + PQ for HDR) | 错标 = 全网发灰 |
| 色彩范围 | Full Range (0–255) vs Limited(16–235) | 必须一致,不一致 = 发灰或过曝 |
| 音频 | AAC 192–320 kbps,48kHz | |
| 扫描方式 | 逐行(Progressive) | 绝不隔行 |
| B 帧 | 2–3 |
HDR 录制 / 导出发灰的三板斧
这是"录屏导出后画面发灰、HDR 丢失"的根因与修法。
- 色彩空间链路一致:引擎输出(sRGB/Linear)→ 录制捕获 → 编码标记 → 播放器解读,四者必须统一。
- HDR 元数据:HDR 素材必须带
Mastering Display Color Volume与Content Light Level元数据,否则播放器按 SDR 解读 → 发灰。 - 色调映射一致性:不要在录制时二次 tonemap(引擎已 tonemap 过就不要再套一层)。
独立游戏最稳的做法:
SDR 交付为主(BT.709 + Full Range + H.264),除非你确定分发渠道支持 HDR。 Steam / B 站 / 微博 对 HDR 支持参差不齐,发灰的风险远大于收益。
Steam 页面素材规格(常用参考)
| 素材 | 规格 |
|---|---|
| 库封面(Library Capsule) | 600×900 |
| 主封面(Main Capsule) | 616×353 |
| 小封面(Small Capsule) | 231×87 |
| 页头图(Header) | 460×215 |
| 页面背景(Page Background) | 1438×810 |
| 截图 | 1920×1080(至少 5 张) |
| 预告片 | 1920×1080,H.264,MP4,≤ 音频 320kbps |
| 客户端图标 | 32×32 / 64×64 |
截图构图规则(见下节镜头语言)
4. 镜头语言(TA 常被忽略但回报极高的领域)
独立游戏买不起"精细的面部动画",但买得起"好的镜头"。 镜头是独立游戏最便宜的叙事工具。
镜头参数表
| 参数 | 常规 | 紧张 | 宏大 | 亲密 |
|---|---|---|---|---|
| FOV | 55–65 | 70–85 | 25–40(长焦压缩) | 40–50 |
| 距离 | 中 | 近 | 远 | 很近 |
| 高度 | 眼高 | 略低 | 高/俯 | 眼高 |
| 运动 | 平滑跟随 | 抖动 | 缓慢推 | 轻微呼吸 |
| 构图 | 三分法 | 失衡 | 对称/中心 | 中心 |
| 景深 | 无 | 无 | 浅(虚化背景) | 浅 |
镜头技巧库(独立游戏适用的低成本招式)
| 招式 | 实现 | 成本 | 效果 |
|---|---|---|---|
| Hitstop + 相机微推 | 命中时相机前推 2–5%,80ms | 极低 | 打击感 ×2 |
| 过肩镜头 | 对话时相机越过肩膀 | 低 | 省掉面部动画 |
| 前景遮挡 | 用前景剪影构图 | 极低 | 电影感 + 藏 LOD |
| 镜头呼吸 | 相机低频小幅位移 | 极低 | 世界"活着" |
| 关键帧运镜 | 过场用曲线运动 | 低 | 叙事感 |
| 速度线/径向模糊 | 冲刺时 | 低 | 速度感 |
| FOV 随速度 | 加速时 FOV +5~10 | 极低 | 速度感(经典手法) |
| 镜头拉伸(拉远显 small) | 见 principles/03 |
极低 | 孤独/宏大 |
| 切换景深焦点 | 引导注意力 | 中 | 叙事引导 |
| Letterbox 黑边 | 过场上下加黑边 | 极低 | "电影感"最廉价的手段 |
截图构图规则(宣发用)
- 主体占屏 20–40%,不要太小也不要顶满
- 有明确的前景/中景/背景三层
- 有一个视觉焦点(最亮或最饱和的区域)
- 避免 UI(截图时隐藏 HUD)
- 动作在最高潮的那一帧(不是预备帧)
- 横向构图遵循三分法,主体在 1/3 线
- 有"故事感":玩家看这张图会问"然后呢?"
- 展示招牌技术:每张截图都要有你的那一招
5. 后期处理的性能陷阱
| 陷阱 | 症状 | 解法 |
|---|---|---|
| 每个效果一个全屏 pass | 后处理 5ms+ | 合并成 Uber Post |
| 全分辨率 Bloom | 带宽爆 | 半分辨率 + mip 链 |
| RT 泄漏 | 内存涨/带宽爆 | 用 using/显式释放;不要每帧新建 RT |
| 用 R16G16B16A16F 做简单调色 | 带宽浪费 | 用 R8G8B8A8 或 R11G11B10F |
| 后处理在 UI 之前 | UI 被糊/被调色 | UI 独立相机或最后叠加 |
| 移动端开 DOF/SSAO | 卡死 | 移动端禁用 |
| TAA 导致 UI 抖 | 文字糊 | UI 单独渲染,不进 TAA |
6. 画质档位矩阵(TA 负责输出这张表)
| 项 | 低 | 中 | 高 | 极致 |
|---|---|---|---|---|
| 渲染缩放 | 0.7 | 0.85 | 1.0 | 1.0 |
| 上采样 | FSR Perf | FSR Qual | 关/TAAU | 关 |
| 抗锯齿 | FXAA | SMAA | TAA | TAA + 锐化 |
| 阴影分辨率 | 512 | 1024 | 2048 | 4096 |
| 阴影距离 | 15m | 30m | 60m | 120m |
| 阴影联级 | 1 | 2 | 3 | 4 |
| SSAO | 关 | 关(用烘焙) | 开 | 开 |
| Bloom | 关 | 半分辨率 | 半分辨率 | 全分辨率 |
| DOF | 关 | 关 | 开 | 开 |
| 粒子倍率 | 0.3 | 0.6 | 1.0 | 1.5 |
| 纹理质量 | 半分辨率 | 全 | 全 | 全 |
| 植被密度 | 0.4 | 0.7 | 1.0 | 1.2 |
| 视距/雾距 | 短 | 中 | 长 | 长 |
| 后处理 | 仅 LUT + 颗粒 | +Bloom | +DOF+SSAO | 全部 |
| 目标帧率 | 30 | 60 | 60 | 120 |
7. 自检清单
- 后处理栈顺序对吗?合并了吗?预算多少 ms?
- 项目是 Linear 色彩空间吗?数据贴图都没勾 sRGB 吗?(导入预设保证)
- Tonemapper 选对了吗?(卡通风格别用 ACES)
- LUT 有几个?能按情绪插值吗?色彩脚本有吗?
- 渲染缩放 + 上采样配了吗?
- 抗锯齿方式与风格匹配吗?(像素风就别开 TAA)
- 物理步长固定了吗?
- 录制参数表有了吗?色彩空间与色彩范围标记对了吗?
- Steam 素材规格齐了吗?截图隐藏 UI 了吗?
- 截图有构图层级和焦点吗?展示了招牌技术吗?
- 画质档位矩阵有了吗?每档真机测过吗?
- 移动端 DOF/SSAO 关了吗?
8. 一句话总结
后处理是"画质的放大器",也是"性能的黑洞"。 独立游戏的正确姿势是:LUT + 颗粒 + 半分辨率 Bloom(0.5ms 拿到 80% 的电影感), 把省下的预算全给招牌技术。 而色彩空间标错会让你的游戏在所有平台上看起来"发灰、没精神"——这是最便宜也最致命的错误。