Version: 2020.1
可编程渲染管线基础知识
在可编程渲染管线中调度和执行渲染命令

可编程渲染管线简介

本页说明 Unity 的可编程渲染管线 (SRP) 的工作原理,并介绍一些关键概念和术语。本页面上的信息适用于通用渲染管线 (URP)、高清渲染管线 (HDRP) 和基于 SRP 的自定义渲染管线。

可编程渲染管线是一个瘦 API 层,允许使用 C# 脚本来调度和配置渲染命令。Unity 将这些命令传递给它的低级图形架构,后者随后将指令发送给图形 API。

URP 和 HDRP 建立在 SRP 之上。您还可以在 SRP 之上创建自己的自定义渲染管线。

渲染管线资源和渲染管线实例

每个基于 SRP 的渲染管线都有两个关键的自定义元素:

  • 渲染管线资源是 Unity 项目中的资源,用于存储有关渲染管线的配置数据。
  • 渲染管线实例,它是继承自 RenderPipeline 的类。它的 Render 方法是 SRP 的主要入口点。

有关在自定义渲染管线中创建这些元素的信息,请参阅创建渲染管线资源和渲染管线实例

ScriptableRenderContext

ScriptableRenderContext 是一个类,用作渲染管线中的自定义 C# 代码与 Unity 的低级图形代码之间的接口。

使用 ScriptableRenderContext API 可以调度和执行渲染命令。有关信息,请参阅在可编程渲染管线中调度和执行渲染命令

入口点和回调

使用 SRP 时,使用它们可让 Unity 在特定时间调用您的 C# 代码。

  • The Render method of the class that inherits from RenderPipeline is the main entry point to the SRP. If you are writing a custom render pipeline, this is where you should begin to write your code.

    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 ScriptRef: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 ScriptRef:Camera.Render.
  • The RenderPipelineManager class has the following events that you can subscribe to:
可编程渲染管线基础知识
在可编程渲染管线中调度和执行渲染命令