Version: 2019.4
  • C#


Suggest a change


Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.


Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.




protected void Render(Rendering.ScriptableRenderContext context, Camera[] cameras);


Entry point method that defines custom rendering for this RenderPipeline.

This method is is the entry point to the Scriptable Render Pipeline (SRP). This functionality is not compatible with the Built-in Render Pipeline.

Unity calls this method automatically. In a standalone application, Unity calls this method once per frame to render the main view, and once per frame for each manual call to Camera.Render. In the Unity Editor, Unity calls this method once per frame for each Scene view or Game view that is visible, once per frame if if the Scene camera preview is visible, and once per frame for each manual call to Camera.Render.

If you are using the Universal Render Pipeline (URP) or the High Definition Render Pipeline (HDRP), you can use the RenderPipelineManager.beginFrameRendering, RenderPipelineManager.beginCameraRendering, RenderPipelineManager.endCameraRendering and RenderPipelineManager.endFrameRendering delegates to call your custom code at defined points during this method. If you are writing a custom SRP, you can either add code here directly, or call the delegates yourself using RenderPipeline.BeginFrameRendering, RenderPipeline.BeginCameraRendering, RenderPipeline.EndCameraRendering and RenderPipeline.EndFrameRendering.

The following example code shows how to implement this method in a custom SRP:

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

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

override protected void Render(ScriptableRenderContext context, Camera[] cameras) { // This is where you can write custom rendering code. Customize this method to customize your SRP. // Create and schedule a command to clear the current render target var cmd = new CommandBuffer(); cmd.ClearRenderTarget(true, true,; context.ExecuteCommandBuffer(cmd); cmd.Release(); // Tell the Scriptable Render Context to tell the graphics API to perform the scheduled commands context.Submit(); } }