本页介绍如何从旧版本的通用渲染管线 (URP) 升级到最新版本。
要为游戏主机构建项目,您需要为要支持的每个平台安装附加包。
在以前版本的 URP 中,如果启用了后期处理,可能会导致管线始终需要深度。我们改进了后期处理的集成,仅在启用景深 (Depth of Field)、运动模糊 (Motion Blur) 或 SMAA 效果时才需要管线深度。这样可以在很多情况下提高性能。
由于使用后期处理的摄像机在默认情况下不再需要深度,因此如果将摄像机用于其他效果(例如软粒子),现在必须手动指示摄像机需要深度。
要使所有摄像机都需要深度,请在管线资源中启用 Depth Texture 选项。要使单个摄像机需要深度,请在 Camera 检视面板中将 Depth Texture 选项设置为 On。
在先前版本的 URP 中,如果为主光源启用了阴影级联,则将在屏幕空间通道中解析阴影。管线现在总是在渲染不透明或透明对象时解析阴影。这种行为可确保一致性并解决了许多与阴影相关的问题。
如果使用自定义 HLSL 着色器并采样 _ScreenSpaceShadowmapTexture 纹理,则必须改用 GetMainLight 函数将它们升级为采样阴影。
例如:
float4 shadowCoord = TransformWorldToShadowCoord(positionWorldSpace);
Light mainLight = GetMainLight(inputData.shadowCoord);
// now you can use shadow to apply realtime occlusion
half shadow = mainLight.shadowAttenuation;
还必须在 .shader 文件中定义以下内容,以确保自定义着色器可以正确接受阴影:
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS
#pragma multi_compile _ _MAIN_LIGHT_SHADOWS_CASCADE
透明对象现在可以在使用阴影级联时接受阴影。还可以选择禁止透明对象接受阴影以提高性能。为此,请禁用前向渲染器资源中的 Transparent Receive Shadows。