从轻量级渲染管线升级到通用渲染管线
在 Unity 2019.3 中,通用渲染管线 (URP) 取代了轻量级渲染管线 (LWRP)。如果项目使用了 LWRP,必须将其升级为使用 URP 才能使用 Unity 2019.3。
Unity 会自动进行某些升级,但您还必须进行一些手动更改。请按照本指南中的步骤从使用 LWRP 转换到使用 URP。
升级之前
更新程序集定义资源
URP 使用 GUID 而不是“程序集定义”字符串名称。如果要在项目中使用程序集定义资源 (ASMDefs),应确保在每个资源上都启用 Use GUIDs。
在升级过程中,Unity 会自动升级对 LWRP 的所有现有字符串引用,但最好是在程序集定义资源上使用 GUID 以供将来验证。
对于项目中的每个程序集定义资源:
- 选择该程序集定义资源
- 在 Inspector 中,启用 Use GUIDs
有关使用程序集定义文件的信息,请参阅程序集定义文档。
升级过程
升级 LWRP 版本
要启动升级过程,请执行以下操作:
- 在 Unity 2019.3 中打开要升级的项目
Unity 自动将 LWRP 更新到 7.x.x 版,并将 URP 包作为更新后的 LWRP 包的依赖项拉入。Unity 脚本更新程序会自动升级脚本文件。脚本更新程序完成后,所有脚本都应能正确编译。
升级着色器搜索路径
如果 LWRP 项目使用了 Shader.Find
来搜索 LWRP 着色器,则需要更改搜索路径。
为此需要执行以下操作:
- 将所有搜索
Lightweight
的Shader.Find
实例更改为搜索Universal
。
升级自定义着色器
升级标签
URP 使用自己的脚本标签。如果您的着色器使用 LWRP LightMode
标签,它们将在 URP 项目中有效,因为 Unity 会为此使用内部别名。但是,应该手动更改这些标签以使项目适应未来需求。
为此需要执行以下操作:
- 将所有
Lightweight2D
标签实例更改为Universal2D
。 - 将所有
LightweightForward
标签实例更改为UniversalForward
。
除此之外,URP 还使用与 LWRP 不同的 RenderPipeline 标签。如果您自己的着色器包含此标签,需要手动更改它才能使着色器正常工作:
- 将所有
LightweightPipeline
标签实例更改为UniversalPipeline
。
升级着色器名称
以下着色器名称已针对 URP 进行了更改,因此您需要手动更新着色器文件:
- 将所有
UsePass 'Lightweight Render Pipeline/...'
实例更改为UsePass 'Universal Render Pipeline/...'
。
升级 include 路径
URP 使用与 LWRP 不同的 include 路径。LWRP 7.x.x 包含转发 include,因此您的自定义着色器将从 LWRP 升级到 URP。但是,URP 7.x.x 不包含转发 include,因此您必须手动更新 include 路径。
- 将所有
#include 'Packages/com.unity.render-pipelines.lightweight/xxx'
实例更改为#include 'Packages/com.unity.render-pipelines.universal/xxx'
。
升级命名空间
在项目的 .cs 文件中,查找对 LWRP 命名空间的引用并将它们替换为新的 Universal 命名空间。
- 将所有
UnityEditor.Rendering.LWRP.xxx
实例更改为现在的UnityEditor.Rendering.Universal.xxx
。
升级后期处理效果
URP 7.x 版同时支持 Post Processing Stack v2 (PPv2) 及其自身集成的后期处理解决方案。如果您的项目中安装了 Post Processing v2 包,但希望使用 URP 集成的后期处理解决方案,则需要在将 URP 安装到项目中之前删除 Post Processing Stack v2 包。安装 URP 后,即可重新创建后期处理效果。
将后期处理效果从 LWRP 升级到 URP 是一个手动操作过程。必须使用 URP 的后期处理实现方法手动重新创建项目中的每个 Post-Processing Profile。
URP 集成的后期处理解决方案目前不支持自定义后期处理效果。如果您的项目使用自定义后期处理效果,目前无法在 URP 集成的后期处理解决方案中重新创建这些效果。即将发布的 URP 版本将支持自定义后期处理效果。
安装 URP 并移除 LWRP
在自动升级过程中,Unity 会安装 URP 作为 LWRP 的依赖项。现在必须将 URP 作为项目本身的依赖项安装,这样在移除 LWRP 时,Unity 就不会自动移除 URP。
要将 URP 安装为项目的依赖项,请执行以下操作:
- 进入菜单:Window > Package Manager。
- 找到 Universal RP 包,并记下其名称右侧的版本号。这便是已添加到您项目中的 URP 版本。
- 关闭 Unity。
- 在文件资源管理器中,打开 Unity 项目的根文件夹。
- 打开 Packages 文件夹,然后找到 manifest.json。这是您项目的项目清单文件。
- 使用文本编辑器打开该项目清单文件。
- 在依赖项部分的顶部,添加以下条目:
"com.unity.render-pipelines.universal": "[您之前记下的版本号]"
因此,比如,如果 URP 的版本是 7.1.1,则依赖项部分将如下所示:
"dependencies": {
"com.unity.render-pipelines.universal": "7.1.1",
...
}
这样就会将已安装的 URP 版本标记为项目的依赖项。现在可以放心移除 LWRP。
- 在 Unity 中打开您的项目。
- 打开 Package Manager 窗口。
- 找到 Lightweight RP 并将其选中。
- 在 Package Manager 窗口的右下角,单击 Remove。Unity 会从项目中完全移除 LWRP 包。