Version: 2022.3
  • C#


class in UnityEngine.Rendering


Implemented in:UnityEngine.CoreModule

Suggest a change


Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.


Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.




A BatchRendererGroup is an object that lets you perform customizable high performance rendering.

You can set up batches in advance to set up groups of instances with shared metadata values that describe how to load Material properties. Whenever Unity renders a BatchRendererGroup, it invokes the OnPerformCulling callback to perform visibility culling and to generate a variable sized list of draw commands that describe how to render the visible parts of the BatchRendererGroup. Each draw command instructs Unity to render a group of instances from a given batch with a specific Mesh and Material.

Static Properties

BufferTargetThe buffer target BatchRendererGroup.AddBatch accepts for the active graphics API.


BatchRendererGroupConstructor for a BatchRendererGroup object.

Public Methods

AddBatchCreate a draw command batch that shares a single set of metadata values and a single GraphicsBuffer.
DisposeDeletes a group.
GetRegisteredMaterialReturns the previously registered Material associated with this MaterialID.
GetRegisteredMeshReturns the previously registered Mesh associated with this MeshID.
GetThreadedBatchContextGet the thread-safe API for interacting with a BatchRendererGroup from Burst jobs.
RegisterMaterialRegisters a Material in BatchRendererGroup and returns its BatchMaterialID. Each registration of a specific Material increases its number of owners by 1.
RegisterMeshRegisters a mesh in BatchRendererGroup and returns its BatchMeshID. Each registration of a specific mesh increases its number of owners by 1.
RemoveBatchDelete a batch that was previously created with AddBatch.
SetBatchBufferChange the GraphicsBuffer associated with the given batch.
SetEnabledViewTypesSet the combination of BatchCullingViewType for which this BatchRendererGroup should receive an OnPerformCulling callback.
SetErrorMaterialSet the error material for the BatchRendererGroup. This material will be used internally by Unity to render the draw commands referring to erroneous shaders. You can also pass 'null' to this method to unset the material.
SetGlobalBoundsSet the bounds of the BatchRendererGroup. The bounds should encapsulate the render bounds of every object rendered with this BatchRendererGroup. Unity uses these bounds internally for culling.
SetLoadingMaterialSet the loading material for the BatchRendererGroup.
SetPickingMaterialSet the material that Unity uses to render object picking data using the draw commands in the Scene view.
UnregisterMaterialUnregister the Material ID associated with BatchRendererGroup. Each deregistration of a specific Material reduces its number of owners by 1.
UnregisterMeshUnregister the mesh ID associated with BatchRendererGroup. Each deregistration of a specific mesh reduces its number of owners by 1.

Static Methods

GetConstantBufferMaxWindowSizeDefines the maxiumum amount (in bytes) the BatchRendererGroup constant buffer window size is visible from the shader.


OnPerformCullingCulling callback function.