GPU 时间分析:stat gpu 与可视化
GPU 瓶颈的定位和 CPU 完全不同:靠的是把渲染管线拆开看。
stat gpu:管线段的 Stop Watch
它按渲染的阶段报告时间(示意):
InitViews: 0.8ms
ShadowDepths: 1.6ms
BasePass: 1.2ms
Translucency: 1.8ms ← 半透明很贵
PostProcessing: 0.9ms
阅读方法:找最粗的那段。半透明(Translucency)通常是特效重项目的第一名——这个数字直接对应第 4 章要讲的 overdraw 优化。
GPU Visualizer(GPU 可视化器)
控制台 profilegpu 打开 GPU Visualizer,它把每帧的 GPU 工作画成层级条形图:
- 每条代表一个 Pass,长度是耗时,父子关系是管线结构;
- 点击展开能看材质 / 特效维度的细分。
这是回答"GPU 时间花在哪"最直接的工具。看到"某个全屏后处理 Pass 占 3ms"时,你才会理解为什么画质选项里"泛光"是第一刀。
热点模式
| GPU 热点 | 典型原因 | 对应优化 |
|---|---|---|
| ShadowDepths 高 | 阴影级联多、光源多 | 降阴影距离 / 换级联数 |
| Translucency 高 | 半透明特效 / 烟雾堆叠 | 见渲染章 overdraw 节 |
| BasePass 高 | 高面数、Nanite 之外的大网格 | Nanite / LOD |
| PostProcessing 高 | 多个全屏特效叠加 | 砍效果 / 合并 |
| 全屏着色器贵 | 材质复杂度高 | 简化材质 / 改算法 |
移动端(尤其 OpenGL/Vulkan 前向渲染)的管线不同:看到 Frame 时间高但 GPU 各段都不高,可能是带宽瓶颈——移动 GPU 的内存带宽比算力更容易满。
