Axıs
技能目录

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

三条省钱铁律

  1. Bloom / DOF / 半透明类效果一律降采样到 1/2 甚至 1/4 分辨率
  2. 合并 pass:把色差+暗角+失真+颗粒合成一个 "Uber Final Pass",而不是 4 个独立效果
  3. 颗粒和 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 丢失"的根因与修法。

  1. 色彩空间链路一致:引擎输出(sRGB/Linear)→ 录制捕获 → 编码标记 → 播放器解读,四者必须统一。
  2. HDR 元数据:HDR 素材必须带 Mastering Display Color Volume 与 Content Light Level 元数据,否则播放器按 SDR 解读 → 发灰。
  3. 色调映射一致性:不要在录制时二次 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 黑边 过场上下加黑边 极低 "电影感"最廉价的手段

截图构图规则(宣发用)

  1. 主体占屏 20–40%,不要太小也不要顶满
  2. 有明确的前景/中景/背景三层
  3. 有一个视觉焦点(最亮或最饱和的区域)
  4. 避免 UI(截图时隐藏 HUD)
  5. 动作在最高潮的那一帧(不是预备帧)
  6. 横向构图遵循三分法,主体在 1/3 线
  7. 有"故事感":玩家看这张图会问"然后呢?"
  8. 展示招牌技术:每张截图都要有你的那一招

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. 自检清单

  1. 后处理栈顺序对吗?合并了吗?预算多少 ms?
  2. 项目是 Linear 色彩空间吗?数据贴图都没勾 sRGB 吗?(导入预设保证)
  3. Tonemapper 选对了吗?(卡通风格别用 ACES)
  4. LUT 有几个?能按情绪插值吗?色彩脚本有吗?
  5. 渲染缩放 + 上采样配了吗?
  6. 抗锯齿方式与风格匹配吗?(像素风就别开 TAA)
  7. 物理步长固定了吗?
  8. 录制参数表有了吗?色彩空间与色彩范围标记对了吗?
  9. Steam 素材规格齐了吗?截图隐藏 UI 了吗?
  10. 截图有构图层级和焦点吗?展示了招牌技术吗?
  11. 画质档位矩阵有了吗?每档真机测过吗?
  12. 移动端 DOF/SSAO 关了吗?

8. 一句话总结

后处理是"画质的放大器",也是"性能的黑洞"。 独立游戏的正确姿势是:LUT + 颗粒 + 半分辨率 Bloom(0.5ms 拿到 80% 的电影感), 把省下的预算全给招牌技术。 而色彩空间标错会让你的游戏在所有平台上看起来"发灰、没精神"——这是最便宜也最致命的错误。