将项目从内置渲染器转换为高清渲染管线
高清渲染管线 (High Definition Render Pipeline, HDRP) 使用一组新的着色器和光照单位,两者都与内置渲染器不兼容。要将 Unity 项目升级为 HDRP,必须首先转换所有材质和着色器,然后相应地调整各个光源设置。
本文档说明如何将 3D With Extras 模板项目转换为 HDRP,但是您可以使用相同的工作流程来转换自己的项目。为遵循本文档的步骤操作并升级 3D With Extras 项目,请创建一个使用 3D With Extras 模板的项目。为此需要执行以下操作:
打开 Unity Hub。
在 Projects 选项卡中,选择 New。
在 Template 部分中,选择 3D With Extras。
在 Project Name 字段中输入项目名称,并设置 Location 供 Unity 保存该项目。
单击 Create。
Unity 编辑器将会打开并如下所示:
设置 HDRP
首先,要安装 HDRP,请将 High Definition RP 包添加到 Unity 项目中:
- 在 Unity 编辑器中,打开 Package Manager 窗口(菜单:Window > Package Manager)。
- 找到并选择 High Definition RP 包,然后单击 Install。
现在可以在您的项目中使用 HDRP。请注意,安装 HDRP 时,Unity 会自动将两个特定于 HDRP 的组件附加到场景中的游戏对象。HD Additional Light Data 组件会附加到光源,而 HD Additional Camera Data 组件会附加到摄像机。如果未将项目设置为使用 HDRP,并且场景中存在任何 HDRP 组件,则 Unity 会引发错误。要解决这些错误,请参阅以下有关如何在项目中设置 HDRP 的说明。
要设置 HDRP,请使用 Render Pipeline Wizard。
打开 Render Pipeline Wizard 窗口(菜单:Window > Render Pipeline > HD Render Pipeline Wizard)。
在 Configuration Checking 部分中,找到 HDRP 选项卡,然后单击 Fix All。这可以解决项目中的每个 HDRP 配置问题。
现在在您的项目中设置了 HDRP,但是您的场景无法正确渲染,并会使用洋红色错误着色器显示游戏对象。这是因为场景中的游戏对象仍使用专为内置渲染器制作的着色器。要了解如何将内置着色器升级为 HDRP 着色器,请参阅升级材质部分。
HDRP 包含自己的后期处理实现方案,不再支持 Post Processing 包。如果要转换 3D With Extras 项目,或者你自己的项目使用 Post Processing 包,请从项目中移除 Post Processing 包。为此需要执行以下操作:
在 Unity 编辑器中,打开 Package Manager 窗口(菜单:Window > Package Manager)。
找到并选择 Post Processing 包,然后单击 Remove。
有关如何向模板项目添加和自定义后期处理效果的详细信息,请参阅后期处理部分。
升级材质
要将场景中的材质升级为与 HDRP 兼容的材质,请执行以下任一操作:
Upgrade Project Materials to High Definition Materials:将项目中的每个兼容材质转换为 HDRP 材质。
Upgrade Selected Materials to High Definition Materials:将 Project 窗口中当前选定的每个兼容材质转换为 HDRP 材质。
Upgrade Scene Terrains to High Definition Terrains:将场景中每个地形中的内置默认标准地形材质替换为 HDRP 默认地形材质。
可从以下位置之一找到这些选项:
Edit > Render Pipeline 菜单。
Render Pipeline Wizard 窗口,位于 Project Migration Quick-links 部分中。
此过程无法自动将自定义材质或着色器升级为 HDRP。必须手动转换自定义材质和着色器。另外,由于 HDRP 支持更多的高度贴图位移技术和解压缩选项,因此该过程无法正确升级与高度贴图相关的属性。这意味着高度贴图材质可能看起来不正确。如果要升级使用高度贴图的材质,请修改材质的 Amplitude 和 Base 属性,直到结果与内置渲染器版本更加匹配。
此过程也无法升级粒子着色器。即使 HDRP 不支持粒子着色器,但也提供了一些与内置粒子系统兼容的 Shader Graph。这些 Shader Graph 的工作方式与内置粒子着色器类似。要使用这些 Shader Graph,请导入 Particle System Shader Samples 示例:
- 打开 Package Manager 窗口(菜单:Window > Package Manager)。
- 找到并单击 High Definition RP 条目。
- 在 High Definition RP 的包信息中,找到 Samples 部分,然后单击 Particle System Shader Samples 旁边的 Import into Project 按钮。
手动转换材质
HDRP 材质转换程序分别自动将内置标准和无光照材质转换为 HDRP 光照和无光照材质。该过程使用叠加功能将颜色通道混合在一起,类似于在图像编辑软件(如 Photoshop)中使用的过程。为了帮助您手动转换自定义材质,本节介绍了转换程序从内置材质创建的贴图。
遮罩贴图
内置着色器到 HDRP 着色器转换过程将内置标准着色器的不同材质贴图合并到 HDRP 光照材质中遮罩贴图的单独 RGBA 通道中。有关每个贴图进入哪个颜色通道的信息,请参阅遮罩贴图。
细节贴图
内置着色器到 HDRP 着色器转换过程将内置标准着色器的不同细节贴图合并到 HDRP 光照材质中细节贴图的单独 RGBA 通道中。还会增加平滑度细节。有关每个贴图进入哪个颜色通道的信息,请参阅细节贴图。
调整光照
HDRP 使用物理光单位来控制光源的强度。这些单位与内置渲染管线使用的任意单位不匹配。
对于光照强度单位,方向光使用勒克斯,所有其他光源可以使用流明、坎德拉、EV 或在一定距离上模拟勒克斯。
要在 HDRP 项目中设置光照,请执行以下操作:
- 将默认的天空体积添加到场景中以设置环境光照(菜单:GameObject > Volume > Sky and Fog Volume)。
将环境光照设置为使用这个新的天空:
打开 Lighting 窗口(菜单:Window > Rendering > Lighting Settings)。
对于 Profile 属性,请选择天空和雾效体积 (Sky and Fog Volume) 使用的体积配置文件 (Volume Profile)。
对于 Static Lighting Sky 属性,请选择 PhysicallyBasedSky。
或者,如果您不希望在进行本节中的其余更改时让 Unity 重新烘焙场景的光照,则可以禁用窗口底部的 Auto Generate 复选框。
目前,阴影质量很低。要提高阴影质量,可以更改阴影属性:
创建新的 Global Volume 游戏对象(菜单:GameObject > Volume > Global Volume),并将这个游戏对象命名为 Global Settings。
为该体积创建新的体积配置文件。为此,请打开该体积的 Inspector,然后单击 New 按钮。
添加一个 Shadows 覆盖 (Add Override > Shadowing > Shadows),然后启用 Max Distance 并将它设置为 50。
- 在表示太阳的光源(即 Directional Light 游戏对象上的 Light 组件)上,将 Intensity 设置为 100000,并将 Color 设置为白色。然后,为了查看天空中的太阳,请找到 Shape 部分,并将 Angular Diameter 设置为 3。
- 场景现在曝光过度。要解决此问题,请选择在步骤 3a 中创建的 Global Settings 游戏对象,并将 Exposure 覆盖添加到其 Volume 组件 (Add Override > Exposure)。然后,将 Mode 设置为 Automatic。
- 要刷新曝光,请前往 Scene 视图并启用 Animate Materials。
纠正光照剪影,因为 HDRP 支持彩色光照剪影,而内置光照剪影使用仅包含 Alpha 的纹理格式:
在 Project 窗口中,选择 Assets > ExampleAssets > Textures > Light_Cookies > Spotlight_Cookie。
在 Inspector 中,将导入类型从 Cookie 更改为 Default。
将 Wrap Mode 设置为 Clamp。.
纠正建筑灯:
在 Hierarchy 窗口中,选择 ExampleAssets > Props > ConstructionLight > Spot Light,并在 Inspector 中查看光源组件。
将 Intensity 更改为 17000 Lumen。这代表两个 8500 流明的灯泡。
在 Emission 部分中,启用 More Options。
启用 Reflector 复选框。这将模拟聚光灯后面的反射表面以调整视觉强度。
使灯泡材质发光:
在 Project 窗口中,选择 Assets/ExampleAssets/Materials/Lightbulb_Mat.mat。
在 Inspector 的 Emission Inputs 部分中,启用 Use Emission Intensity,将 Emissive Color 设置为白色,并将 Emission Intensity 设置为 8500 Luminance。
- 最后,如果您在步骤 2d 中禁用了 Auto Generate,请转到 Lighting 窗口并按 Generate Lighting 按钮。还可以重新启用 Auto Generate。
后期处理 (Post-processing)
HDRP 不再支持 Post Processing 包,而是包含自己的后期处理实现方案。要将场景转换到 HDRP 后期处理,请执行以下操作:
在 Hierarchy 中,删除 Post-process Volume 游戏对象。
- 如果您的项目使用了 Post Processing 包的脚本 API 来编辑后期处理效果,则需要更新脚本以使用新的后期处理效果。
- 创建新的 Global Volume 游戏对象(菜单:GameObject > Volume > Global Volume),并将这个游戏对象命名为“Post-processes”。在 Volume Inspector 中选择 Add Override 时,可以在 Post-processing 子菜单中找到所有后期处理效果。
- 向 Volume 组件添加 Tonemapping 覆盖 (Add Override > Post-processing > Tonemapping),然后启用 Mode 并将其设置为 ACES。
- 向 Volume 组件添加 Bloom 覆盖 (Add Override > Post-processing > Bloom),然后启用 Intensity 并将其设置为 0.2。 请注意,泛光的结果与 Post Processing 包中的结果不同。这是因为 HDRP 的泛光效果在物理上是准确的,并可以模拟摄像机镜头的质量。
向 Volume 组件添加 Motion Blur 覆盖 (Add Override > Post-processing > Motion Blur),然后启用 Intensity 并将其设置为 0.1。
向 Volume 组件添加 Vignette 覆盖 (Add Override > Post-processing > Vignette),然后设置以下属性值。
启用 Intensity 并将其设置为 0.55。
启用 Smoothness 并将其设置为 0.4。
启用 Roundness 并将其设置为 0。
向 Volume 组件添加 Depth Of Field 覆盖 (Add Override > Post-processing > Depth Of Field),然后设置以下属性值:
启用 Focus Mode 并将其设置为 Manual。
在 Near Blur 部分中,启用 Start 并将其设置为 0,然后启用 End 并将其设置为 0.5。
在 Far Blur 部分中,启用 Start 并将其设置为 2,然后启用 End 并将其设置为10。 请注意,此效果仅在 Game 视图中可见。
- 最后,选择 Global Settings 游戏对象以便在 Inspector 中查看该对象。在 Volume 组件中,添加 Ambient Occlusion 覆盖 (Add Override > Lighting > Ambient Occlusion),然后启用 Intensity 并将其设置为 0.5。
结果
Game 视图中的场景现在应如下所示: