Version: 6000.3
语言: 中文
批处理绘制调用
启用绘制调用批处理

批量绘制调用简介

绘制调用批处理是一种绘制调用优化方法,它组合网格,以便 Unity 可以在更少的绘制调用中渲染它们。Unity 提供了两种内置的绘制调用批处理方法:

  • 静态批处理:用于静态 游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
    请参阅术语表
    ,Unity 将它们组合在一起并一起渲染。
  • 动态批处理:对于足够小的网格体,这会在 CPU 上转换它们的顶点,将相似的顶点组合在一起,并在一次绘制调用中渲染它们。

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

渲染管线兼容性

特征 普遍渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表
(URP)
高清渲染管线 (HDRP) 自定义可编写脚本的渲染管线(SRP) 内置渲染管线
静态批处理 是的 是的 是的 是的
动态批处理 是的 是的 是的

局限性

透明着色器在 GPU 上运行的程序。更多信息
请参阅术语表
通常需要 Unity 以从后到前的顺序渲染网格。要批量处理透明网格体,Unity 首先从后到前对它们进行排序,然后尝试对它们进行批处理。由于 Unity 必须从后到前渲染网格,因此它通常无法批处理与不透明网格一样多的透明网格。

Unity 无法将动态批处理应用于在其变换组件变换组件确定场景中每个对象的位置、旋转和缩放。每个游戏对象都有一个 Transform。更多信息
请参阅术语表
.例如,如果一个游戏对象的比例为 1,而另一个游戏对象的比例为 –1,则 Unity 无法将它们批处理在一起。

如果无法使用绘制调用批处理,则手动组合彼此靠近的网格可能是一个不错的选择。有关合并网格的更多信息,请参阅合并网格。

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

批处理绘制调用
启用绘制调用批处理