静态批处理是一种绘制调用批处理方法,它组合不移动的网格以减少绘制调用。它将组合的网格转换为世界空间,并为它们构建一个共享顶点和索引缓冲区。然后,对于可见网格,Unity 会执行一系列简单的绘制调用,每个调用之间几乎没有状态变化。静态批处理不会减少绘制调用的数量,而是减少它们之间的渲染状态更改的数量。静态批处理比动态批处理更高效,因为静态批处理不会转换 CPU 上的顶点。
兼容性:
功能 | 内置渲染管线 | 通用渲染管线 (URP) | 高清渲染管线 (HDRP) | 自定义可编程渲染管线 (SRP) |
---|---|---|---|---|
静态批处理 | 是 | 是 | 是 | 是 |
开启批处理:
1.构建时:
在Edit > Project Settings > Player > Other Settings (其他设置) 中,勾选 Static Batching 。
将需要合批的物体在物体的 Inspector 面板中勾选Static,并选择Batching Static
注意:如果在构建时执行静态批处理,则 Unity 在运行时不会使用任何 CPU 资源来生成静态批处理的网格数据。
2.运行时:
运行时使用StaticBatchingUtility 类批处理静态网格,静态 StaticBatchingUtility.Combine 方法将传入的游戏对象组合在一起,并为静态批处理做好准备。对于运行时以程序方式生成的网格有用。
与构建时的静态批处理不同,运行时的批处理不需要启用 Static Batching Player Setting。
合批条件:
1.游戏对象处于活动状态。
2.游戏对象具有 Mesh Filter 组件,并且该组件已启用。
3.Mesh Filter 组件具有对 Mesh 的引用。
4.网格已启用读/写功能。
5.网格的顶点计数大于 0。
6.该网格尚未与其他网格合并。
7.游戏对象具有 Mesh Renderer 组件,并且该组件已启用。
8.Mesh Renderer组件不使用任何具有 tag 设置为 true 的着色器的材质。DisableBatching
9.要一起批处理的网格使用相同的顶点属性。例如,Unity 可以对使用顶点位置、顶点法线和一个 UV 的网格进行批处理,但不能对使用顶点位置、顶点法线、UV0、UV1 和顶点切线的网格进行批处理。
10.批处理使用信息
合批时机:
1.构建时:
手动触发合批
标记静态对象:在 Unity 编辑器中,你需要手动将想要进行静态批处理的游戏对象标记为静态。在 Inspector 面板中,勾选对象的 “Static” 复选框,并在下拉菜单中选择 “Batching Static”。
执行烘焙操作:标记完成后,你可以通过菜单栏中的 “Window” -> “Analysis” -> “Static Batching Utility” 打开静态批处理工具窗口,然后点击 “Bake Static Batch” 按钮,Unity 会立即对标记为静态批处理的对象进行合批。合批后的结果会被保存下来,在游戏运行时直接使用。
自动触发合批
保存场景时:在某些情况下,当你保存场景时,Unity 可能会自动对标记为静态批处理的对象进行合批。不过这种自动合批行为可能因 Unity 版本和项目设置的不同而有所差异。
构建项目时:在构建项目(如打包成可执行文件)的过程中,Unity 也会对标记为静态批处理的对象进行合批,以确保最终发布的游戏中使用优化后的渲染数据。
2.运行时:
静态批处理主要是在构建阶段完成的,运行时通常不会再次进行合批操作。
性能影响:
使用静态批处理需要额外的 CPU 内存来存储组合的几何体。如果多个游戏对象使用相同的网格,则 Unity 会为每个游戏对象创建一个网格副本,并将每个副本插入到组合网格中。这意味着相同的几何体在组合网格中多次出现。无论您使用的是编辑器还是运行时API来准备用于静态批处理的游戏对象,Unity 都会执行此作。如果要保持较小的内存占用,可能必须牺牲渲染性能并避免对某些游戏对象进行静态批处理。例如,在茂密的森林环境中将树木标记为静态可能会对内存产生严重影响。
注:
1.静态批处理可以包含的顶点数存在限制。每个静态批处理最多可以包含 64000 个顶点。如果有更多,Unity 会创建另一个批次。
2.一旦游戏对象被标记为静态并进行了静态批处理,在运行时就不能再改变其位置、旋转、缩放等属性,否则会导致渲染错误。
3.静态批处理会影响光照计算,因为合批后的对象会被视为一个整体。在使用静态批处理时,需要注意光照烘焙的设置,以确保光照效果符合预期。
4.静态批处理可以显著减少 Draw Call 数量,提高渲染性能,特别是在场景中包含大量静态对象的情况下。但对于经常移动或变化的对象,不适合使用静态批处理。
未完待续。。。
参考链接: