# BatchRendererGroup

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

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine.Rendering](/engine/6000.7/script-reference/unityengine/rendering.md)
* **Assembly:** UnityEngine.CoreModule
* **Implements:** [IDisposable](https://learn.microsoft.com/dotnet/api/system.idisposable)

```csharp
public class BatchRendererGroup : IDisposable
```

## Remarks

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.

## Constructors

| Constructor                                                                                                                                                                                                                   | Description                                  |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
| [BatchRendererGroup(UnityEngine.Rendering.BatchRendererGroup.OnPerformCulling,System.IntPtr)](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/ctor.md#batchrenderergroup\(onperformculling-intptr\)) | Constructor for a BatchRendererGroup object. |
| [BatchRendererGroup(UnityEngine.Rendering.BatchRendererGroupCreateInfo)](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/ctor.md#batchrenderergroup\(batchrenderergroupcreateinfo\))                 | Constructor for a BatchRendererGroup object. |

## Static Properties

| Property                                                                                                 | Description                                                                                                                                                                |
| -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [BufferTarget](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/buffertarget.md) | The buffer target [BatchRendererGroup.AddBatch](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/addbatch.md) accepts for the active graphics API. |

## Methods

| Method                                                                                                                         | Description                                                                                                                                                                                                                                                                                  |
| ------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AddBatch](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/addbatch.md)                               | Create a draw command batch that shares a single set of metadata values and a single `GraphicsBuffer`.                                                                                                                                                                                       |
| [Dispose](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/dispose.md)                                 | Deletes a group.                                                                                                                                                                                                                                                                             |
| [GetRegisteredMaterial](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/getregisteredmaterial.md)     | Returns the previously registered Material associated with this MaterialID.                                                                                                                                                                                                                  |
| [GetRegisteredMesh](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/getregisteredmesh.md)             | Returns the previously registered Mesh associated with this MeshID.                                                                                                                                                                                                                          |
| [GetThreadedBatchContext](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/getthreadedbatchcontext.md) | Get the thread-safe API for interacting with a [BatchRendererGroup](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup.md) from Burst jobs.                                                                                                                            |
| [RegisterMaterial](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/registermaterial.md)               | Registers a Material in `BatchRendererGroup` and returns its `BatchMaterialID`. Each registration of a specific Material increases its number of owners by 1.                                                                                                                                |
| [RegisterMesh](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/registermesh.md)                       | Registers a mesh in `BatchRendererGroup` and returns its `BatchMeshID`. Each registration of a specific mesh increases its number of owners by 1.                                                                                                                                            |
| [RemoveBatch](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/removebatch.md)                         | Delete a batch that was previously created with `AddBatch`.                                                                                                                                                                                                                                  |
| [SetBatchBuffer](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/setbatchbuffer.md)                   | Change the `GraphicsBuffer` associated with the given batch.                                                                                                                                                                                                                                 |
| [SetEnabledViewTypes](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/setenabledviewtypes.md)         | Set the combination of [BatchCullingViewType](/engine/6000.7/script-reference/unityengine/rendering/batchcullingviewtype.md) for which this [BatchRendererGroup](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup.md) should receive an `OnPerformCulling` callback. |
| [SetErrorMaterial](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/seterrormaterial.md)               | Set 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.                                                               |
| [SetGlobalBounds](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/setglobalbounds.md)                 | Set 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.                                                                                         |
| [SetLoadingMaterial](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/setloadingmaterial.md)           | Set the loading material for the `BatchRendererGroup`.                                                                                                                                                                                                                                       |
| [SetPickingMaterial](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/setpickingmaterial.md)           | Set the material that Unity uses to render object picking data using the draw commands in the Scene view.                                                                                                                                                                                    |
| [UnregisterMaterial](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/unregistermaterial.md)           | Unregister the Material ID associated with `BatchRendererGroup`. Each deregistration of a specific Material reduces its number of owners by 1.                                                                                                                                               |
| [UnregisterMesh](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/unregistermesh.md)                   | Unregister the mesh ID associated with `BatchRendererGroup`. Each deregistration of a specific mesh reduces its number of owners by 1.                                                                                                                                                       |

## Static Methods

| Method                                                                                                                                       | Description                                                                                                           |
| -------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| [GetConstantBufferMaxWindowSize](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/getconstantbuffermaxwindowsize.md) | Defines the maxiumum amount (in bytes) the BatchRendererGroup constant buffer window size is visible from the shader. |

## Delegates

| Delegate                                                                                                                              | Description                         |
| ------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- |
| [BatchRendererGroup.OnFinishedCulling](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/onfinishedculling.md) | Finished culling callback function. |
| [BatchRendererGroup.OnPerformCulling](/engine/6000.7/script-reference/unityengine/rendering/batchrenderergroup/onperformculling.md)   | Culling callback function.          |
