Version: Unity 6 (6000.0)
Language : English
Introduction to Scriptable Renderer Features in URP
Apply a Scriptable Renderer Feature to a specific camera type in URP

Create a Scriptable Renderer Feature in URP

Use the ScriptableRenderFeature API to insert a Scriptable Render Pass into the Universal Render PipelineA series of operations that take the contents of a Scene, and displays them on a screen. Unity lets you choose from pre-built render pipelines, or write your own. More info
See in Glossary
(URP) frame rendering loop.

Follow these steps:

  1. Create a new C# script.

  2. Replace the code with a class that inherits from the ScriptableRendererFeature class.

    using UnityEngine;
    using UnityEngine.Rendering.Universal;
    
    public class MyRendererFeature : ScriptableRendererFeature
    {
    }
    
  3. In the class, override the Create method. For example:

    public override void Create()
    {
    }
    

    URP calls the Create methods on the following events:

    • When the Scriptable Renderer Feature loads the first time.
    • When you enable or disable the Scriptable Renderer Feature.
    • When you change a property in the InspectorA Unity window that displays information about the currently selected GameObject, asset or project settings, allowing you to inspect and edit the values. More info
      See in Glossary
      window of the Renderer Feature.
  4. In the Create method, create an instance of your Scriptable Render Pass, and inject it into the renderer.

    For example, if you have a Scriptable Render Pass called RedTintRenderPass:

    // Define an instance of the Scriptable Render Pass
    private RedTintRenderPass redTintRenderPass;
    
    public override void Create()
    {
        // Create an instance of the Scriptable Render Pass
        redTintRenderPass = new RedTintRenderPass();
    
        // Inject the render pass after rendering the skybox
        redTintRenderPass.renderPassEvent = RenderPassEvent.AfterRenderingSkybox;
    }
    
  5. Override the AddRenderPasses method.

    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
    {
    }
    

    URP calls the AddRenderPasses method every frame, once for each cameraA component which creates an image of a particular viewpoint in your scene. The output is either drawn to the screen or captured as a texture. More info
    See in Glossary
    .

  6. Use the EnqueuePass API to inject the Scriptable Render Pass into the frame rendering loop.

    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
    {
        renderer.EnqueuePass(redTintRenderPass);
    }
    

You can now add the Scriptable Renderer Feature to the active URP asset. Refer to How to add a Renderer Feature to a Renderer for more information.

Example

The following is the complete example code of a Scriptable Renderer Feature, using a Scriptable Render Pass called RedTintRenderPass.

using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.Rendering.Universal;

public class MyRendererFeature : ScriptableRendererFeature
{
    private RedTintRenderPass redTintRenderPass;

    public override void Create()
    {
        redTintRenderPass = new RedTintRenderPass();
        redTintRenderPass.renderPassEvent = RenderPassEvent.AfterRenderingSkybox;
    }

    public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData)
    {
        renderer.EnqueuePass(redTintRenderPass);
    }
}
Introduction to Scriptable Renderer Features in URP
Apply a Scriptable Renderer Feature to a specific camera type in URP