Version: Unity 6.0 (6000.0)
语言 : 中文
升级到 URP 13 (Unity 2022.1)
升级到通用渲染管线版本 11.0.x

升级到 URP 12 (Unity 2021.2)

本页介绍如何从旧版本的通用渲染管线 (URP) 升级到 12.0.x 版。

如需了解如何将针对内置渲染管线项目制作的资源转换为与 URP 兼容的资源,请参阅渲染管线转换器页面。

从 URP 11.x.x 升级

  • 前向渲染器 (Forward Renderer) 资源更名为通用渲染器 (Universal Renderer) 资源。在包含 URP 12 的 Unity 编辑器中打开现有项目时,Unity 会将现有的前向渲染器资源更新为通用渲染器资源。

  • 通用渲染器资源包含 Rendering Path 属性,允许选择 Forward 或 Deferred Rendering Path。

  • ClearFlag.Depth 方法不再隐式清除模板缓冲区。使用新方法 ClearFlag.Stencil

  • URP 12 实现了渲染管线转换器功能。此功能取代了以前在编辑 (Edit) > 渲染管道 (Render Pipeline) > 通用渲染管道 (Universal Render Pipeline) > 升级 (Upgrade)… 中提供的资源升级功能

从 URP 10.0.x–10.2.x 升级

  1. 以下 Shader Graph 着色器的文件名已重命名。新文件名称没有空格:
    Autodesk Interactive
    Autodesk Interactive Masked
    Autodesk Interactive Transparent

    如果代码中使用 Shader.Find() 方法来搜索着色器,请从着色器名称中移除空格,例如 Shader.Find("AutodeskInteractive)

从 URP 7.2.x 及更高版本升级

  1. URP 12.x.x 不支持 Post-Processing Stack v2 包。如果项目使用 Post-Processing Stack v2 包,请先迁移使用这个包的效果。

DepthNormals Pass

从 10.0.x 版开始,URP 可以生成名为 _CameraNormalsTexture 的法线纹理。要在自定义着色器中渲染到此纹理,请添加名为 DepthNormals 的通道。有关示例,请查看 Lit.shader 中的实现。

Screen Space Ambient Occlusion (SSAO)

URP 10.0.x 实现了屏幕空间环境光遮挡 (Screen Space Ambient Occlusion, SSAO) 效果。

如果打算将 SSAO 效果与自定义着色器一起使用,请考虑以下与 SSAO 相关的实体:

  • _SCREEN_SPACE_OCCLUSION 关键字

  • Input.hlslInputData 结构中包含新的声明 float2 normalizedScreenSpaceUV

  • Lighting.hlsl 包含 AmbientOcclusionFactor 结构,其中包含用于计算间接和直接遮挡的变量:

    struct AmbientOcclusionFactor
    {
        half indirectAmbientOcclusion;
        half directAmbientOcclusion;
    };
    
  • Lighting.hlsl 包含以下用于对 SSAO 纹理进行采样的函数:

    half SampleAmbientOcclusion(float2 normalizedScreenSpaceUV)
    
  • Lighting.hlsl 包含以下函数:

    AmbientOcclusionFactor GetScreenSpaceAmbientOcclusion(float2
    normalizedScreenSpaceUV)
    

要在自定义着色器中支持 SSAO,请在着色器中添加 DepthNormals 通道和 _SCREEN_SPACE_OCCLUSION 关键字。有关示例,请查看 Lit.shader

如果您的自定义着色器实现了自定义光照函数,请使用函数 GetScreenSpaceAmbientOcclusion(float2 normalizedScreenSpaceUV) 获取用于光照计算的 AmbientOcclusionFactor 值。

阴影法线偏差

在 11.0.x 中,用于应用阴影法线偏差的公式已稍作修正,以便更好地处理精准光源。因此,为了精确匹配早期版本的阴影轮廓,可能需要在某些场景中调整参数。对于方向光,使用 1.4(而非 1.0)通常就足够了。

Intermediate Texture

在以前的 URP 版本中,如果渲染器具有任何活动的渲染器功能,URP 将通过中间渲染器执行渲染。在某些平台上,这会对性能产生重大影响。在此版本中,URP 通过以下方式缓解了该问题:URP 期望渲染器功能使用 ScriptableRenderPass.ConfigureInput 方法声明其输入。该方法提供 URP 使用的信息来自动确定是否需要通过 intermediate texture 进行渲染。

出于兼容性目的,通用渲染器中有一个新属性 Intermediate Texture。如果您在属性中选择 Always,URP 将使用 intermediate texture。选择 Auto 启用新行为。仅当渲染器功能未使用 ScriptableRenderPass.ConfigureInput 方法声明其输入时,才使用 Always 选项。

为了确保现有项目正常工作,使用任何渲染器功能(不包括 URP 中包含的功能)的所有现有通用渲染器资源都必须在 Intermediate Texture 属性中选择 Always 选项。任何新创建的通用渲染器资源都已选择 Auto 选项。

从 URP 7.0.x–7.1.x 升级

  1. 先升级到 URP 7.2.0。请参阅升级到通用渲染管线 7.2.0 版

  2. URP 8.x.x 不支持 Post-Processing Stack v2 包。如果项目使用 Post-Processing Stack v2 包,请先迁移使用这个包的效果。

从 LWRP 升级到 12.x.x

  • 从 LWRP 到 URP 12.x.x 没有直接的升级路径。按照步骤先将 LWRP 升级到 URP 11.x.x,然后从 URP 11.x.x 升级到 URP 12.x.x。
升级到 URP 13 (Unity 2022.1)
升级到通用渲染管线版本 11.0.x