GPU 剖析
自动关联目录:GPU 剖析
1. 定位
GPU 剖析的目标是"定位到具体哪个 Pass"。到 Pass 之前的所有数字都只是线索,不是结论。
一句话定位:GPU 时间不可信的情况比你想的多(异步计算、CPU-bound、抓帧干扰),所以这一篇的第一节是"怎么得到可信的数字"。
2. 先拿到可信的数字
| 干扰 | 处理 |
|---|---|
| 异步计算 | r.RDG.AsyncCompute 0(仅用于分析,发布版绝不能关,见 RDG 渲染图) |
| CPU-bound | CPU-bound 时 stat gpu 不可靠,用 profilegpu 或平台工具 |
| 开着可视化 | 关掉所有 Show > Visualize(见 渲染调试与抓帧) |
| 抓帧工具拖慢 | 固定帧率(DumpGPU 的 FixedTickRate) |
3. 工具分层
| 层 | 工具 | 看什么 |
|---|---|---|
| 快速 | stat gpu | GPU 各分类耗时 |
| 抓一帧 | profilegpu | 按 Pass 列出耗时 |
| 中间资源 | DumpGPU | 每个 RT 的内容(见 渲染调试与抓帧) |
| 图形 API 级 | RenderDoc / PIX / AGI / Xcode | 最细,看实际调用 |
| 图结构 | RDG Insights | 并行区间、异步计算重叠 |
平台工具(详见 UE性能优化工具 的 GPU 章节):Adreno GPU、Mali GPU(G77 Counters)、Android GPU Inspector (AGI)、Metal GPU 等。
4. GPU 时间的常见归因
| Pass 类别 | 对应排查方向 |
|---|---|
| Shadow Depths | 见 虚拟阴影贴图:页数与缓存作废 |
| Shadow Projection | VSM 篇:SMRT 采样数 |
| Lumen | Lumen:Final Gather / Scene 质量 |
| Nanite | Nanite:簇与材质 |
| TSR | TSR:历史分辨率与 feed |
| BasePass | 材质指令数、draw call |
| Translucency | 半透明与排序:overdraw |
| PostProcessing | 后处理与体积:pass 数量与运行分辨率 |
先按 Pass 归类,再进对应特性篇——本分支只负责"定位到 Pass"。
5. 常见瓶颈与优先手段
| 瓶颈 | 优先手段 |
|---|---|
| 填充率 / 带宽 | 降分辨率、砍全屏 pass、降 RT 精度 |
| 材质指令数 | 简化材质(Shader Complexity 视图) |
| overdraw | Quad Overdraw 视图;减少大面积半透明 |
| draw call | 实例化、合并、Nanite |
| 三角形 | 通常不是瓶颈,除非极端 |
| 阴影 | VSM 篇 |
| 时域超分 | TSR 篇 |
移动端的第一瓶颈几乎总是带宽(见 移动端渲染)。
6. 代价与权衡
| 手段 | 收益 | 代价 | 注意 |
|---|---|---|---|
profilegpu | 精确到 Pass | 抓帧期间慢 | 代表抓的那一帧 |
| RenderDoc / PIX | 最细 | 学习成本、抓帧慢 | 开发机用 |
r.RDG.AsyncCompute 0 | 计时可信 | 不代表真实发布性能 | 仅分析用 |
| DumpGPU | 看中间资源 | 数据量大 | 用 Stream=1 与 Root 过滤 |
| 可视化视图 | 直观 | 有成本 | profile 前关掉 |
7. 踩坑与排查
| 坑 | 现象 | 怎么验证 |
|---|---|---|
信了 CPU-bound 时的 stat gpu | 归因错误 | 用 profilegpu 或平台工具 |
| 没关异步计算 | 计时忽高忽低 | r.RDG.AsyncCompute 0 再测 |
| 开着可视化测 | 偏高 | 关掉 |
| 只测一个视角 | 结论片面 | 固定多点位/回放 |
| 只看总 GPU 时间 | 不知道改哪 | 必须拆到 Pass |
| 编辑器测 | 与打包不同 | 测打包版本 |
| 移动端在桌面工具上测 | 结论不适用 | 用 AGI / Xcode |
8. 排查顺序
1. stat unit 确认 GPU 高
2. 关可视化 + r.RDG.AsyncCompute 0
3. profilegpu → 定位最贵 Pass
4. 按 Pass 类别进对应特性篇
5. 需要看中间资源 → DumpGPU
6. 需要 API 级 → RenderDoc / PIX / AGI
7. 改完复测(同点位、同画质档)参考
许可协议:CC BY
作者:Davids
本文链接:https://hustjjd.github.io/01d9ef35.html
更新于:2026年10月10日