# RenderStateBlock

> A set of values that Unity uses to override the GPU's render state.

## Definition

* **Type:** Struct
* **Namespace:** [UnityEngine.Rendering](/engine/6000.7/script-reference/unityengine/rendering.md)
* **Assembly:** UnityEngine.CoreModule
* **Implements:** [IEquatable\<RenderStateBlock>](https://learn.microsoft.com/dotnet/api/system.iequatable-1)

```csharp
public struct RenderStateBlock : IEquatable<RenderStateBlock>
```

## Remarks

When you call [ScriptableRenderContext.DrawRenderers](/engine/6000.7/script-reference/unityengine/rendering/scriptablerendercontext/drawrenderers.md), you can use this to override the render state for some or all of the geometry.

**Note:** You must set [RenderStateBlock.mask](/engine/6000.7/script-reference/unityengine/rendering/renderstateblock/mask.md) to tell Unity which parts of the render state to override to apply. For example, to apply the values in [RenderStateBlock.blendState](/engine/6000.7/script-reference/unityengine/rendering/renderstateblock/blendstate.md), [RenderStateBlock.mask](/engine/6000.7/script-reference/unityengine/rendering/renderstateblock/mask.md) must include [RenderStateMask.Blend](/engine/6000.7/script-reference/unityengine/rendering/renderstatemask/blend.md).

```csharp
using UnityEngine;
using UnityEngine.Rendering;

public class OverrideRenderStateExample
{
    ScriptableRenderContext scriptableRenderContext;

    // Placeholder data
    DrawingSettings exampleDrawingSettings;
    CullingResults exampleCullingResults = new CullingResults();
    FilteringSettings exampleFilteringSettings = new FilteringSettings();

    public void OverrideRenderState()
    {
        // Tell Unity how to override the render state when it draws the geometry.
        var stateBlock = new RenderStateBlock(RenderStateMask.Depth);
        stateBlock.depthState = new DepthState(true, CompareFunction.LessEqual);

        // Schedule the drawing operation.
        scriptableRenderContext.DrawRenderers(exampleCullingResults, ref exampleDrawingSettings, ref exampleFilteringSettings, ref stateBlock);

        // Perform all scheduled tasks, in the order that they were scheduled.
        scriptableRenderContext.Submit();
    }
}
```

Additional Resources: [ScriptableRenderContext.DrawRenderers](/engine/6000.7/script-reference/unityengine/rendering/scriptablerendercontext/drawrenderers.md), [RenderStateMask](/engine/6000.7/script-reference/unityengine/rendering/renderstatemask.md).

## Constructors

| Constructor                                                                                                                               | Description                                               |
| ----------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
| [RenderStateBlock(UnityEngine.Rendering.RenderStateMask)](/engine/6000.7/script-reference/unityengine/rendering/renderstateblock/ctor.md) | Creates a new render state block with the specified mask. |

## Properties

| Property                                                                                                       | Description                                                                                                |
| -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| [blendState](/engine/6000.7/script-reference/unityengine/rendering/renderstateblock/blendstate.md)             | Specifies the new blend state.                                                                             |
| [depthState](/engine/6000.7/script-reference/unityengine/rendering/renderstateblock/depthstate.md)             | Specifies the new depth state.                                                                             |
| [mask](/engine/6000.7/script-reference/unityengine/rendering/renderstateblock/mask.md)                         | Specifies which parts of the GPU's render state to override.                                               |
| [rasterState](/engine/6000.7/script-reference/unityengine/rendering/renderstateblock/rasterstate.md)           | Specifies the new raster state.                                                                            |
| [stencilReference](/engine/6000.7/script-reference/unityengine/rendering/renderstateblock/stencilreference.md) | The value to be compared against and/or the value to be written to the buffer, based on the stencil state. |
| [stencilState](/engine/6000.7/script-reference/unityengine/rendering/renderstateblock/stencilstate.md)         | Specifies the new stencil state.                                                                           |
