# beginFrameRendering

> Delegate that you can use to invoke custom code at the start of RenderPipeline.Render.

## Definition

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

> **Warning:**
>
> **Deprecated.** beginFrameRendering is deprecated. Use beginContextRendering instead. #from 2023.3

```csharp
public static event Action<ScriptableRenderContext, Camera[]> beginFrameRendering
```

### Remarks

This delegate is replaced by [RenderPipelineManager.beginContextRendering](/engine/6000.5/script-reference/unityengine/rendering/renderpipelinemanager/begincontextrendering.md). It is supported and documented for backwards compatibility only.

When Unity calls [RenderPipeline.BeginFrameRendering](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline/beginframerendering.md), it executes the methods in this delegate's invocation list. If you are writing a custom Scriptable Render Pipeline, you can call this method at the start of [RenderPipeline.Render](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline/render.md).

Using this delegate causes heap allocations. Using [RenderPipeline.BeginContextRendering](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline/begincontextrendering.md) and the [RenderPipelineManager.beginContextRendering](/engine/6000.5/script-reference/unityengine/rendering/renderpipelinemanager/begincontextrendering.md) delegate provide the same functionality, but without unnecessary heap allocations. You should use them instead.

Additional Resources: [RenderPipeline.BeginFrameRendering](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline/beginframerendering.md), [RenderPipeline.EndFrameRendering](/engine/6000.5/script-reference/unityengine/rendering/renderpipeline/endframerendering.md), [RenderPipelineManager.endFrameRendering](/engine/6000.5/script-reference/unityengine/rendering/renderpipelinemanager/endframerendering.md)
