# Custom render pass workflow in URP A custom render pass is a way to change how the Universal Render Pipeline (URP) renders a scene or the objects within a scene. A custom render pass contains your own rendering code, which you add to the rendering pipeline at an injection point. To add a custom render pass, complete the following tasks: - [Create the code](#create-code) for a custom render pass using the Scriptable Render Pass API. - [Inject the custom render pass](#inject-pass) using the `RenderPipelineManager` API, or by [creating a Scriptable Renderer Feature](#create-srf) that you add to the URP Renderer. ## Create the code for a custom render pass Use the `ScriptableRenderPass` to create the code for a custom render pass. Refer to [Write a Scriptable Render Pass](write-a-scriptable-render-pass.md) for more information. ## Inject the custom render pass using the RenderPipelineManager API Unity raises a [beginCameraRendering](https://docs.unity3d.com/ScriptReference/Rendering.RenderPipelineManager-beginCameraRendering.html) event before it renders each active Camera in every frame. You can subscribe a method to this event, to execute your custom render pass before Unity renders the Camera. Refer to [Inject a render pass via scripting](../customize/inject-render-pass-via-script.md) for more information. ## Create a Scriptable Renderer Feature Scriptable Renderer Features control when and how the Scriptable Render Passes apply to a particular renderer or camera, and can also manage multiple Scriptable Render Passes at once. To create a Scriptable Renderer Feature, you do the following: * Create a Scriptable Renderer Feature using the API. * Add the Scriptable Renderer Feature to the Universal Renderer asset, so it's included in the rendering pipeline. * Enqueue your custom render pass in the Scriptable Renderer Feature. Refer to [Inject a pass using a Scriptable Renderer Feature](scriptable-renderer-features/inject-a-pass-using-a-scriptable-renderer-feature.md) for more information.