# AddBatch

> Create a draw command batch that shares a single set of metadata values and a single GraphicsBuffer.

## Definition

* **Type:** Method
* **Namespace:** [UnityEngine.Rendering](/engine/6000.0/script-reference/unityengine/rendering.md)
* **Assembly:** UnityEngine.CoreModule

## AddBatch(NativeArray\<MetadataValue>, GraphicsBufferHandle)

Create a draw command batch that shares a single set of metadata values and a single `GraphicsBuffer`.

```csharp
public BatchID AddBatch(NativeArray<MetadataValue> batchMetadata, GraphicsBufferHandle buffer)
```

### Parameters

**** (\[NativeArray\<MetadataValue>]\(/engine/6000.0/script-reference/unity/collections/nativearray1)): The metadata properties for this batch.**** (\[GraphicsBufferHandle]\(/engine/6000.0/script-reference/unityengine/graphicsbufferhandle)): The `GraphicsBufferHandle` of the `GraphicsBuffer` associated with this batch.

### Returns

| Type                                                                        | Description                        |
| --------------------------------------------------------------------------- | ---------------------------------- |
| [BatchID](/engine/6000.0/script-reference/unityengine/rendering/batchid.md) | ID of the batch Unity has created. |

### Remarks

Every buffer you pass in to this method must have the correct buffer target for the active graphics API. Use the BatchBufferTarget query to find out which buffer target you should use. If the target is [BatchBufferTarget.RawBuffer](/engine/6000.0/script-reference/unityengine/rendering/batchbuffertarget/rawbuffer.md) then both bufferOffset and windowSize must be zero If the target is [BatchBufferTarget.ConstantBuffer](/engine/6000.0/script-reference/unityengine/rendering/batchbuffertarget/constantbuffer.md), then bufferOffset must be an integer multiple of the BatchRendererGroup.GetConstantBufferOffsetAlignment value (zero allowed), and windowSize must be less than or equal to the [BatchRendererGroup.GetConstantBufferMaxWindowSize](/engine/6000.0/script-reference/unityengine/rendering/batchrenderergroup/getconstantbuffermaxwindowsize.md) value. The combined value of bufferOffset and windowSize must be less than or equal to the size of the ConstantBuffer.

## AddBatch(NativeArray\<MetadataValue>, GraphicsBufferHandle, uint, uint)

Create a draw command batch that shares a single set of metadata values and a single `GraphicsBuffer`.

```csharp
public BatchID AddBatch(NativeArray<MetadataValue> batchMetadata, GraphicsBufferHandle buffer, uint bufferOffset, uint windowSize)
```

### Parameters

**** (\[NativeArray\<MetadataValue>]\(/engine/6000.0/script-reference/unity/collections/nativearray1)): The metadata properties for this batch.**** (\[GraphicsBufferHandle]\(/engine/6000.0/script-reference/unityengine/graphicsbufferhandle)): The `GraphicsBufferHandle` of the `GraphicsBuffer` associated with this batch.**** (\[uint]\(https\://learn.microsoft.com/dotnet/api/system.uint32)): The offset amount of the data to bound within the Uniform Buffer Object (UBO). This value defaults to zero, which is the start of the buffer.  If this is a constant buffer, this value must be an integer multiple of BatchRendererGroup.GetConstantBufferOffsetAlignment.**** (\[uint]\(https\://learn.microsoft.com/dotnet/api/system.uint32)): Amount of data in the buffer to be bound, starting from the bufferOffset value. Defaults to zero. If this is a constant buffer, this value must be less or equal to [BatchRendererGroup.GetConstantBufferMaxWindowSize](/engine/6000.0/script-reference/unityengine/rendering/batchrenderergroup/getconstantbuffermaxwindowsize.md).

### Returns

| Type                                                                        | Description                        |
| --------------------------------------------------------------------------- | ---------------------------------- |
| [BatchID](/engine/6000.0/script-reference/unityengine/rendering/batchid.md) | ID of the batch Unity has created. |

### Remarks

Every buffer you pass in to this method must have the correct buffer target for the active graphics API. Use the BatchBufferTarget query to find out which buffer target you should use. If the target is [BatchBufferTarget.RawBuffer](/engine/6000.0/script-reference/unityengine/rendering/batchbuffertarget/rawbuffer.md) then both bufferOffset and windowSize must be zero If the target is [BatchBufferTarget.ConstantBuffer](/engine/6000.0/script-reference/unityengine/rendering/batchbuffertarget/constantbuffer.md), then bufferOffset must be an integer multiple of the BatchRendererGroup.GetConstantBufferOffsetAlignment value (zero allowed), and windowSize must be less than or equal to the [BatchRendererGroup.GetConstantBufferMaxWindowSize](/engine/6000.0/script-reference/unityengine/rendering/batchrenderergroup/getconstantbuffermaxwindowsize.md) value. The combined value of bufferOffset and windowSize must be less than or equal to the size of the ConstantBuffer.
