版本:Unity 6 (6000.0)
语言:英语
绘制调用批处理
启用绘制调用批处理

绘制调用批处理简介

绘制调用批处理是一种绘制调用优化方法,它将网格合并,以便 Unity 可以使用更少的绘制调用来渲染它们。Unity 提供两种内置的绘制调用批处理方法

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

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

渲染管线兼容性

功能 通用 渲染管线一系列将场景内容显示在屏幕上的操作。Unity 允许您从预建的渲染管线中进行选择,或编写自己的渲染管线。 更多信息
参见 词汇表
(URP)
高清晰度渲染管线 (HDRP) 自定义可脚本化渲染管线 (SRP) 内置渲染管线
静态批处理
动态批处理

限制

透明 着色器在 GPU 上运行的程序。 更多信息
参见 词汇表
通常需要 Unity 以从后到前的顺序渲染网格。为了对透明网格进行批处理,Unity 首先按从后到前的顺序对它们进行排序,然后尝试对它们进行批处理。由于 Unity 必须以从后到前的顺序渲染网格,因此它通常无法像对不透明网格那样对许多透明网格进行批处理。

Unity 无法对包含 变换组件变换组件决定场景中每个对象的 位置、旋转和缩放。每个游戏对象都有一个变换。 更多信息
参见 词汇表
中镜像的游戏对象应用动态批处理。例如,如果一个游戏对象的缩放比例为 1,而另一个游戏对象的缩放比例为 –1,则 Unity 无法将它们一起批处理。

如果无法使用绘制调用批处理,则手动合并彼此靠近的网格可能是不错的替代方案。有关合并网格的更多信息,请参见 合并网格.

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

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