# EndContextRendering(ScriptableRenderContext, List<Camera>)

> Calls the RenderPipelineManager.endContextRendering and RenderPipelineManager.endFrameRendering delegates.

## Definition

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

```csharp
protected static void EndContextRendering(ScriptableRenderContext context, List<Camera> cameras)
```

### Parameters

**** (\[ScriptableRenderContext]\(/engine/6000.7/script-reference/unityengine/rendering/scriptablerendercontext)): Context to use for rendering the cameras.**** (\[List\<Camera>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)): List of cameras currently being rendered.

### Remarks

Use the delegates that this method calls to implement functionality at the end of [RenderPipeline.Render](/engine/6000.7/script-reference/unityengine/rendering/renderpipeline/render.md).

In the Universal Render Pipeline (URP) and the High Definition Render Pipeline (HDRP), Unity calls this method automatically at the end of [RenderPipeline.Render](/engine/6000.7/script-reference/unityengine/rendering/renderpipeline/render.md). If you are writing a custom Scriptable Render Pipeline, you can call this method yourself in the same place. This functionality is not compatible with the Built-in Render Pipeline.

The delegates that this method calls work in the same way as one another, except that [RenderPipelineManager.endFrameRendering](/engine/6000.7/script-reference/unityengine/rendering/renderpipelinemanager/endframerendering.md) causes heap allocations and [RenderPipelineManager.endContextRendering](/engine/6000.7/script-reference/unityengine/rendering/renderpipelinemanager/endcontextrendering.md) does not. You should therefore use [RenderPipelineManager.endContextRendering](/engine/6000.7/script-reference/unityengine/rendering/renderpipelinemanager/endcontextrendering.md) to avoid unnecessary heap allocations and garbage collection.

This method replaces [RenderPipeline.EndFrameRendering](/engine/6000.7/script-reference/unityengine/rendering/renderpipeline/endframerendering.md). It does everything that method does, and in addition it calls the [RenderPipelineManager.endContextRendering](/engine/6000.7/script-reference/unityengine/rendering/renderpipelinemanager/endcontextrendering.md) delegate. If you are writing a custom Scriptable Render Pipeline, use this method instead of [RenderPipeline.EndFrameRendering](/engine/6000.7/script-reference/unityengine/rendering/renderpipeline/endframerendering.md).

The following code example demonstrates where to call this method if you are creating a custom Scriptable Render Pipeline:

```csharp
using UnityEngine;
using UnityEngine.Rendering;
using System.Collections.Generic;

public class ExampleRenderPipelineInstance : RenderPipeline
{
    public ExampleRenderPipelineInstance()
    {
    }

    override protected void Render(ScriptableRenderContext context, List<Camera> cameras)
    {
        // Put the rest of your Render method code here

        // Call the RenderPipelineManager.endContextRendering and RenderPipelineManager.endFrameRendering delegates
        EndContextRendering(context, cameras);
    }

    // Older version of the Render function that can generate garbage, needed for backwards compatibility
    override protected void Render(ScriptableRenderContext context, Camera[] cameras)
    {
    }
}
```

Additional Resources: [RenderPipelineManager.endContextRendering](/engine/6000.7/script-reference/unityengine/rendering/renderpipelinemanager/endcontextrendering.md), [RenderPipelineManager.endFrameRendering](/engine/6000.7/script-reference/unityengine/rendering/renderpipelinemanager/endframerendering.md), [RenderPipeline.BeginContextRendering](/engine/6000.7/script-reference/unityengine/rendering/renderpipeline/begincontextrendering.md), [RenderPipelineManager.beginContextRendering](/engine/6000.7/script-reference/unityengine/rendering/renderpipelinemanager/begincontextrendering.md), [RenderPipelineManager.beginFrameRendering](/engine/6000.7/script-reference/unityengine/rendering/renderpipelinemanager/beginframerendering.md), Unity Manual: Scriptable Render Pipeline.
