15.Unity动静态批处理的区别
15.1 题目
Unity中动态批处理和静态批处理有何区别?
15.2 深入解析
批处理技术是Unity提供的优化渲染性能的技术,通过减少DC(Draw Call)来提高渲染效率,基本原理是合并网格
动态批处理和静态批处理都可以在Player Setting中 Other Settings中设置是否开启
静态批处理默认开启,动态批处理默认关闭
动态批处理是Unity自动会帮助我们将小型动态对象(无法处理超过 900 个顶点属性和 225 个顶点的网格,比如着色器使用顶点位置、顶点法线和单个 UV,则 Unity 最多可以批处理 225 个顶点。但是,如果着色器使用顶点位置、顶点法线、UV0、UV1 和顶点正切,则 Unity 只能批处理 180 个顶点)进行批处理
而静态批处理只会处理设置为静态Static的对象(注意:相同材质的对象)动态批处理主要消耗cpu性能,静态批处理主要消耗内存
动态批处理在运行时随时可能变化(对象可以频繁进行移动、旋转、缩放等操作),静态批处理结果运行时不变(静态对象不能有变化)
各渲染管线对合批策略不同:静态批处理在 Built-in/URP/HDRP 等中仍常见;动态批处理在 HDRP 等管线中往往不启用或效果有限,HDRP 通常更依赖 SRP Batcher 等机制。具体以当前 Unity 版本 Player Settings / 文档为准。
Player Settings 中动静态批处理开关默认值随版本变化,以编辑器实际选项为准。
15.3 答题示例
“Unity 的批处理技术主要有两种:
动态批处理(Dynamic Batching):
- 运行时自动合批:只对小网格(顶点数较少、属性简单)的动态对象合并;
- 对象可移动旋转:批次可随场景变化实时重组;
- 开销在 CPU 端:每帧需要不断打包顶点数据。
静态批处理(Static Batching):
- 编辑器预合批:只对标记为
Static、且共用同一材质的对象预先合并;- 对象位置、旋转固定:运行时不重新计算划分;
- 开销在内存端:需要额外保存合并后的大网格数据;
- 支持所有渲染管线(Built‑in/URP/HDRP)。
在开启静态批处理后,可显著减少大型场景的 Draw Call;在少量小物件且需动态交互时,适当开启动态批处理可进一步优化渲染性能。”
15.4 关键词联想
- 动态批处理 Dynamic Batching
- 静态批处理 Static Batching
- Draw Call 减少
- 小网格/大网格
- CPU vs 内存 开销
- 编辑器预合批
- 运行时合批
- 顶点数限制
- 材质共享
- 渲染管线兼容
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com