升级到通用渲染管线 12 版
本页介绍如何从旧版本的通用渲染管线 (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 实现了渲染管线转换器 (Render Pipeline Converter) 功能。此功能取代了之前在 Edit > Render Pipeline > Universal Render Pipeline > Upgrade... 中提供的资源升级功能
从 URP 10.0.x–10.2.x 进行升级
以下 Shader Graph 着色器的文件名已更名。新文件名不含空格:
Autodesk Interactive
Autodesk Interactive Masked
Autodesk Interactive Transparent
如果代码中使用
Shader.Find()
方法来搜索着色器,请从着色器名称中移除空格,例如,Shader.Find("AutodeskInteractive)
。
从 URP 7.2.x 及更高版本进行升级
- URP 12.x.x 不支持 Post-Processing Stack v2 包。如果项目使用 Post-Processing Stack v2 包,请先迁移使用这个包的效果。
DepthNormals 通道
从 10.0.x 版开始,URP 可以生成一个名为 _CameraNormalsTexture
的法线纹理。要在自定义着色器中渲染到此纹理,请添加名为 DepthNormals
的通道。有关示例,请参阅 Lit.shader
中的实现。
屏幕空间环境光遮挡 (SSAO)
URP 10.0.x 实现了屏幕空间环境光遮挡 (Screen Space Ambient Occlusion, SSAO) 效果。
如果打算将 SSAO 效果与自定义着色器一起使用,请考虑以下与 SSAO 相关的实体:
_SCREEN_SPACE_OCCLUSION
关键字。Input.hlsl
在InputData
结构中包含新的声明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 中,用于应用阴影法线偏差 (Shadow Normal Bias) 的公式已稍作修正,以便更好地处理精准光源。 因此,为了准确匹配早期版本的阴影轮廓,可能需要在某些场景中调整参数。通常,对方向光使用 1.4 而不是 1.0 就足够了。
中间纹理
以前,如果渲染器有任何渲染器功能处于活动状态,URP 将强制通过中间渲染器进行渲染。在某些平台上,这会对性能产生重大影响。因此,渲染器功能现在应使用 ScriptableRenderPass.ConfigureInput
来声明其输入。此信息用于自动决定是否需要通过中间纹理进行渲染。
出于兼容性原因,通用渲染器中添加了一个新属性 Intermediate Texture。因此允许使用新行为,或强制使用中间纹理。仅当渲染器功能未使用 ScriptableRenderPass.ConfigureInput
声明其输入时,才应使用后者。
使用任何渲染器功能(不包括 URP 附带的那些功能)的所有现有通用渲染器资源都会升级以强制使用中间纹理,这样现有设置将继续正常工作。所有新创建的通用渲染器资源都将默认为新行为。
从 URP 7.0.x-7.1.x 进行升级
先升级到 URP 7.2.0。请参阅升级到通用渲染管线 7.2.0 版。
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。