Unity Ui 合批学习

Unity Ui 合批学习

Stats 统计面板

stats面板可以展示摄像机范围内,所有游戏对象元素的顶点、面片、批处理次数、CPU耗时等。

image-20220919101137617

参数 说明 备注
tris 三角形面数
verts 顶点数
Batches 批处理个数
Saved By batching 批处理被合并后的批处理个数 实际执行的批处理个数Draw Call
CPU cpu执行耗时
FPS 时间段执行次数 流畅度

天空盒子

新建一个场景发现,有1.7k的三角和5k的顶点。

++ 这些顶点和三角面其实来源于天空盒,天空盒也是一个模型。 ++

image-20220919101907862

修改为适用纯色背景:

image-20221128144803967

可以看到此时,降低到了2个三角面和4个顶点。如下图所示的分割情况.

image-20221128144922221

批处理

我们最常看到的优化技术大概就是批处理了。批处理的实现原理就是为了减少每一帧需要的draw call数目。为了把一个对象渲染到屏幕上,CPU需要检查哪些光源影响了该物体,绑定Shader 被设置它的参数,再把渲染纹理发送给GPU。当场景中包含了大量对象时,这些操作就会非常耗时。一个极端的例子是,如果我们需要渲染一千个三角形,把它们按一千个单独的网格进行渲染所花费的时间要远远大于渲染一个包含了一千个三角形的网格。在这两种情况下,GPU的性能消耗其实并没有多大的区别,但CPU的draw call数目就会成为性能瓶颈。因此,批处理的思想很简单,就是在每次面对draw call 时尽可能多地处理多个物体。
使用同一个材质的物体可以一起处理。对于使用同一个材质的物体,它们之间的不同仅仅在于顶点数据的差别。我们可以把这些顶点数据合并在一起,再一起发送给GPU,就可以完成一次批处理。

Batches和Saved by batching

image-20221128151826942

  • Batches 表示批处理次数
  • Saved byBatching 表示节省的批处理次数

动态批处理和静态批处理

将物体标记为Static可以大幅优化批处理。—— 静态批处理

参考资料

  1. Unity3D UGUI系列之合批_WangShade的博客-CSDN博客_ugui合批

  2. Unity3D客户端项目优化总结之Stats统计面板_WangShade的博客-CSDN博客

  3. Unity3D客户端项目优化总结之静态批处理Static Batching_WangShade的博客-CSDN博客