Version: 6000.3
语言: 中文
批处理移动的游戏对象
启用动态批处理

动态批处理简介

动态批处理是一种绘制调用批处理方法,可对移动进行批处理游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
以减少绘制调用。它可以提高性能、内存效率并减少 CPU 开销,从而实现更流畅的帧速率和更好的玩家体验,尤其是在具有许多小对象或低端设备上的场景中。

Unity 在运行时动态生成的网格体和几何体之间的动态批处理工作方式不同,例如粒子系统通过在场景中生成大量小型 2D 图像并对其进行动画处理来模拟液体、云和火焰等流体实体的组件。更多信息
请参阅术语表
.有关网格和动态几何体之间内部差异的信息,请参阅网格体的动态批处理动态生成几何体的动态批处理

注意动态批处理:一种自动 Unity 过程,它尝试将多个网格渲染为单个网格,以优化图形性能。该技术转换 CPU 上的所有游戏对象顶点,并将许多相似的顶点组合在一起。更多信息
请参阅术语表
For Meshes 旨在优化旧低端设备的性能。在现代使用者硬件上,动态批处理在 CPU 上执行的工作可能大于绘制调用的开销。这会对性能产生负面影响。有关更多信息,请参阅网格体的动态批处理

Unity 如何批处理移动的游戏对象

网格体的动态批处理的工作原理是将所有顶点转换为 CPU 上的世界空间,而不是 GPU 上。这意味着,只有当转换工作比执行绘制调用占用的资源更少时,动态批处理才是一种优化。

绘制调用的资源要求取决于许多因素,主要是图形 API。例如,在控制台或 Apple Metal 等现代 API 上,绘制调用开销通常要低得多,并且动态批处理通常不会提高性能。若要确定在应用程序中使用动态批处理是否有益,请使用和不使用动态批处理来分析应用程序。

Unity 可以对阴影投射器使用动态批处理,即使它们的材质不同,只要 Unity 对阴影通道所需的材质值相同即可。例如,多个板条箱可以使用具有不同纹理的材质。尽管材质资产不同,但差异与阴影投射器通道无关,Unity 可以在阴影渲染步骤中批量处理 crate GameObjects 的阴影。

要求和兼容性

本节包括有关渲染管线 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表
动态批处理的兼容性。

渲染管线兼容性

特征 通用渲染管线(URP) 高清渲染管线 (HDRP) 自定义可编写脚本的渲染管线(SRP) 内置渲染管线
动态批处理 是的 是的 是的

所需资源

绘制调用的资源要求取决于图形 API。若要确定动态批处理是否对应用程序有用,请分析启用和未启用动态批处理的应用程序。

网格的动态批处理

网格体的动态批处理将所有顶点转换为 CPU 上而不是 GPU 上的世界空间。仅当转换工作的资源密集度低于执行绘制调用时,这才会优化性能。

阴影投射器

Unity 可以对阴影投射器使用动态批处理,即使它们的材质不同,只要阴影通道所需的材质值相同即可。例如,多个 crate 可以使用不同的纹理,但 Unity 可以在阴影渲染步骤中批处理 crate 游戏对象的阴影。

局限性

在以下场景中,Unity 要么根本无法使用动态批处理,要么只能在有限的范围内应用动态批处理:

  • Unity 无法将动态批处理应用于包含超过 900 个顶点属性和 300 个顶点的网格。这是因为网格的动态批处理每个顶点都有开销。例如:

  • 如果您的着色器在 GPU 上运行的程序。更多信息
    请参阅术语表
    使用顶点位置、顶点法线和单个 UV,则 Unity 最多可以批处理 300 个顶点。

  • 如果您的着色器使用顶点位置、顶点法线、UV0、UV1 和顶点切线,则 Unity 只能批处理 180 个顶点。

  • 如果游戏对象使用不同的材质实例,Unity 无法将它们批处理在一起,即使它们本质上是相同的。唯一的例外是阴影投射器渲染。

  • 带有光照贴图的游戏对象具有额外的渲染器参数。这意味着,如果要批量批处理光照贴图游戏对象,它们必须指向相同的lightmap:预渲染的纹理,包含光源对场景中静态对象的效果。光照贴图覆盖在场景几何体之上,以创建光照效果。更多信息
    请参阅术语表
    位置。

  • Unity 无法将动态批处理完全应用于使用多通道着色器的游戏对象。
    • 几乎所有 Unity 着色器都支持多个灯光前向渲染一种渲染路径,用于在一个或多个通道中渲染每个对象,具体取决于影响对象的光源。光源本身也因前向渲染而异,具体取决于其设置和强度。更多信息
      请参阅术语表
      .为了实现这一点,他们为每个光源处理一个额外的渲染通道。Unity 仅批处理第一个渲染通道。它无法批处理额外的每像素光源的绘制调用。

动态生成几何形状的动态批处理

动态批处理对于 Unity 动态生成的几何体(例如粒子和线条)的工作方式不同。以下渲染器生成可以使用动态批处理进行优化的几何体:

动态生成几何形状的动态批处理过程

动态生成几何体的动态批处理工作方式与网格体的工作方式不同:

  1. Unity 将所有可动态批处理的内容构建到每个渲染器的一个大型顶点缓冲区中。
  2. 渲染器设置批处理的材质状态。
  3. Unity 将顶点缓冲区绑定到 GPU。
  4. 对于批处理中的每个渲染器,Unity 会更新顶点缓冲区中的偏移量并提交新的绘制调用。

这种方法类似于 Unity 提交绘制调用的方式静态批处理Unity 用于在屏幕上绘制游戏对象的一种技术,用于将静态(非移动)游戏对象组合成大网格,并以更快的方式呈现它们。更多信息
请参阅术语表
.

批处理移动的游戏对象
启用动态批处理