绘制调用批处理是一种绘制调用优化方法,它将网格合并,以便 Unity 可以使用更少的绘制调用来渲染它们。Unity 提供两种内置的绘制调用批处理方法
Unity 的内置绘制调用批处理与手动合并网格相比具有几个优势;最值得注意的是,Unity 仍然可以单独剔除网格。但是,它也有一些缺点;静态批处理会产生内存和存储开销,而动态批处理会产生一些 CPU 开销。
功能 | 通用 渲染管线一系列将场景内容显示在屏幕上的操作。Unity 允许您从预建的渲染管线中进行选择,或编写自己的渲染管线。 更多信息 参见 词汇表 (URP) |
高清晰度渲染管线 (HDRP) | 自定义可脚本化渲染管线 (SRP) | 内置渲染管线 |
---|---|---|---|---|
静态批处理 | 是 | 是 | 是 | 是 |
动态批处理 | 是 | 否 | 是 | 是 |
透明 着色器在 GPU 上运行的程序。 更多信息
参见 词汇表 通常需要 Unity 以从后到前的顺序渲染网格。为了对透明网格进行批处理,Unity 首先按从后到前的顺序对它们进行排序,然后尝试对它们进行批处理。由于 Unity 必须以从后到前的顺序渲染网格,因此它通常无法像对不透明网格那样对许多透明网格进行批处理。
Unity 无法对包含 变换组件变换组件决定场景中每个对象的 位置、旋转和缩放。每个游戏对象都有一个变换。 更多信息
参见 词汇表 中镜像的游戏对象应用动态批处理。例如,如果一个游戏对象的缩放比例为 1,而另一个游戏对象的缩放比例为 –1,则 Unity 无法将它们一起批处理。
如果无法使用绘制调用批处理,则手动合并彼此靠近的网格可能是不错的替代方案。有关合并网格的更多信息,请参见 合并网格.
警告:当您从 C# 脚本访问共享材质属性时,请确保使用 Renderer.sharedMaterial 而不是 Renderer.material。Renderer.material
会创建材质的副本,并将副本分配回渲染器。这会阻止 Unity 对该渲染器的绘制调用进行批处理。