Version: 6000.3
语言: 中文
URP 中的可脚本渲染器功能简介
将可编写脚本的渲染器功能应用于URP中的特定摄像机类型

在URP中创建可编写脚本的渲染器功能

使用ScriptableRenderFeature可编写脚本的渲染通道插入通用的API渲染管线(Render Pipeline) 获取场景内容并将其显示在屏幕上的一系列作。Unity 允许您从预构建的渲染管道中进行选择,或编写自己的渲染管道。更多信息
请参阅术语表
(URP) 帧渲染循环。

按着这些次序:

  1. 创建新的 C# 脚本。

  2. 将代码替换为继承自ScriptableRendererFeature类。

    using UnityEngine;
    using UnityEngine.Rendering.Universal;
    
    public class MyRendererFeature : ScriptableRendererFeature
    {
    }
    
  3. 在类中,覆盖Create方法。例如:

    public override void Create()
    {
    }
    

    URP 调用Create方法:

    • 首次加载可脚本渲染器功能时。
    • 启用或禁用可编写脚本渲染器功能时。
    • 当您更改检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
      请参阅术语表
      窗口。
  4. Create方法,创建可编写脚本渲染通道的实例,并将其注入渲染器。

    例如,如果你有一个名为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. 覆盖AddRenderPasses方法。

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

    URP 调用AddRenderPasses方法每帧一次,每个相机在场景中创建特定视点图像的组件。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
    请参阅术语表
    .

  6. 使用EnqueuePassAPI 将可编写脚本的渲染通道注入到帧渲染循环中。

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

现在,你可以将可编写脚本的渲染器功能添加到活动的URP资产。有关更多信息,请参阅如何将渲染器功能添加到渲染器

有关完整示例,请参阅完整的可脚本渲染器功能示例

URP 中的可脚本渲染器功能简介
将可编写脚本的渲染器功能应用于URP中的特定摄像机类型