Version: Unity 6 (6000.0)
Language : English
BatchRendererGroup API in URP
Set up your project for the BatchRendererGroup API in URP

Introduction to the BatchRendererGroup API in URP

BRG is the perfect tool to:

  • Render DOTS Entities. For more information how Entities uses BRG, refer to Entities Graphics Performance.
  • Render a large number of environment objects where using individual GameObjectsThe fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more. A GameObject’s functionality is defined by the Components attached to it. More info
    See in Glossary
    would be too resource-intensive. For example, procedurally-placed plants or rocks.
  • Render custom terrainThe landscape in your scene. A Terrain GameObject adds a large flat plane to your scene and you can use the Terrain’s Inspector window to create a detailed landscape. More info
    See in Glossary
    patches. You can use different meshes or materials to display different levels of detail.

Render pipeline compatibility

The following table shows which render pipelinesA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info
See in Glossary
support BRG.

Feature name Universal Render Pipeline (URP) High Definition Render Pipeline (HDRP) Custom SRP Built-in Render Pipeline
BatchRendererGroup Yes (1) Yes (1) Yes (1) No

Notes:

  1. If the project uses the SRP Batcher.

Platform compatibility

Unity supports BRG on:

  • Windows using DirectX 11
  • Windows using DirectX 12
  • Windows using Vulkan
  • Universal Windows Platform
  • Linux using Vulkan
  • macOS using Metal
  • iOS
  • Android (Vulkan and OpenGL ES 3.x)
  • PlayStation 4
  • PlayStation 5
  • Xbox One
  • Xbox Series X and Xbox Series S
  • Nintendo Switch

How BatchRendererGroup works

To render to the screen, BatchRendererGroup (BRG) generates draw commands which are a BRG-specific concept that contains everything Unity needs to efficiently create optimized, instanced draw calls.

To determine when to render the instances in a draw command, BRG uses filter settings. Filter settings control when to render instances themselves, but also when to render certain facets of each instance such as its shadows and motion vectors

Because the same filter settings can often apply to a large number of draw commands, BRG uses draw ranges to apply filter settings to a range of draw commands. A draw range combines a contiguous number of draw commands with an instance of filter settings that apply to them. Draw ranges are especially useful if the filter settings determine that Unity shouldn’t render the draw commands, because this makes it possible for Unity to efficiently skip rendering for every draw command in the range.

There is no restriction on which instances are in which draw calls. It’s possible to render the same instance, an object with the same instance index and batchID, many times with different meshes and materials. One example where this can be useful is drawing different sub-meshes with different materials, but using the same instance indices to share properties like transform matrices between the draws.

For information on how to create a renderer with BRG, see Creating a renderer with BatchRendererGroup.

Technical limitations

In most cases, Unity renders a draw command as a single, platform-level, instanced draw call for each compatible DrawRenderers call in the Scriptable Render Pipeline. However, that isn’t possible when the graphics API has a lower size limit for draw calls than the draw command’s visibleCount. In these situations, Unity splits the draw command into multiple instanced draw calls.

BatchRendererGroup API in URP
Set up your project for the BatchRendererGroup API in URP