Version: Unity 6.0 (6000.0)
语言 : 中文
URP 中的 BatchRendererGroup API
在 URP 中为 BatchRendererGroup API 设置项目

URP 中的 BatchRendererGroup API 简介

BRG 是执行以下操作的完美工具:

  • 渲染 DOTS Entities。有关 Entities 如何使用 BRG 的更多信息,请参阅 Entities Graphics 性能
  • 渲染大量环境对象,其中使用单个__ GameObject__Unity 场景中的基础对象,可以表示角色、道具、风景、摄像机、路径点等。GameObject 的功能由所附的组件决定。更多信息
    See in Glossary
    会占用过多资源。例如,按程序放置的植物或岩石。
  • 渲染自定义地形块。可以使用不同的网格或材质来显示不同的细节程度。

渲染管线兼容性

下表显示了哪些渲染管线支持 BRG。

功能名称 通用渲染管线 (URP) 高清渲染管线 (HDRP) 自定义 SRP 内置渲染管线
BatchRendererGroup 是 (1) 是 (1) 是 (1)

注意

  1. 如果项目使用 SRP Batcher。

平台兼容性

Unity 在以下平台上支持 BRG:

  • 使用 DirectX 11 的 Windows
  • 使用 DirectX 12 的 Windows
  • 使用 Vulkan 的 Windows
  • 通用 Windows 平台
  • 使用 Vulkan 的 Linux
  • 使用 Metal 的 macOS
  • iOS
  • Android(Vulkan 和 OpenGL ES 3.x)
  • PlayStation 4
  • PlayStation 5
  • Xbox One
  • Xbox Series X 和 Xbox Series S
  • Nintendo Switch

BatchRendererGroup 的工作原理

为了渲染到屏幕,BatchRendererGroup (BRG) 会生成绘制命令,这些命令是特定于 BRG 的概念,包含了 Unity 高效创建优化过的实例化绘制调用所需的一切。

为了确定何时在绘制命令中渲染实例,BRG 会使用过滤器设置。过滤器设置可以控制何时渲染实例本身,还可以控制何时渲染每个实例的某些方面,例如其阴影和运动矢量

由于相同的过滤器设置通常可以应用于大量绘制命令,因此 BRG 使用绘制范围将过滤器设置应用于一系列绘制命令。绘制范围将连续的绘制命令与适用于它们的过滤器设置实例相结合。如果过滤器设置确定 Unity 不应渲染绘制命令,则绘制范围格外有用,因为它使 Unity 可以有效跳过范围内每个绘制命令的渲染。

绘制调用中的实例没有限制。可以使用不同的网格和材质多次渲染相同的实例,即具有相同实例索引和 batchID 的对象。此方法会很有用的一个示例是使用不同的材质绘制不同的子网格但使用相同的实例索引在绘制之间共享变换矩阵等属性。

有关如何使用 BRG 创建渲染器的信息,请参阅使用 BatchRendererGroup 创建渲染器

技术限制

在大多数情况下,Unity 将绘制命令渲染为可编程渲染管线中每个兼容 DrawRenderers 调用的单个平台级实例化绘制调用。但是,当图形 API 的绘制调用大小限制小于绘制命令的 visibleCount 时无法实现此操作。在这些情况下,Unity 会将绘制命令拆分为多个实例化绘制调用。

URP 中的 BatchRendererGroup API
在 URP 中为 BatchRendererGroup API 设置项目