您想找什么?
E-Book

如何将内置渲染管道(Built-in Render Pipeline)项目移至通用渲染管道(Universal Render Pipeline,URP)?

Jul 31, 2024|12 最低
幻想王国》--采用 Unity 制作,Synty Studios 提供资产
此页面为机器翻译。如需查看原文以确保准确性并作为权威参考,

通用渲染管道(URP)是Unity 6 中的默认渲染管道。在本指南中,我们将解释将 URP 设为默认设置的原因,介绍可脚本化渲染管道 (SRP) 的主要功能和优势,分享工作室将其项目转移到 URP 的实例,并逐步解释如何在您的项目中也这样做。

要深入了解 URP,请查看完整的电子书《高级创作者 URP 入门》。

渲染的演变:从内置渲染管道到可编写脚本的渲染管道

平台影响力是 Unity 的最大优势之一。几乎所有游戏工作室的理想都是一次性制作一款游戏,然后高效地部署到他们选择的任何平台,从高端 PC 到低端 Mobilive。

内置渲染管道是为 Unity 支持的所有平台开发的交钥匙解决方案。它提供了多种图形功能,可方便地与前向和延迟渲染路径一起使用。

不过,随着 Unity 不断增加对更多平台的支持,我们发现内置渲染管道存在以下限制:

  • 大部分代码用 C++ 编写,无法修改,因此是一个黑盒系统。
  • 渲染流程和渲染传递都是预结构化的。
  • 渲染算法是硬编码。
  • 不受约束的定制使其难以在所有平台上实现良好的性能。
  • 它在渲染代码中公开回调,以触发管道中的同步点。这些回调可防止多线程渲染优化,通过调用 C#,可在帧中的任意点动态改变注入状态。
  • 要缓存数据以管理用户注入的持久性状态非常困难。

解决方案可编写脚本的渲染管道

高清渲染管道(HDRP)和 URP 都是可编写脚本的渲染管道(SRP)。Unity 的 SRP 是为支持高效的多平台工作流程而开发的:

  • 智能、可靠的扩展功能,适用于从高端设备到低端设备的最多硬件平台
  • 能够使用 C# 而不是 C++ 自定义渲染过程,这意味着每次更改都无需编译新的可执行文件
  • 支持架构演变的灵活性
  • 创建清晰图形的能力,可在多个平台上运行

下图说明了 SRP 的工作原理。它们使用 C# 来控制和自定义渲染通道和渲染控制,以及可使用Shader Graph 等艺术家友好工具创建的 HLSL 着色器。着色器甚至可以让你访问低级 API 和引擎层抽象。

可编写脚本的渲染管线的新图形可编程模型
可编写脚本的渲染管线的新图形可编程模型

高级开发人员可以从头开始创建一个新的 SRP,或修改 URP 或 HDRP。图形栈是开源的,可在GitHub 上使用。

虽然这两种 SRP 都具有独特的优势,但 URP 的设计旨在实现最大的平台覆盖范围,因此您可以将美观的图形带到任何地方。让我们仔细看看。

Unity 的 URP 样本、《快乐收获》、《绿洲》和《宝石猎人比赛
最近的 URP 示例项目:快乐收获》/《花园》/《宝石猎人》比赛

将 Unity 项目移至 URP 的 6 个理由

  1. URP 适合各种技能水平的人使用。

    美工人员和技术人员都可以对 URP 进行配置,从而为原型设计和完善渲染技术提供更大的灵活性,以便进行完整的游戏制作。

  2. URP 具有可扩展性和可定制性。

    URP 允许你修改现有功能,并通过新功能扩展管道,是高级用户(包括资产商店和第三方软件包创建者、经验丰富的开发人员和专业团队)的可靠选择。

    虽然出于性能考虑,底层渲染 API 是用 C++ 编写的,但 URP 开发人员可以编写一个简单的 C# 脚本,在渲染流水线期间调用,从而在不牺牲性能的情况下实现高级定制。

  3. URP 提供多种渲染选项。

    URP 提供了一个通用渲染器,支持正向、正向+延迟渲染路径,还提供了一个2D 渲染器

    您可以使用附加功能和可编写脚本的渲染通道来扩展这些渲染器。

    渲染对象功能可用于在渲染管道的不同事件中渲染指定图层蒙版中的对象。在渲染这些对象时,它还允许你覆盖材质和其他渲染状态,这样就可以在不编写代码的情况下自定义渲染。

    URP 可通过自定义渲染器进行扩展,以满足特定需求。Unity 6 引入了 渲染图,这是一个可以让您访问和操作用于渲染帧的各种缓冲区的工具,使用渲染器功能工作流意味着可以在渲染管道的任何阶段添加该工具。

  4. URP 增强了 2D 游戏的开发能力。

    URP 具有优化的性能和灵活性,是移动平台和高端平台的理想选择。它支持高级 Lighting、Shadows 和 Post Processing 效果,在不影响性能的情况下增强了2D 游戏的视觉质量。

    此外,URP 的自定义渲染设置和着色器功能可让您对游戏的外观进行微调,使其看起来更精致、更专业。这使得 URP 成为制作视觉效果好、运行流畅的 2D 游戏的重要工具。

  5. URP 兼容艺术家的最新技术。

    URP 支持最新的艺术家友好工具,如Shader GraphVFX Graph渲染调试器

  6. 使用 URP 可以获得更好的性能。

    URP 在设计之初就考虑到了性能问题,它拥有多种工具,可在各种设备上实现保真度和帧速率之间的平衡。

    - URP 可以非常高效地评估实时照明。在前向渲染中,它会一次性评估所有照明。Forward+ 在标准 Forward 渲染的基础上进行了改进,对灯光进行了空间删减,而不是按物体进行删减。这样可以增加用于渲染画面的灯光总数。在延迟渲染中,它支持本地 RenderPass API,允许将 G-buffer 和光照传递合并为一个渲染传递。

    - URP 可以更有效地利用移动设备上的磁贴内存,从而降低功耗,延长电池寿命,并因此延长游戏时间。

    - URP 配备了集成的 Post Processing 堆栈,与内置渲染管道相比,URP 可以实现更好的性能。使用 Volume 框架,无需编写任何代码,即可创建依赖于摄像机位置的 Post Processing 效果。

    - Unity 6 预览版引入了多种 URP 更新,包括绘制网格时对 CPU 和 GPU 的改进;确保减少绘制调用并改进深度处理方式的SRP Batcher;以及可以显著减少某些场景绘制调用的 GPU 驻留绘制器和 GPU 遮挡剔除。

    虽然现在大多数 Unity 项目都是基于 URP 或 HDRP 构建的,但内置渲染管道在 Unity 6 中仍然可用。

将内置渲染管道项目转移到 URP 的 3 个工作室

克鲁格互动 -合成器骑士

Kluge Interactive 推出沉浸式节奏游戏 合成器骑士于 2019 年在 Steam VR 和 Meta Quest 上推出。此后,它又被移植到包括Apple Vision Pro 在内的众多设备上。为了帮助工作室在 VR 平台上接触到越来越多的玩家,与最新技术保持同步是必不可少的。

"Kluge Interactive 公司的技术制作人 AnnMarie Wirrel Bartholomaeus 解释说:"过去 12 到 18 个月的游戏开发工作主要是偿还技术债务,让我们的工具集更接近 2022 LTS。"我们已经从内置渲染管道转到通用渲染管道(URP),并改用 OpenXR 后端。这有助于我们在技术上更好地利用新技术"。

阅读完整的案例分析

Subcult Joint -饼干切割器

Subcult Joint's Cookie Cutter是一款可在 PC 和游戏机上运行的高能量、beat-em-up Metroidvania 游戏。游戏的所有资产都是采用传统技术手绘和动画制作的。为了给这些令人惊叹的角色和环境增添深度,Subcult Joint 需要完美的灯光设置--一种可以优化并跨平台保持性能的设置。

通过改用 URP 并将项目升级到最新的 Unity 版本,Subcult Joint 发掘出了Cookie Cutter的全部潜力。他们添加了 10,000 多个 2D 灯,并使用更新的 Memory Profiler 对其进行了优化。最新版本的 Sprite Atlases 使他们能够更轻松、更高效地将数百个手绘动画推送到不同的目标平台。

"Subcult Joint 创始人 Stefano Guglielmana 说:"游戏中的每一束光都能实时照亮我们的 Sprites,在角色、动画和环境之间营造出一种密度和凝聚力的感觉。"在黑暗的地方,人物被遮挡,而当他们暴露在饱和的、被污染的外部区域的天窗下时,则沐浴在光线中。我太喜欢这些细节了!"

阅读完整的案例分析

more8bit -凄凉之剑 DX

个人开发者路易斯-莫雷诺-希门尼斯(Luis Moreno Jimenez),又名 more8bit,最初推出了类似 8 位《灵魂》的 凄凉之剑于 2019 年登陆 Apple Arcade。随着游戏的成功,发行商 Devolver Digital 建议 more8bit 将这款游戏带到 PC 和游戏机上,以吸引更多玩家。more8bit 借此机会扩展了《Bleak Sword》的原始概念,而不是照搬移动版。

凄凉之剑 DX的视觉效果让人联想到复古的街机游戏。后期 Processing 效果包括带有脏污纹理的光晕、屏幕曲率、类似 VHS 的滤镜、景深效果等。对 Visuallive 来说,最大的挑战是既要保留《荒凉之剑》的视觉韵味,又要增强DX的图形效果,以利用额外的处理能力。他使用 Unity 的内置渲染管道和 Shader Graph 制作了大部分视觉特效,然后在 URP 中进行了优化。

"从内置到 URP 的转换非常顺利。more8bit 说:"我只花了一个周末,然后花了一个星期来解决小问题。

阅读完整的案例分析

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

在本节中,我们将向您展示如何将使用内置渲染管道的现有项目转换为 URP。

重要:在执行本节步骤之前,请务必使用源码控制备份项目。此过程将转换资产,Unity 不提供撤消选项。如果使用源码控制,必要时就能恢复到以前版本的资产。

如果要升级现有的内置渲染管道(Built-in Render Pipeline)项目,则需要将URP 软件包添加到项目中。

转到Windows > Package Manager,单击 "Packages 软件包)"下拉菜单,将 URP 添加到项目中。确保选择Unity 注册表,然后是Universal RP。如果开发计算机上尚未安装 URP 软件包,请单击窗口右下角的 "下载 "。下载完成后点击 "安装"。

通过 Package Manager 安装 URP
通过 Package Manager 安装 URP

要创建 URP 资产,请右键单击项目窗口,然后选择创建 > 渲染 > URP 资产(使用通用渲染器)。为资产命名。

创建 URP 资产
创建 URP 资产

请记住如果使用通用渲染管道或 3D (URP) 模板创建新项目,这些 URP 资产已经可以在项目中使用。URP 不创建单一的 URP Asset,而是使用两个文件,每个文件都有一个 Asset 扩展名。

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

其中一个名为UniversalRP_Renderer,一个渲染器数据资产,你可以用它来过滤渲染器工作的图层,并拦截渲染管道以自定义场景的渲染方式。这样,您就可以方便地创建高质量的效果。

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

UniversalRP_Renderer 数据资产的 Inspector
UniversalRP_Renderer 数据资产的 Inspector

另一个 URP Asset 用于控制 Quality Settings、Lighting、Shadows 和 Post Processing 的设置。您可以使用不同的 URP Assets 来控制质量 Settings。

该 "设置资产 "通过 "渲染器列表 "与 "渲染器数据资产 "相连。创建新的 URP 资产时,设置资产会有一个包含单个项目的渲染器列表,即同时创建的渲染器数据资产,并将其设置为默认值。您可以在此列表中添加其他渲染器数据资产。

默认渲染器用于所有摄像机,包括场景视图。摄像机可以从渲染器列表中选择另一种渲染器来覆盖默认渲染器。这可以根据需要使用脚本来完成。

Inspector 中的 URP 资产
Inspector 中的 URP 资产

尽管按照这些步骤创建了 URP 资产,但 "场景 "或 "游戏 "视图中打开的场景仍将使用内置渲染管道。您必须完成最后一个步骤才能切换到 URP:转到编辑 > 项目设置,然后打开图形面板。点击 "无"(渲染管道资产)旁边的小圆点。在打开的面板中,选择UniversalRP

此时会弹出有关切换的警告信息,但您可以直接按继续。由于项目中还没有内容,因此更改渲染管道几乎是瞬间完成的。现在就可以使用 URP 了。

转换现有项目的场景

完成上述步骤后,你会发现美丽的场景突然变成了洋红色。这是因为 URP 不支持内置渲染管道项目中材质使用的着色器。幸运的是,有一种方法可以将场景恢复到原始质量。

场景中的材质显示为洋红色,这是因为必须转换其基于内置渲染管道的着色器才能在 URP 中使用。
场景中的材质显示为洋红色,这是因为必须转换其基于内置渲染管道的着色器才能在 URP 中使用。

转到Windows > 渲染 > 渲染管道转换器。为 2D 项目选择 "将内置内容转换为 2D (URP)",或为 3D 项目选择 "将内置内容 转换 为 URP" 。假设您的项目是 3D 的,您需要选择适当的转换器

  • 渲染设置:选择此项可创建多个渲染管道设置资产,这些资产将尽可能匹配内置的渲染管道质量设置。这样就能更有效地测试不同的质量等级。
  • 材料升级:使用此功能可将内置渲染管道中的材质转换为 URP。
  • 动画剪辑转换器该功能可转换动画短片。材料升级转换器完成后,它就会运行。
  • 只读材料转换器:这会转换 Unity 项目中包含的预构建只读材料。它会为项目编制索引,并创建临时 .index 文件。请注意,这可能需要大量时间。

转换自定义着色器

自定义着色器不会使用材质升级转换器进行转换。使用Shader Graph通常是将自定义着色器更新为 URP 的最快方法。

有几种不同的 URP 着色器,包括

  • 通用渲染管道/灯光这种基于物理的渲染(PBR)着色器与内置标准着色器类似,可用于表现大多数现实生活中的材质。它支持所有标准着色器功能,同时支持金属和镜面工作流程。
  • 通用渲染管道/简单照明这使用的是 Blinn-Phong 模型,适合低端移动设备或不使用 PBR 工作流程的游戏。
  • Universal Render Pipeline/Baked Lit:将此着色器用于只需要通过光贴图光探针和 Unity 6 的自适应探针卷进行烘焙照明的风格化游戏或应用程序。该着色器不使用基于物理的着色,也没有实时光照,因此所有与实时相关的着色器关键字和变体都从着色器代码中删除,从而使计算速度更快。
  • Universal Render Pipeline/Complex Lit:复杂光源着色器包含光源着色器的所有功能,并增加了高级材质功能。该着色器中的某些功能可能会大大增加资源消耗,需要Unity 着色模型 4.5硬件。
  • 通用渲染管道/无照明:这是一种不使用光照方程的 GPU 性能着色器。
  • 通用渲染管道/地形/灯光:适合与 Terrain Tools 软件包一起使用。
  • 通用渲染管道/粒子/光:该粒子着色器使用 PBR 照明模型。
  • 通用渲染管道/微粒/非照明:这种未点亮的粒子着色器对 GPU 的影响较小。

虽然 Simple Lit 取代了许多传统或移动着色器,但性能却不尽相同。传统/Mobilive 着色器只对照明进行部分评估,而 Simple Lit 则会考虑 URP Asset 所定义的所有照明。

请参阅 URP 文档中的表格,了解每个 URP 着色器如何映射到其对应的内置渲染管道。

选择一个或多个上述转换器后,单击 "初始化转换器 "或 " 初始化并转换"。无论您选择哪个选项,项目都将被扫描,需要转换的资产将被添加到每个转换器面板中。

如果选择 "初始化转换器",则可以通过为每个项目提供的复选框取消选择项目来限制转换。在此阶段,单击 "转换资产"开始转换过程。

如果选择 "初始化并转换",转换器初始化后将自动开始转换。完成后,可能会要求您重新打开编辑器中的活动场景。

渲染管道转换器
渲染管道转换器

获取完整电子书

为高级 Unity 创作者学习通用渲染管道(URP)
为高级 Unity 创作者学习通用渲染管道(URP)(2022 LTS 版)

通过我们长达 140 页的综合指南,充分利用 URP、 面向高级 Unity 创作者的通用渲染管道介绍.本手册由 Unity 专家 Nik Lever 撰写,涵盖了在 Unity 中创建可缩放图形的最佳实践。亮点包括

  • URP 设置和转换器
  • 比较渲染管道和渲染路径
  • URP 中的照明
  • 着色器和流水线回调
  • 后期处理
  • 性能和优化技巧等

这些更新几乎贯穿了最新版指南的每一个部分,因此您可以信赖它,它将尽可能准确地匹配您在 Unity 2022 LTS 中使用 URP 的体验。

用你的方式创造你的游戏

利用 URP,您可以对游戏外观进行更多控制,同时最大限度地提高渲染性能。在今年晚些时候推出 Unity 6 后,这一 SRP 将变得比以往更加强大。创建细节丰富的场景并提升低分辨率画面的画质,而不会丢失视觉保真度,同时最大限度地减少在目标平台上进行手动优化的需要。

开始使用 Unity 6 预览版

如何将内置渲染管道(Built-in Render Pipeline)项目移至通用渲染管道(Universal Render Pipeline,URP)?

Learn 如何将内置渲染管道 Unity 项目升级到通用渲染管道,看看 3 家工作室是如何通过改用 URP 达到更多平台的。