HDRP Version 10
了解如何利用高清晰度渲染管道(HDRP)设置,以最大限度地提高性能,并一次实现强大的图形。
随着Unity 2020 LTS及以后的HDRP版本10的发布,HDRP包继续优先考虑其用户友好的界面,灵活的功能,稳定性和总体性能。但要使HDRP发挥最佳作用,了解所有主要设置、它们如何工作以及它们的作用至关重要。这就是为什么我们从CPU/GPU Profiler捕获,渲染管道调试视图和HDRP的着色器框架的角度来看HDRP是如何运行的。
从图形调试到分析和优化,这个博客解开提示,帮助您使用Custom Pass API或包的其他本地部分为您的项目定制HDRP。
The structure of HDRP UX
在我们开始分析帧之前,重要的是要了解手头的HDRP功能。我们建议观看我们的Unite Now演讲,用HDRP实现游戏的高保真图像,用Unity的高清渲染管道进行光线追踪,以及体积云,镜头光晕和光锚演讲,这些都是HDRP的伟大指南。
从内置渲染管道迁移到HDRP的用户经常发现迁移需要一些调整时间。这是因为:
- HDRP有一个统一的、基于物理的渲染框架,这意味着它的属性使用真实世界的单位:曝光值用于相机的光敏度,而坎德拉用于光强。我们的Unite Now讲座揭示了如何以基于物理的方式思考,从而在照明场景时获得一致的结果。
- 在HDRP项目中,您可以控制许多参数,这些参数存在于许多地方。这在一定程度上是因为HDRP具有更多的集成功能,以及更深入的定制功能,可以让美工和工程师微调和优化他们的工作。
为了熟悉这些HDRP功能,我们将从查看其全局设置开始。
全局设置
对于内置渲染管道,图形设置涵盖了大多数项目图形设置。还有Player设置,其中包含特定目标平台(如Windows、Linux、Mac或Xbox)上下文中的一些通用图形设置。
图1:查看全局图形设置可以在HDRP项目中找到。
HDRP项目类似地使用图形和播放器设置,并增加了三组设置,以提供对渲染管道高级默认配置的访问。
- 在图形设置中,脚本渲染管道(SRP)设置引用默认的高清渲染管道资产。这个高清渲染管道资源包含可以在每个质量级别覆盖的设置。
- HDRP默认设置选项卡配置:
- 默认帧设置,默认属性可以覆盖每个相机(包括用于平面反射或反射探头的相机)。在这里你可以决定相机是否默认渲染透明物体。
- 默认的体积组件,其中包含可以覆盖每个“场景中的相机位置”的属性。例如,你可以定义默认的后期处理效果强度,它可以被覆盖,变成“室外强,室内弱”,为你的场景使用特定的体积。
- 默认扩散配置文件资产属性,它可以被HDRP默认设置选项卡的卷组件部分中的扩散配置文件覆盖组件覆盖。反过来,这可以被每个“场景中的相机位置”覆盖。目前,扩散配置文件系统也有一个“冗余覆盖层”,但由于我们一直在寻找改进HDRP的用户体验,这个问题的解决方案已经在进行中。
- 其他“纯全局设置”的属性不能被覆盖。
- 最后,在HDRP Config包中指定了一些不太可能需要配置的低级设置。这些设置也是“纯全局设置”。改变它们需要重新编译c#程序集和HDRP着色器框架。这就是为什么它们被放置在不同的位置。
质量水平
使用内置渲染管道,您可以在质量设置选项卡中定义许多质量级别。对于每个质量级别,可以指定一些图形设置,例如各向异性纹理使用,以便在低端平台上使用更少的硬件资源。
对于HDRP项目,具体来说,可以为每个质量级别选择覆盖HD渲染管道资产。与内置渲染管道相比,这提供了更多的可配置性,因为HD渲染管道资产存储了几个参数,例如屏幕上方向灯,定时灯和区域灯的最大数量,颜色分级LUT大小,以及光cookie图集大小等。
内置渲染管道项目的质量设置选项卡中的某些属性仅适用于内置渲染管道。在HDRP项目中,这些设置可能会从原始位置消失,并在其他地方作为“替代设置”重新出现。
在内置渲染管道项目中,“质量设置”选项卡控制阴影分辨率属性。然而,在HDRP项目中,HD渲染管道资产的照明>阴影部分控制阴影贴图的分辨率。
图2:HDRP项目在质量设置中有更少的属性。
图3:这是因为许多属性被移动到高清渲染管道资源。
相机和画框设置
为了在HDRP中渲染场景,你需要添加相机,就像在内置渲染管道中一样。HDRP还使用额外的高清附加摄像机数据组件(附加到相同的游戏对象)来存储额外的每个摄像机参数。
事实上,HDRP为每个摄像机提供了更多的自定义参数。有几种物理相机设置,如果你勾选相机的自定义帧设置属性,你可以决定相机如何通过帧设置系统绘制帧。
帧设置系统是相机属性覆盖的堆栈。您可以在HDRP默认设置选项卡中指定帧设置的默认值。最重要的是,每个相机都可以覆盖默认的帧设置。
渲染管道调试窗口的相机面板帮助可视化帧设置覆盖堆栈。
使用相机面板
下面的例子演示了Render Pipeline Debug窗口的Camera面板是如何工作的:
场景中有一个叫做主摄像机的摄像机。主摄像机只绘制静态对象。HDRP默认设置选项卡启用绘制运动矢量,而主摄像机的帧设置覆盖禁用此功能以提高整体性能。
运动矢量覆盖堆栈在默认帧设置的左侧显示覆盖帧设置的状态。见图4,高亮A:
图4:渲染管道调试窗口显示的帧设置覆盖堆栈
此外,“渲染管道调试”窗口在“覆盖框架”设置的左侧显示“消毒框架”设置的状态。清理可确保覆盖框架设置保持一致。看同样的例子,不透明物体运动和透明物体运动在主摄像机的帧设置覆盖中没有被明确禁用。但由于运动矢量被禁用,这些相关功能也会被清理系统关闭,如图4高亮B所示。
Volume system
正如我们在Unite Now演讲中所讨论的,HDRP支持Volume System。与内置渲染管道中的后处理堆栈类似,HDRP卷系统控制后处理。然而,更重要的是,它决定了天空的渲染方式,间接光的强度,以及一些阴影设置,以及其他特征。
简单地说,HDRP体积系统是一个抽象的框架,可以用来改变渲染设置,因为相机在场景中移动。每个Volume属性都有一个硬编码的默认值。要查看这些值,请使用Render Pipeline Debug窗口中的Volume面板。参见图5中最右边的一列,其中镜头畸变的默认强度为0。
图5:渲染管道调试窗口显示的音量覆盖堆栈
这些硬编码的默认属性可以被HDRP默认设置选项卡的Volume Components部分中的属性覆盖。注意,这些属性覆盖同样可以被场景中的Volume覆盖。
相反,相机从场景中的体中选取混合属性值。如果没有,它就从HDRP默认设置选项卡中获取属性值。否则,它会选择硬编码的默认属性值。
如图5所示,Render Pipeline Debug窗口的Volume面板对于可视化当前Volume属性覆盖堆栈非常有用。它在调试时特别有效,因为它显示当前正在使用的Volume属性。
网格和表面
就像在内置渲染管道中一样,要渲染的几何图形通常由场景中的网格渲染器或蒙皮网格渲染器指定。hdrp特定的数据主要存储在材质中,这样他们就可以使用适当的渲染器或着色器图形。
照明
就像在内置渲染管道中一样,HDRP项目为每个光源提供特定于HDRP的数据存储。HD附加光数据组件与常规光组件一起附加。
考虑到有许多灯光设置来自于带有灯光组件的游戏对象以外的地方。这里有几个例子:
- 间接照明由光探头组、反射探头(附带HD附加反射数据)、平面反射探头和照明设置决定。它也可以通过间接照明控制器音量组件来调节。
- 体量系统决定天空照明。
- Volume系统还控制与屏幕空间相关的效果。这些效果就像照明或阴影的来源:屏幕空间反射、屏幕空间折射、屏幕空间全局照明、屏幕空间环境遮挡和接触阴影。
- 次表面散射也模拟了“表面到表面的照明”。大多数亚表面散射特性由扩散曲线指定,而扩散曲线又由材料决定。同时,您可以利用音量系统来选择扩散配置文件覆盖。
图6:间接照明控制器体积组件