UPL2-4——Rendering 模块
UPL2-4——Rendering 模块
Rendering 模块
Rendering(渲染)模块,用于显示一帧渲染时的数据量(批次数、顶点数等)
在游戏中如果出现以下问题时,可以着重观察这里的内容
- 怀疑是因为 DrawCall 过高导致 CPU 性能问题(卡顿、掉帧)
- 在中低端手机上发热严重、掉电快
- 开启大量实时光照、粒子、动态对象后出现掉帧
- 画面复杂卡顿、简单不卡顿时
等等
Rendering 中各参数功能的含义和作用

-
渲染(Rendering) 分析窗口 在这里显示有关CPU和GPU和渲染相关的统计信息

- Batches Count(批处理数): 该帧内批处理数量(DrawCall 次数),值越高,CPU 压力越大。推荐合批优化
- SetPass Calls Count(SetPass 调用次数): 该帧内用于渲染游戏对象的着色器渲染通道(Pass)调用次数
即每帧需要切换 Shader / 材质状态的次数 值越高,GPU 状态切换开销大。尽量减少材质和渲染通道 Pass 的数量 - Triangles Count(三角形数量):该帧内渲染了多少个三角形(所有网格顶点组成的面)影响 GPU 处理负荷,特别是在移动端需控制数量
- Vertices Count(顶点数量):该帧内渲染了多少个顶点(所有网格顶点数量) 影响 GPU 顶点处理性能
-
详细渲染信息

-
Open Frame Debugger:打开帧调试器,关于帧调试器可见:US5L8——帧调试器 Frame Debugger
-
SetPass Calls、Draw Calls、Batches、Triangles、Vertices
- SetPass Calls:该帧内用于渲染游戏对象的着色器渲染通道(Pass)调用次数,即该帧向 GPU 提交的材质状态切换次数
- Draw Calls:该帧从 CPU 发起的绘制命令总次数。包含非批处理和动态静态批处理绘制调用
- Batches:该帧实际合并成的渲染批次数
- Triangles:该帧内渲染了多少个三角形
- Vertices:该帧内渲染了多少个顶点
-
(Dynamic Batching)动态批处理、(Static Batching)静态批处理、(Instancing)GPU Instancing(同一网格多个实例共享)具体信息
- Batched Draw Calls:合并为批处理的DC数
- Batches:批处理数
- Triangles:三角形数
- Vertices:顶点数
- Time:处理时间
-
Used Textures:该帧使用的 Unity 纹理数量和纹理使用的内存量
-
Render Textures:该帧使用的渲染纹理数量和内存量
-
Render Textures Changes:该帧将一个或多个渲染纹理设置为渲染目标的次数
-
Used Buffers:GPU 缓冲区和内存的总数(包括顶点、索引、计算缓冲区以及渲染所需的所有内部缓冲区)
-
Vertex Buffer Upload In Frame:CPU 在该帧上传到 GPU 的几何体数量(顶点、法线、纹理数据)
-
Index Buffer Upload In Frame:CPU 在该帧上传到 GPU 的三角形索引数据
-
Shadow Casters:该帧中投射阴影的游戏对象数量。如果一个物体受到多个光源影响,那么每个光源产生的阴影都算在内
使用建议:着重关注
-
Draw Calls 数量
它是 CPU 发给 GPU 的绘制命令数量,如果高了,CPU 开销大、容易成为瓶颈
优化方向:合批(静态、动态合批、GPU Instancing),材质合并等等 -
SetPass Calls 数量
它是提交材质或着色器状态的次数,如果高了,GPU 开销大,状态切换频繁,阻碍批处理
优化方向:减少材质和 Shader 变体 数量,合并材质等 -
Batches 数量
它是合批后的实际批次数,理论上越低越好
可以用来评估合批优化是否生效 -
Triangles / Vertices 数量
它是实际渲染的面数和顶点数,特别是移动设备中建议控制在适当范围,比如低端机每帧不超过 50w 三角形,具体看设备
-
Render Textures
它是当前帧中创建的渲染纹理数量和内存,如果高了,意味着内存开销大,频繁切换也会影响性能
我们应该尽量复用 RenderTexture 减少临时对象创建
等等
-
Rendering 对于我们的意义
Rendering 可以帮助我们:
-
定位 CPU 渲染压力的关键依据
批处理次数多,意味着 DrawCall 高,意味着 CPU 消耗高
材质切换次数,意味着 CPU 频繁设置材质,意味着可能带来批处理失败 -
判断 GPU 处理压力是否过大
三角形面数、顶点数都会直接影响 GPU 渲染耗时
数据量过大往往是因为模型太复杂,粒子特效过多,动态对象过多 -
判断画面复杂度对性能的影响
当进入不同场景、摄像机角度变化、特效显示隐藏
都可能带来各种数据的变化,这些数据可以让性能下降有据可查 -
分析批处理的策略是否生效
看看使用了静态、动态批处理后,批处理参数是否还是很高、
等等
