如灰尘保佑的礼物

Unity Dynamic Batching

动态合批适用于模型简单材质相同数量很多的运动物体,动态合批只会在程序运行时发生,在CPU中将可以合批的对象整理合并在一起后,向GPU发送一次绘制命令。因为动态批处理的工作原理是将所有游戏对象顶点转换到CPU上的世界空间,所以仅在该工作小于进行绘制调用的情况下,才有优势。

原理

  • CPU所有的顶点信息会变换到世界坐标系下
  • 将所有可以合批对象的顶点,连续填充到顶点和索引缓冲区,让GPU认为他们是一个整体。

动态合批的条件

  • 材质相同
  • 顶点数量不超过300
  • 缩放不能为负值
  • 多pass着色器会中断批处理。

与静态合批的差别

  • 动态合批相对静态合批不会在运行时造成内存的显著增长,不会影响包体大小。
  • 动态合批主要开销在于遍历顶点进行空间变换时对CPU性能的开销,静态合批没有这个开销。
  • 动态合批使用根据渲染器类型分配的公共缓冲区,静态合批使用自己的专用缓冲区。