Version: Unity 6.0 (6000.0)
语言 : 中文
批处理绘制调用
Set up GameObjects for batching

批处理绘制调用简介

绘制调用批处理是一种绘制调用优化方法,它使用了网格,因此 Unity 可以通过更少的绘制调用进行渲染。Unity 提供了两种内置的绘制调用批处理方法:

  • 静态批处理:对于静态游戏对象,Unity 将对其进行组合并一起渲染。
  • 动态批处理:对于足够小的网格,此方法会在 CPU 上转换网格的顶点,将相似顶点组合在一起,并通过一次绘制调用对其进行渲染。

与手动合并网格相比,Unity 的内置绘制调用批处理具有几项优势;最值得注意的是,Unity 仍然可以单独剔除网格。但是,也有一些缺点;静态批处理会导致内存和存储开销,动态批处理会产生一些 CPU 开销。

渲染管线兼容性

功能 通用渲染管线 (URP) 高清渲染管线 (HDRP) 自定义可编程渲染管线 (SRP) 内置渲染管线
静态批处理
动态批处理

限制

透明着色器通常需要 Unity 以从后到前的顺序渲染网格。要批量处理透明网格,Unity 首先要将其以从后到前的顺序进行排序,然后再尝试进行批处理。由于 Unity 必须以从后到前的顺序渲染网格,因此通常无法批量处理与不透明网格数量相同的透明网格。

Unity 无法将动态批处理应用于变换组件中包含镜像的游戏对象。例如,如果一个游戏对象的缩放比例为 1,另一个游戏对象的缩放比例为 –1,则 Unity 无法将它们一起进行批处理。

如果您无法使用绘制调用批处理,可通过手动方式将彼此接近的网格进行组合。有关组合网格的更多信息,请参阅组合网格

警告:从 C# 脚本访问共享材质属性时,请确保使用 Renderer.sharedMaterial,不要使用 Renderer.materialRenderer.material 会创建材质副本,并将副本分配回渲染器。此操作会阻止 Unity 对该渲染器的绘制调用进行批处理。

批处理绘制调用
Set up GameObjects for batching