# BeginScopedSubPass

> Schedules the beginning of a new sub pass within a render pass. If you call this in a using-statement, Unity executes EndSubPass automatically when exiting the using-block. Render passes can never be standalone, they must always contain at least one sub pass. Only one sub pass can be active at any time.

## Definition

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

## BeginScopedSubPass(NativeArray\<int>, NativeArray\<int>, bool, bool)

Schedules the beginning of a new sub pass within a render pass. If you call this in a using-statement, Unity executes EndSubPass automatically when exiting the using-block. Render passes can never be standalone, they must always contain at least one sub pass. Only one sub pass can be active at any time.

```csharp
public ScopedSubPass BeginScopedSubPass(NativeArray<int> colors, NativeArray<int> inputs, bool isDepthReadOnly, bool isStencilReadOnly)
```

### Parameters

**** (\[NativeArray\<int>]\(/engine/6000.6/script-reference/unity/collections/nativearray1)): Array of attachments to be used as the color render targets in this sub pass. These are specificed as indices into the array passed to [ScriptableRenderContext.BeginRenderPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginrenderpass.md). The values in the array are copied immediately.**** (\[NativeArray\<int>]\(/engine/6000.6/script-reference/unity/collections/nativearray1)): Array of attachments to be used as input attachments in this sub pass. These are specificed as indices into the array passed to [ScriptableRenderContext.BeginRenderPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginrenderpass.md). The values in the array are copied immediately.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): If true, the depth attachment is read-only in this sub pass. Some renderers require this in order to be able to use the depth attachment as input.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): If true, the stencil attachment is read-only in this sub pass. Some renderers require this in order to be able to use the stencil attachment as input.

### Returns

| Type                                                                                    | Description |
| --------------------------------------------------------------------------------------- | ----------- |
| [ScopedSubPass](/engine/6000.6/script-reference/unityengine/rendering/scopedsubpass.md) |             |

### Remarks

This method does the same as [ScriptableRenderContext.BeginSubPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginsubpass.md), but it will return an *IDisposable* that can be used in a *using*-statement, and so it is not necesssary to manually call [ScriptableRenderContext.EndSubPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/endsubpass.md).

Additional Resources: [ScriptableRenderContext.BeginScopedRenderPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginscopedrenderpass.md).

## BeginScopedSubPass(NativeArray\<int>, NativeArray\<int>, bool)

Schedules the beginning of a new sub pass within a render pass. If you call this in a using-statement, Unity executes EndSubPass automatically when exiting the using-block. Render passes can never be standalone, they must always contain at least one sub pass. Only one sub pass can be active at any time.

```csharp
public ScopedSubPass BeginScopedSubPass(NativeArray<int> colors, NativeArray<int> inputs, bool isDepthStencilReadOnly = false)
```

### Parameters

**** (\[NativeArray\<int>]\(/engine/6000.6/script-reference/unity/collections/nativearray1)): Array of attachments to be used as the color render targets in this sub pass. These are specificed as indices into the array passed to [ScriptableRenderContext.BeginRenderPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginrenderpass.md). The values in the array are copied immediately.**** (\[NativeArray\<int>]\(/engine/6000.6/script-reference/unity/collections/nativearray1)): Array of attachments to be used as input attachments in this sub pass. These are specificed as indices into the array passed to [ScriptableRenderContext.BeginRenderPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginrenderpass.md). The values in the array are copied immediately.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): If true, both depth and stencil attachments are read-only in this sub pass. Some renderers require this in order to be able to use the depth and stencil attachments as inputs.

### Returns

| Type                                                                                    | Description |
| --------------------------------------------------------------------------------------- | ----------- |
| [ScopedSubPass](/engine/6000.6/script-reference/unityengine/rendering/scopedsubpass.md) |             |

### Remarks

This method does the same as [ScriptableRenderContext.BeginSubPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginsubpass.md), but it will return an *IDisposable* that can be used in a *using*-statement, and so it is not necesssary to manually call [ScriptableRenderContext.EndSubPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/endsubpass.md).

Additional Resources: [ScriptableRenderContext.BeginScopedRenderPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginscopedrenderpass.md).

## BeginScopedSubPass(NativeArray\<int>, bool, bool)

Schedules the beginning of a new sub pass within a render pass. If you call this in a using-statement, Unity executes EndSubPass automatically when exiting the using-block. Render passes can never be standalone, they must always contain at least one sub pass. Only one sub pass can be active at any time.

```csharp
public ScopedSubPass BeginScopedSubPass(NativeArray<int> colors, bool isDepthReadOnly, bool isStencilReadOnly)
```

### Parameters

**** (\[NativeArray\<int>]\(/engine/6000.6/script-reference/unity/collections/nativearray1)): Array of attachments to be used as the color render targets in this sub pass. These are specificed as indices into the array passed to [ScriptableRenderContext.BeginRenderPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginrenderpass.md). The values in the array are copied immediately.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): If true, the depth attachment is read-only in this sub pass. Some renderers require this in order to be able to use the depth attachment as input.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): If true, the stencil attachment is read-only in this sub pass. Some renderers require this in order to be able to use the stencil attachment as input.

### Returns

| Type                                                                                    | Description |
| --------------------------------------------------------------------------------------- | ----------- |
| [ScopedSubPass](/engine/6000.6/script-reference/unityengine/rendering/scopedsubpass.md) |             |

### Remarks

This method does the same as [ScriptableRenderContext.BeginSubPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginsubpass.md), but it will return an *IDisposable* that can be used in a *using*-statement, and so it is not necesssary to manually call [ScriptableRenderContext.EndSubPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/endsubpass.md).

Additional Resources: [ScriptableRenderContext.BeginScopedRenderPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginscopedrenderpass.md).

## BeginScopedSubPass(NativeArray\<int>, bool)

Schedules the beginning of a new sub pass within a render pass. If you call this in a using-statement, Unity executes EndSubPass automatically when exiting the using-block. Render passes can never be standalone, they must always contain at least one sub pass. Only one sub pass can be active at any time.

```csharp
public ScopedSubPass BeginScopedSubPass(NativeArray<int> colors, bool isDepthStencilReadOnly = false)
```

### Parameters

**** (\[NativeArray\<int>]\(/engine/6000.6/script-reference/unity/collections/nativearray1)): Array of attachments to be used as the color render targets in this sub pass. These are specificed as indices into the array passed to [ScriptableRenderContext.BeginRenderPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginrenderpass.md). The values in the array are copied immediately.**** (\[bool]\(https\://learn.microsoft.com/dotnet/api/system.boolean)): If true, both depth and stencil attachments are read-only in this sub pass. Some renderers require this in order to be able to use the depth and stencil attachments as inputs.

### Returns

| Type                                                                                    | Description |
| --------------------------------------------------------------------------------------- | ----------- |
| [ScopedSubPass](/engine/6000.6/script-reference/unityengine/rendering/scopedsubpass.md) |             |

### Remarks

This method does the same as [ScriptableRenderContext.BeginSubPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginsubpass.md), but it will return an *IDisposable* that can be used in a *using*-statement, and so it is not necesssary to manually call [ScriptableRenderContext.EndSubPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/endsubpass.md).

Additional Resources: [ScriptableRenderContext.BeginScopedRenderPass](/engine/6000.6/script-reference/unityengine/rendering/scriptablerendercontext/beginscopedrenderpass.md).
