这是系列文章中的第一篇,介绍了开发人员和技术艺术家如何在 Unity 中设置和使用高清渲染管线 (HDRP) 来实现高端图形真实感。HDRP 代表了 Unity 实时渲染技术的飞跃,因此您可以像在现实世界中一样处理光线。
请务必阅读我们关于高端照明的其他文章:
HDRP 通过多种功能扩展了 Unity 现有的照明系统,使渲染场景更接近真实世界的照明:
- 物理光单位和曝光:HDRP 使用真实世界的照明强度和单位。匹配已知光源的规格并使用物理相机设置曝光。
- 高级照明:利用聚光灯和区域灯的附加形状选项来控制灯光的位置。使用光层来限制灯光对特定网格的影响。应用实时效果,如屏幕空间全局照明(SSGI)和屏幕空间折射。
- 天空景观:使用多种技术生成自然的天空。使用基于物理的天空系统来程序化模拟行星大气,并添加体积云、云层或应用 HDRI 来模拟静态天空。
- 多雾路段:使用雾为您的场景添加深度和维度。启用体积将雾效与前景物体相结合并渲染电影光束。保持对体积光和阴影的逐灯控制,并使用局部体积雾组件通过 3D 蒙版纹理对雾密度进行精细控制。
- 音量系统:HDRP 具有直观的系统,可让您根据摄像机位置或优先级阻挡不同的灯光效果和设置。分层和混合体积以实现对场景中每一平方米的专家级控制。
- 后期处理HDRP 后期处理由现有 Volume 系统之上的一系列 Volume Overrides 控制。添加抗锯齿、色调映射、颜色分级、光晕、景深和许多其他效果。
- 高级阴影:HDRP 提供对阴影的高级艺术和性能控制。修改它们的色调、过滤、分辨率、内存预算和更新模式。使用接触阴影和微阴影突出小细节并增加深度。
- 高级反射:反射表面可以使用多种技术进行渲染。反射探针提供传统的反射映射方法,而平面反射探针则为平面提供更高级的选项。屏幕空间反射 (SSR) 使用深度缓冲区添加了实时技术。
Unity 2021 LTS 及更高版本在安装时包含 HDRP 包,以确保您始终运行最新的经过验证的图形代码。当您安装最新的 Unity 版本时,它也会安装相应版本的 HDRP。
HDRP 包版本 兼容 Unity 版本 13.x 2022.1 12.x 2021 LTS(本指南中使用)
将 HDRP 图形包与特定的 Unity 版本绑定有助于保持兼容性。但是,您也可以通过覆盖 清单文件来切换到自定义版本的 HDRP。
系统要求
HRDP 目前兼容以下目标平台:
- Windows 和 Windows 应用商店,带有 DirectX 11 或 DirectX 12 和 Shader Model 5.0
- 现代游戏机(最低为索尼 PlayStation 4 或微软 Xbox One)
- 使用 Metal 图形的 MacOS(最低版本 10.13)
- 带有 Vulkan 的 Linux 和 Windows 平台
HDRP 仅适用于支持计算着色器的控制台和桌面平台。它不支持 OpenGL 或 OpenGL ES 设备。有关 要求和兼容性的更多详细信息,请参阅文档。
请参阅 高清渲染管线中的虚拟现实 ,了解支持的VR平台和设备。
要设置 HDRP 项目,请从 Unity Hub开始:
首先创建一个新项目,然后从列出的可用模板中选择 3D(HDRP) 空模板或 3D 示例场景(HDRP) (在旧版本的 Hub 中称为高清 RP)。要导入包含一些示例预设的 HDRP 包,请选择最新的模板。
如果您使用 3D Coretemplate 创建项目,Unity 将使用较旧的 内置渲染管道。您可以从 包管理器 (窗口 > 渲染 > HDRP 向导)手动将项目迁移到 HDRP。
在 Unity Registry中查找 High Definition RP 包,或者使用 搜索 字段来定位并安装它。
如果与当前项目设置有冲突,则会出现 HDRP 渲染管线向导 来帮助您排除故障(也可以在 窗口 > 渲染管线 > HDRP 向导下找到)。请注意,在 Unity 2021.2/HDRP 12 中,它位于 Window > Rendering > HDRP Wizard下。
转到 配置检查 并单击 修复全部,或单击每个问题的 修复 以单独修复它们。此清单可以帮助您从非脚本渲染管道 (SRP) 项目迁移。
当向导完成后,将出现提示要求您创建一个新的管道资产。这是磁盘上的一个文件,用于保存您的特定管道设置。选择 “创建一个” 以添加新的 渲染管线资产,然后在那里分配文件。
一旦 HDRP 正常运行,请验证 配置检查 中的所有复选框均为绿色。您可能会注意到背景环境颜色的变化。
请记住,从空白项目手动安装不会自动导入 3D 示例场景 (HDRP)。如果您想要访问本指南中显示的示例资产,请使用 3D 示例场景 模板。
Unity Hub 中的 3D 示例场景是一个模板项目,可帮助您开始使用 HDRP 和基于物理的照明。这个轻量级项目不到 100 兆字节,它提供了 HDRP 的一个很好的工作示例,您可以快速加载以供参考。
小型的多房间环境展示了具有不同照明设置的三个不同区域。代表太阳的定向光在真实世界中的强度为 100,000 勒克斯,并且每个位置都会校正相机的曝光以匹配光照环境。
使用 WASD 键和鼠标来驱动 FPS 控制器在各个层面上移动。
- 房间 1 是一个圆形平台,头顶的阳光照亮了它。贴花会使水泥地面上堆积污垢和水坑。
- 2 号房间增加了来自天窗的体积光轴,以及玻璃柜内树木的先进材料。
- 3 号房间展示室内人工照明和发光材料。
如需进一步了解,请查看 Unity 技术艺术家 Pierre Yves Donzallaz 的 这篇博客文章 ,其中更详细地描述了 HDRP 3D 示例场景。
更多 HDRP 示例内容
探索完 HDRP 3D 示例场景后,您可能会发现一些其他有用的项目。
尽管 汽车展厅项目 最初并非用于游戏,但它展示了一款具有逼真灯光且细节丰富的车辆。通过 Unity Hub 提供的此交互式演示,更改舞台灯光、汽车漆、纹理和背景。
同时, 太空船演示 在科幻环境中展示了视觉效果图和其他 HDRP 功能。您可以从 Unity 的 GitHub 存储库 下载它,或者在 Steam上访问它。
如果您将 HDRP 与VR结合使用,您会喜欢 VR Alchemist Lab。该项目展示了中世纪小型实验室中的互动效果。
要了解如何创建电影内容或动画电影,请从 Unity Hub 安装我们的电影工作室模板。该模板说明了如何 设置和照亮 一部名为 Mich-L的搞笑短片的镜头,融合风格化和照片级真实感渲染。
项目设置 (编辑 > 项目设置)下有一些基本设置,包括 图形、HDRP 全局设置和 质量。
请注意,在 Unity 2021.2/HDRP 12 及更高版本中,HDRP 默认设置现在称为 HDRP 全局设置。
图形设置
图像顶部的 可编写脚本的渲染管道设置 是指磁盘上存储所有 HDRP 设置的文件。每个项目可以拥有多个这样的管道资产。
把每一个都看作一个单独的配置文件。例如,您可能使用它们来存储不同目标平台(Xbox、PlayStation 等)的专门设置,或者它们也可能表示玩家可以在运行时交换的不同视觉质量级别。
3D 示例场景从“设置”文件夹中的几个管线资产开始:HDRPHighQuality、HDRPLowQuality 和 HDRPMediumQuality。还有一个 HDRPDefaultResources 文件夹,其中包含 DefaultHDRPAsset。
通过“质量设置”, 您可以将某个管道资产与预定义的质量级别关联起来。
选择顶部的 质量级别 ,从 渲染选项中激活特定的 渲染管线资产 。您可以自定义默认值或创建额外的质量级别,每个级别都与额外的管道资产配对。
质量级别代表管道中活跃的一组特定视觉特征。例如,您可以在应用程序中为图形创建多个层。在运行时,您的玩家可以根据您的硬件选择活动的质量级别。
转到 Quality/HDRP子部分 来编辑实际的 管道设置。否则,转到 项目视图 以选择 管道资产 并在 检查器中编辑其设置。
请注意,在 Pipeline Asset 中启用更多功能将消耗更多资源。一般来说,优化您的项目以仅使用您真正需要的内容来实现预期的效果。如果您不需要某个特定功能,您可以将其关闭以节省资源并提高性能。
如果不需要使用以下功能,可以将其禁用:
- 在 HDRP 资源中:贴花、低分辨率透明度、透明背面/深度预处理/后处理、SSAO、SSR、接触阴影、体积、次表面散射和扭曲
- 在用于反射等综合效果的相机框架设置(主相机)中 ,或用于自定义效果的附加相机:折射、后处理、后处理后、透射、反射探针、平面反射探针和大图块预处理
阅读 此博客文章 以熟悉 HDRP 功能以提高性能。
HDRP 全局设置
HDRP 全局设置 部分(也称为 HDRP 默认设置 )(HDRP 版本 12 之前)确定项目的基本配置。您可以根据摄像机的位置通过本地或全局体积组件覆盖场景中的这些设置。
全局设置保存在顶部字段中定义的自己单独的管道资产中,您可以在其中设置默认渲染和后期处理选项。
在开发项目时,您可能需要返回 HDRP 全局设置来打开或关闭特定功能。除非启用“全局设置”中的相应复选框,否则某些功能将不会呈现。
确保只启用您需要的功能,因为它们可能会对渲染性能和内存使用产生负面影响。请注意,某些设置会出现在 “音量配置文件”中,而其他功能则位于 “框架设置” 中(取决于用途)。
在熟悉 HDRP 的功能集的同时,请使用 项目设置中右上角的 搜索 字段。这将仅显示突出显示搜索词的相关面板。
在 HDRP 全局设置中启用某项功能并不能保证它可以在任何给定时间由任何摄像机渲染。您必须验证渲染管线资产(其质量级别在 项目设置 > 质量下指定)是否也支持该功能。例如,为了确保摄像机可以渲染体积云,您必须在 HDRP 全局设置 > 帧设置 > 摄像机 > 照明 下以及活动渲染管线资源中的 照明 > 体积下切换它们。
如果您不受 CPU 限制,分辨率会极大地影响性能。动态分辨率降低渲染分辨率并将结果缩放至输出屏幕分辨率。执行这种升级的过滤器在 2021 LTS 中得到了很大的改进,允许您以 70% 或更低的分辨率进行渲染,同时将质量损失降到最低。
在 Unity 2021 LTS 中,HDRP 采用一些最新的超级采样技术提供了多种解决方案:
- NVIDIA DLSS(深度学习超级采样),适用于支持该技术的 GPU
- 跨平台的 AMD FSR(FidelityX 超级分辨率)
- 跨平台 TAA Upscale(时间抗锯齿)
您可以强制缩放 HDRP 资源,也可以编写自己的逻辑来调整比例。
要在您的项目中设置动态分辨率并获得一些关于选择最适合您需求的算法的指导,请参阅文档中的 此页面 。
在管线资源中配置 HDRP 设置时,通常从 “渲染”下的 “点亮着色器模式” 开始,您可以在其中选择 “延迟”、“前向”或 “两者”。这些代表您可以选择的渲染路径,每个路径都有一系列特定的操作,告知管道如何渲染和照亮几何体。请参阅上文如何自定义渲染路径。
要设置默认渲染路径,请转到 Lit Shader Mode 并选择 Forward 或 Deferred。HDRP 非常灵活,还允许您选择 两者。该选项允许您使用一个渲染路径进行大多数渲染,然后为每个相机覆盖它。但是,它确实占用更多的 GPU 内存,因此通常最好选择 Forward 或 Deferred。
要默认影响所有摄像机,请转到 HDRP 默认设置 并找到 默认帧设置。您的渲染路径可以应用于 相机、 烘焙 或 自定义反射、以及 实时反射。在 渲染组中,在 Lit Shader 模式中设置渲染路径。
要影响特定相机,请检查其 自定义框架设置。然后,在 渲染组中,覆盖并更改 Lit Shader Mode的渲染路径。
在前向渲染中,显卡将屏幕上的几何图形分成顶点。这些顶点被进一步分解为片段或像素,然后渲染到屏幕上并创建最终图像。
每个对象每次一个地传递到图形 API。前向渲染会为每个光源带来一定成本。场景中的灯光越多,渲染所需的时间越长。
前向渲染在单独的过程中绘制灯光。如果有多个灯光照射到同一个游戏对象上,当存在许多灯光和物体时,这可能会造成严重的过度绘制并减慢速度。
与传统的前向渲染不同,HDRP 增加了新的功能,例如每个对象材质在一次传递中剔除并同时渲染多个灯光。但这仍然是一个相对昂贵的过程。如果性能是一个问题,您可能需要使用延迟着色。