从内置转为通用渲染管线,看这个教程就够了

来源:Unity官方平台


随着 Unity 支持的平台数量不断增加,内置渲染管线的局限也日益明显。2018 年,Unity 发布两款新的可编程渲染管线 (SRP):HDRP 和 URP。用户可利用这些 SRP 自定义对象剔除、绘制以及帧的后期处理,无需使用 C++ 等编程语言。还可打造自己的完全自定义 SRP。

SRP 架构旨在提供高灵活度和丰富的自定义空间,增强所有支持平台和未来平台的性能,并快速迭代以释放你的创意潜能。

Unity 中文课堂发布了最新的 URP 教程,帮助大家从内置渲染管线升级为可编程渲染管线。欢迎进入 learn.u3d.cn,搜索“通用渲染管线”即可找到本文。


历经几年的专注开发,URP 技术现已十分可靠,可以投入生产。本指南将助你利用其优势,成功开发游戏。

从内置渲染管线到 SRP

可编程渲染管线可以支持高效的多平台工作流,相比于内置渲染管线有以下优势:

  • 适用于多数硬件平台的智能且可靠的比例缩放,涵盖高端至低端设备
  • 可以用 C#((而非 C++)语言自定义渲染流程使用 C# 语言意味着无需为每次更改编译新的可执行文件
  • 灵活支持架构演进
  • 灵活创建在多个平台都性能出色的清晰图形

下图展示了 SRP 的运作方式。使用 C# 语言控制并自定义渲染通道和渲染控制,以及能够用着色器视图等便于美工使用的工具创建的 HLSL 着色器。甚至可以用着色器访问低级 API 和引擎层抽象对象。

用于可编程渲染管线的新图形可编程模型

高级用户可从头开始创建新的 SRP 或修改 HDRP 或 URP。图形堆栈是开源的,可在 GitHub 中使用。

https://github.com/Unity-Technologies/Graphics

未来,URP 将取代内置渲染管线,成为 Unity 中的默认渲染管线。具体日期待定,至少在 2022 年的下一个发布周期内,内置渲染管线仍为可用选项。

通过以下链接,了解内置渲染管线与 URP 的全方位功能对比情况。
https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@13.0/manual/universalrp-builtin-feature-comparison.html

转换流程

此章节将介绍用 URP 启动新项目或将现有项目转换为 URP 的步骤。

如何打开新的 URP 项目

通过 Unity Hub 使用 URP 打开新项目。点击新项目(New),确认窗口顶端显示的 Unity 版本为 2021.2 或更新版本。为项目选择名称和地点,选择 3D (URP) 模板或 3D 示例场景 (URP)(3D Sample Scene (URP)),然后点击创建(Create)。

用 URP 模板创建新项目,首次创建时可能需要下载模板

注:模板可确保项目使用线性色彩空间,这是准确计算照明的必备要求。

3D 示例场景 (URP) 项目模板中包含示例场景

你可通过 文件(File)> 新场景(New Scene)创建新场景,其中包含摄像机和定向光等基本 GameObjects,甚至还能用预填充对象创建自己的场景模板。如需了解详情,请阅览 URP 场景模板文档。

https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@12.1/manual/scene-templates.html

显示场景模板的新场景对话

转至编辑(Edit)> 项目设置(Project Settings),打开图形(Graphics)面板。如需在编辑器内使用 URP,必须从可编程渲染管线设置(Scriptable Render Pipeline Settings)中选择一个 URP 资源(URP Asset)。URP 资源可控制项目的全局渲染和质量设置,并创建渲染管线实例。同时,渲染管线实例中包含中间资源和渲染管线实施。

URP 资源默认选择通用 RP-高分辨率(UniversalRP-HighFidelity),但可将其切换为通用 RP-平衡(UniversalRP-Balanced)或通用 RP-性能(UniversalRP-Performant)。

项目设置中的图形面板

本指南将在后续章节中详细介绍如何调整 URP 资源设置。

如需打开清洁项目,可使用 3D (URP) 模板,若想删除示例场景 (URP) 模板中的示例场景,可删除 ExampleAssets 和教程信息文件夹(Tutorial Info folders)以及设置(Settings)> SampleSceneProfile.asset,场景(Scenes)> SampleScene.unity 和场景(Scenes)> SampleSceneLightingSettings. lightin

如何将 URP 添加到现有的内置渲染管线项目中

重要提示:务必先利用源控制进行项目备份,然后再执行本章节的以下步骤。此操作将会转换资源,Unity 不提供撤销选项。若使用源控制功能,可在必要时恢复至之前的资源版本。

升级现有的内置渲染管线项目时,需要为项目添加 URP 资源包(URP package),因为 Unity 2021.2 或 2021 LTS 不含此资源。

显示 Unity 注册表资源包的资源包管理器

转至窗口(Window)> 资源包管理器(Package Manager),点击资源包(Packages)下拉菜单并将 URP 添加到项目中。务必选择 Unity 注册表(Unity Registry),然后选择通用 RP(Universal RP)。如果你开发使用的计算机尚未安装 URP 资源包,点击窗口右下角的下载(Download)。下载结束后,点击安装(Install)。

通过资源包管理器安装 URP

如需创建 URP 资源,右击项目(Project)窗口并选择创建(Create)> 渲染(Rendering)> URP 资源(含通用渲染器)(URP Asset (with Universal Renderer))。为资源命名。

创建 URP 资源

切记,若用通用渲染管线或 3D (URP) 模板创建新项目,项目中已包含这些可用的 URP 资源和 URP 资源包。

URP 不是创建单一 URP 资源,而是使用两个文件,每个文件都有一个资源扩展名。

URP 中的两个资源,一个用于 URP 设置,另一个用于渲染器数据

其中一个资源的文件名以 _Renderer 结尾;在以下示例中,它被称为通用 RP_渲染器(Universal RP_Renderer)。这是渲染器数据资源(Renderer Data Asset),你可用其筛选渲染器的工作层,并拦截渲染管线,以自定义场景的渲染方式。从而创建优质效果。参阅管线回调章节,了解详情。

此外,UniversalRP_Renderer 控制 URP 的高级渲染逻辑和通道。它支持前向和延迟路径,以及启用 2D 灯光、2D 阴影和 灯光混合样式等功能的 2D 渲染器。甚至还可扩展 URP,创建你自己的渲染器。

UniversalRP_Renderer 数据资源检查器

另一个 URP 资源用于控制质量、光照、阴影和后期处理设置。可使用不同的 URP 资源来控制质量设置,本章节后续部分阐明了此流程。此设置资源通过渲染器列表链接至渲染器数据资源。创建新 URP 资源时,设置资源将提供一个含单一项的渲染器列表,即同时创建的渲染器数据资源,并设为默认渲染器。你可为此列表添加其他渲染器数据资源。

默认渲染器可用于所有摄像机,包括场景视图。从渲染器列表中选择其他渲染器,摄像机可以覆盖默认渲染器。可根据需要利用脚本完成上述操作。

检查器中的 URP 资源

虽按这些步骤创建 URP 资源,但场景或游戏视图中的开放场景仍使用内置渲染管线。必须完成最后一步,才能切换至 URP。转至编辑(Edit)> 项目设置(Project Settings),打开图形(Graphics)面板。点击无(渲染管线资源)(None (Render Pipeline Asset))旁的小圆点。在打开的面板中,选择通用 RP(UniversalRP)。

选择可编程渲染管线资源

屏幕中会弹出一条与切换相关的警告信息,忽视警告,点击继续(Continue)。

由于项目中尚无内容,因此几乎立即就能完成渲染管线的切换。你现已准备好使用 URP。

转换现有项目的场景

完成上述步骤后,你会看到精美的场景突然变成品红色。这是因为 URP 不支持内置渲染管线项目中材质使用的着色器。幸运的是,我们可以修复场景,使其恢复原始质量。


转至窗口(Window)> 渲染(Rendering)> 渲染管线转换器(Render Pipeline Converter)。2D 项目选择从内置转至 2D (URP)(Convert Built-In to 2D (URP)),3D 项目选择从内置转至 URP(Built-In to URP)。

假设你的项目为 3D 项目,你需要选择适当的转换器:

  • 渲染设置:选择此项可创建多个渲染管线设置资源,以尽可能匹配内置渲染管线质量设置。从而更高效地测试不同的质量水平。请参阅内置渲染管线和 URP 质量选项对比章节,了解详情。
  • 材质升级:使用此项可将材质从内置渲染管线转换为 URP。
  • 动画片段转换器:它可转换动画片段。材质升级转换器完成后即开始运行。
  • 只读材质转换器:它能转换 Unity 项目中包含的预构建只读材质。它会给项目生成索引,然后创建临时 .index 文件。注意,这可能会耗费较长时间。

转换自定义着色器

自定义着色器不使用材质升级转换器进行转换。着色器和新工具章节列出了从自定义内置渲染管线着色器转换为 URP 的步骤。将自定义着色器更新至 URP 的最快方式通常是使用着色器视图。

共有六种不同的 URP 着色器:

  • 通用渲染管线/光照:这是基于物理渲染 (PBR) 的着色器,与内置标准着色器相似,可用于显示大多数现实材料。它支持所有标准着色器功能,包含金属和镜面工作流。
  • 通用渲染管线/简单光照:它采用 Blinn-Phong 光照模型,适合不用 PBR 工作流的低端移动设备或游戏。
  • 通用渲染管线/无光照:这是 GPU 性能着色器,不使用光照方程。
  • 通用渲染管线/地形/光照:它适合与地形工具资源包配合使用。
  • 通用渲染管线/粒子/光照:此粒子着色器采用 PBR 光照模型。
  • 通用渲染管线/粒子/无光照:此无光照粒子着色器的 GPU 占用率较低。

虽然简单光照会取代很多传统/移动着色器,但性能并不相同。传统/移动着色器仅部分评估光照,而简单光照会按 URP 资源的定义考量所有光线。

请参阅 URP 文档中的此表,了解每种 URP 着色器如何映射至其相应的内置渲染管线。
https://docs.unity3d.com/cn/Packages/com.unity.render-pipelines.universal@12.1/manual/upgrading-your-shaders.html

选择一或多个上述转换器,然后点击初始化转换器(Initialize Converters)。系统会扫描项目,并将需转换的资源添加到各转换器面板中。可用各面板中的复选框取消所选项,以限制转换。此时,点击转换资源(Convert Assets),开始转换流程。转换完成后,系统可能会要求你重新打开编辑器中处于活动状态的场景。


最新文章