Zephus 发表于 2021-11-20 15:56

怎么样设置HDRP参数,能提升Unity画质和渲染性能?

想将Unity HDRP(高清渲染管线)设置到最佳状态,需要了解所有主要管线设置,及其背后的原理和作用,利用 CPU/GPU Profiler 的记录、Render Pipeline Debug 视图,以及 HDRP 的着色器框架来研究 HDRP 的运行。在开始分析HDRP渲染的画面之前,我们首先要了解HDRP的现有功能。
HDRP基本功能和对应参数
全局设置
你可能会发现,项目要从内置渲染管线移植到 HDRP 通常需要先做一些调整。这是因为:

[*]HDRP 使用着一种统一且符合真实物理的渲染框架,各项渲染属性的单位与现实世界一致,如用于设置摄像机的感光度 Exposure(曝光值),描述光照强度的 Candela(坎德拉)
[*]HDRP 项目包含有大量的渲染参数可由用户调整。因为 HDRP 集成了许多功能,并且管线也支持让艺术和工程人员深度定制渲染功能、微调和优化自己的作品
在内置渲染管线中,每个项目的Graphics(图形)(https://docs.unity3d.com/cn/current/Manual/class-GraphicsSettings.html)设置涵盖了大多数图形设置。而 Player 设置则包含了 Windows、Linux、Mac 或 Xbox 等平台的基础图形设置。



图1: Unity HDRP 里的各个全局图形设置

HDRP 同样包括了 Graphics 和 Player 设置,此外还增加了三组额外设置,用于修改管线的高级默认配置。

[*]在图形设置中,Scriptable Render Pipeline(可编程渲染管线 SRP)设置默认是 HD Render Pipeline Asset(HD 管线设置资源)。这个资源中的设置可在每一种管线的质量等级上被分别覆写
[*]HDRP Default Settings(默认设置)一栏则可配置:
– 默认 Frame(帧)设置,每个属性可在多台摄像机(包括用于平面反射或反射探针的摄像机)上分别覆写。你可以在此处设定摄像机默认是否渲染透明物体
– 默认 Volume(体积)组件,其属性可在所有摄像机上覆写。比如,你可以覆写默认的后处理效果强度,再使用体积来让后处理效果“室外强、室内弱”
– 默认 Diffusion Profile Assets(散射配置资源)属性,属性可由HDRP Defautl Setting选项栏下 Volume(体积)部分的 Diffusion Profile Override 组件进行覆写,并且也支持在所有摄像机上覆写。目前 Diffusion Profile 系统还带有一个“多余的覆写层面”,为了改善 HDRP 的用户体验,我们正在积极寻求其解决方案

[*]属于纯全局设置的其它属性不能被覆写
[*]而其它不太常用的底层设置则放在了 HDRP Config package 中。这些设置也属于纯全局设置,修改起来涉及重新编译 C# 程序集和 HDRP 着色器框架,所以这部分属性被另外放在了一个包中
质量等级
内置渲染管线支持在 Quality Settings(质量等级)(https://docs.unity3d.com/cn/current/Manual/class-QualitySettings.html) 一栏下设定任意数量的质量等级 。每个质量等级都可以保留各自的图形设置,比如在低端设备上减少使用各向异性纹理来节省硬件资源。
HDRP 也支持为每个质量等级指定一种 HD Render Pipeline Asset 覆写。与内置渲染管线相比,高清渲染管线的设置资源可储存额外几种参数,如平行光、点光源和聚光灯以及面光源的同屏最大数量,颜色分级的 LUT 大小和 Light Cookie 整图大小等等,让管线能有更多的定制空间。
内置渲染管线的 Quality Settings 有许多只适用于本管线的属性。在 HDRP 中,这些设置可能会从原位转移到其他地方,作为“替补设置”重新出现。
比如,内置渲染管线的 Quality Settings 选项栏可设定 Shadow Resolution(阴影分辨率)属性,而同样的设置在 HDRP 项目中就被放在了管线设置资源的“Lighting” > “Shadows” 这一部分。



图2: Unity HDRP的Quality属性界面包含参数较少



图3: 许多属性放在HD Render Pipeline Asset中

Camera(摄像机)和Frame(帧)设置
同内置渲染管线一样,HDRP 同样需要借助 Cameras(摄像机)(https://docs.unity3d.com/ScriptReference/Camera.html)来渲染场景。管线还会在同一对象上加上一个 HD Additional Camera Data(HD 摄像机补充数据)组件来为每个摄像机储存额外的参数。
实际上 HDRP 带有更为详细的摄像机定制参数。管线带有几种 Physical Camera(物理摄像机)设置,你甚至可以勾选 Custom Frame Settings 属性,在 Frame Settings(帧设置)中确定镜头框架的绘制方法。
Frame Settings(帧设置)系统由一组摄像机属性的覆写组成,其默认设置可在 HDRP Default Settings 一栏中设定。此外,每台摄像机都支持覆写默认的框架设置。
Render Pipeline Debug 窗口的 Camera 面板可以可视化显示出 Frame Settings 的覆写堆栈。
使用 Camera 面板
下例说明了 Render Pipeline Debug 窗口下 Camera 面板的使用方式:
场景中有一个名为 Main Camera 的摄像机,此 Main Camera 只渲染静态物体。HDRP Default Settings 选项卡默认启用运动矢量的绘制,而 Main Camera 的 Frame Settings 为了提高整体性能会禁用这一功能。
Motion Vectors 覆写堆栈会在 Default Frame 设置的左侧显示出 Overridden(覆写后) 的 Frame 设置。见图 4 选框 A:



图4: Render Pipeline Debug窗口中的Frame Settings覆写堆栈

而窗口内 Overridden Frame 设置的左边显示的是 Sanitized(清理后) Frame 设置。“清理(Sanitization)”过程可让 Overridden Frame 设置保持连贯。在同个例子中,Main Camera 的 Frame Settings 覆写并没有禁用 Opaque Object Motion(不透明物体运动)和 Transparent Object Motion(透明物体运动),但由于 Motion Vector 被禁用,这三种依赖于此的功能也会被清理系统关闭,如图 4 选框 B 所示。
Volume(体积)系统
类似于内置渲染管线的 Post-processing 堆栈,HDRP 的体积系统也是一种后处理。但它要比前者更详细,体积系统还涵盖了天空的渲染方式、间接光照的强度、额外的阴影设置以及许多其他特性。
简单地说,HDRP 体积系统是一种抽象的框架,可在镜头移动时改变其渲染设置。每种体积属性都带有默认值,这些值可在 Render Pipeline Debug 窗口的 Volume 面板中查看。在图 5 的最右侧我们能看到,Lens Distortion(镜头扭曲)的 Default Intensity(默认强度)为 0。



图5: Render Pipeline Debug窗口中的Volume覆写堆栈

这些代码写出来的默认属性可在 HDRP Default Settings 选项卡的 Volume Component 部分覆写。注意,这里的覆写依旧能被场景中的体积所覆盖。
而摄像机会反过来取场景各体积属性的混合值。如果体积属性不存在,摄像机就会取 HDRP Default Settings 下的属性值。否则,它就会取写入代码中的默认属性值。
如图6所示,Render Pipeline Debug 窗口的 Volume 面板可以很好地显示出 Volume 属性的覆写堆栈,以及当前启用中的体积属性,辅助图形调试。
网格和表面
类似内置渲染管线,HDRP 的几何体渲染通常由场景的 Mesh Renderer(网格渲染器)(https://docs.unity3d.com/ScriptReference/MeshRenderer.html)或 Skinned Mesh Renderer(蒙皮网格渲染器)(https://docs.unity3d.com/ScriptReference/SkinnedMeshRenderer.html)完成。HDRP 独有的渲染数据主要存储在 Materials(材质) 中,以方便应用到兼容的 Renderer(渲染器)或 Shader Graphs 上。
光照
类似内置渲染管线,HDRP 的每盏灯都会被存储为 HDRP 特有的数据格式。管线除了常规 Light 组件外还会使用 HD Additional Light Data(HD 光照补充数据)组件,因为许多光照设置并非来自关联了 Light 组件的 Game Object 上。下方为几个例子:

[*]间接光照将受 Light Probe Groups(光照探针组)、Reflection Probes(反射探针,带有 HD Additional Reflection Data(HD 反射补充数据组件)、Planar Reflection Probes(平面反射探针)及 Lighting Settings(光照设置)影响。光照本身也可以由 Indirect Lighting Controller(间接光照控制器)体积组件进行调整。
[*]体积系统决定了天空的光照
[*]体积系统也还控制着相关的屏幕空间效果。这些效果类似于一个光源或阴影源:Screen Space Reflection(屏幕空间反射)、Screen Space Refraction(屏幕空间折射)、Screen Space Global Illumination(屏幕空间全局光照)、Screen Space Ambient Occlusion(屏幕空间环境遮蔽)及 Contact Shadow(接触阴影)。
[*]Subsurface Scattering(次表面散射)模拟了“表面到表面的光照”。大多数次表面散射属性由 Diffusion Profiles(散射配置)设定,而后者又定义在了材质中。你可以在体积系统中用 Diffusion Profile Override(散射配置覆写)覆盖其属性。



图6: Indirect Lighting Controller(间接光照控制器)体积组件

相关链接:
- 技术文档:HDRP 的 10 版本(https://docs.unity3d.com/cn/Packages/com.unity.render-pipelines.high-definition@10.4/manual/whats-new-10.html)支持 Unity 2020 LTS 及以上
- 更多HDRP 相关内容,欢迎来到“Unity栋哥带你学HDRP专栏”(https://space.bilibili.com/386224375/channel/seriesdetail?sid=261125)学习


未完…更多优化方法,敬请期待!

Ilingis 发表于 2021-11-20 15:58

想将Unity HDRP(高清渲染管线)设置到最佳状态,需要了解所有主要管线设置,及其背后的原理和作用,利用 CPU/GPU Profiler 的记录、Render Pipeline Debug 视图,以及 HDRP 的着色器框架来研究 HDRP 的运行。在开始分析HDRP渲染的画面之前,我们首先要了解HDRP的现有功能。
HDRP基本功能和对应参数
全局设置
你可能会发现,项目要从内置渲染管线移植到 HDRP 通常需要先做一些调整。这是因为:

[*]HDRP 使用着一种统一且符合真实物理的渲染框架,各项渲染属性的单位与现实世界一致,如用于设置摄像机的感光度 Exposure(曝光值),描述光照强度的 Candela(坎德拉)
[*]HDRP 项目包含有大量的渲染参数可由用户调整。因为 HDRP 集成了许多功能,并且管线也支持让艺术和工程人员深度定制渲染功能、微调和优化自己的作品
在内置渲染管线中,每个项目的Graphics(图形)(https://docs.unity3d.com/cn/current/Manual/class-GraphicsSettings.html)设置涵盖了大多数图形设置。而 Player 设置则包含了 Windows、Linux、Mac 或 Xbox 等平台的基础图形设置。



图1: Unity HDRP 里的各个全局图形设置

HDRP 同样包括了 Graphics 和 Player 设置,此外还增加了三组额外设置,用于修改管线的高级默认配置。

[*]在图形设置中,Scriptable Render Pipeline(可编程渲染管线 SRP)设置默认是 HD Render Pipeline Asset(HD 管线设置资源)。这个资源中的设置可在每一种管线的质量等级上被分别覆写
[*]HDRP Default Settings(默认设置)一栏则可配置:
– 默认 Frame(帧)设置,每个属性可在多台摄像机(包括用于平面反射或反射探针的摄像机)上分别覆写。你可以在此处设定摄像机默认是否渲染透明物体
– 默认 Volume(体积)组件,其属性可在所有摄像机上覆写。比如,你可以覆写默认的后处理效果强度,再使用体积来让后处理效果“室外强、室内弱”
– 默认 Diffusion Profile Assets(散射配置资源)属性,属性可由HDRP Defautl Setting选项栏下 Volume(体积)部分的 Diffusion Profile Override 组件进行覆写,并且也支持在所有摄像机上覆写。目前 Diffusion Profile 系统还带有一个“多余的覆写层面”,为了改善 HDRP 的用户体验,我们正在积极寻求其解决方案

[*]属于纯全局设置的其它属性不能被覆写
[*]而其它不太常用的底层设置则放在了 HDRP Config package 中。这些设置也属于纯全局设置,修改起来涉及重新编译 C# 程序集和 HDRP 着色器框架,所以这部分属性被另外放在了一个包中
质量等级
内置渲染管线支持在 Quality Settings(质量等级)(https://docs.unity3d.com/cn/current/Manual/class-QualitySettings.html) 一栏下设定任意数量的质量等级 。每个质量等级都可以保留各自的图形设置,比如在低端设备上减少使用各向异性纹理来节省硬件资源。
HDRP 也支持为每个质量等级指定一种 HD Render Pipeline Asset 覆写。与内置渲染管线相比,高清渲染管线的设置资源可储存额外几种参数,如平行光、点光源和聚光灯以及面光源的同屏最大数量,颜色分级的 LUT 大小和 Light Cookie 整图大小等等,让管线能有更多的定制空间。
内置渲染管线的 Quality Settings 有许多只适用于本管线的属性。在 HDRP 中,这些设置可能会从原位转移到其他地方,作为“替补设置”重新出现。
比如,内置渲染管线的 Quality Settings 选项栏可设定 Shadow Resolution(阴影分辨率)属性,而同样的设置在 HDRP 项目中就被放在了管线设置资源的“Lighting” > “Shadows” 这一部分。



图2: Unity HDRP的Quality属性界面包含参数较少



图3: 许多属性放在HD Render Pipeline Asset中

Camera(摄像机)和Frame(帧)设置
同内置渲染管线一样,HDRP 同样需要借助 Cameras(摄像机)(https://docs.unity3d.com/ScriptReference/Camera.html)来渲染场景。管线还会在同一对象上加上一个 HD Additional Camera Data(HD 摄像机补充数据)组件来为每个摄像机储存额外的参数。
实际上 HDRP 带有更为详细的摄像机定制参数。管线带有几种 Physical Camera(物理摄像机)设置,你甚至可以勾选 Custom Frame Settings 属性,在 Frame Settings(帧设置)中确定镜头框架的绘制方法。
Frame Settings(帧设置)系统由一组摄像机属性的覆写组成,其默认设置可在 HDRP Default Settings 一栏中设定。此外,每台摄像机都支持覆写默认的框架设置。
Render Pipeline Debug 窗口的 Camera 面板可以可视化显示出 Frame Settings 的覆写堆栈。
使用 Camera 面板
下例说明了 Render Pipeline Debug 窗口下 Camera 面板的使用方式:
场景中有一个名为 Main Camera 的摄像机,此 Main Camera 只渲染静态物体。HDRP Default Settings 选项卡默认启用运动矢量的绘制,而 Main Camera 的 Frame Settings 为了提高整体性能会禁用这一功能。
Motion Vectors 覆写堆栈会在 Default Frame 设置的左侧显示出 Overridden(覆写后) 的 Frame 设置。见图 4 选框 A:



图4: Render Pipeline Debug窗口中的Frame Settings覆写堆栈

而窗口内 Overridden Frame 设置的左边显示的是 Sanitized(清理后) Frame 设置。“清理(Sanitization)”过程可让 Overridden Frame 设置保持连贯。在同个例子中,Main Camera 的 Frame Settings 覆写并没有禁用 Opaque Object Motion(不透明物体运动)和 Transparent Object Motion(透明物体运动),但由于 Motion Vector 被禁用,这三种依赖于此的功能也会被清理系统关闭,如图 4 选框 B 所示。
Volume(体积)系统
类似于内置渲染管线的 Post-processing 堆栈,HDRP 的体积系统也是一种后处理。但它要比前者更详细,体积系统还涵盖了天空的渲染方式、间接光照的强度、额外的阴影设置以及许多其他特性。
简单地说,HDRP 体积系统是一种抽象的框架,可在镜头移动时改变其渲染设置。每种体积属性都带有默认值,这些值可在 Render Pipeline Debug 窗口的 Volume 面板中查看。在图 5 的最右侧我们能看到,Lens Distortion(镜头扭曲)的 Default Intensity(默认强度)为 0。



图5: Render Pipeline Debug窗口中的Volume覆写堆栈

这些代码写出来的默认属性可在 HDRP Default Settings 选项卡的 Volume Component 部分覆写。注意,这里的覆写依旧能被场景中的体积所覆盖。
而摄像机会反过来取场景各体积属性的混合值。如果体积属性不存在,摄像机就会取 HDRP Default Settings 下的属性值。否则,它就会取写入代码中的默认属性值。
如图6所示,Render Pipeline Debug 窗口的 Volume 面板可以很好地显示出 Volume 属性的覆写堆栈,以及当前启用中的体积属性,辅助图形调试。
网格和表面
类似内置渲染管线,HDRP 的几何体渲染通常由场景的 Mesh Renderer(网格渲染器)(https://docs.unity3d.com/ScriptReference/MeshRenderer.html)或 Skinned Mesh Renderer(蒙皮网格渲染器)(https://docs.unity3d.com/ScriptReference/SkinnedMeshRenderer.html)完成。HDRP 独有的渲染数据主要存储在 Materials(材质) 中,以方便应用到兼容的 Renderer(渲染器)或 Shader Graphs 上。
光照
类似内置渲染管线,HDRP 的每盏灯都会被存储为 HDRP 特有的数据格式。管线除了常规 Light 组件外还会使用 HD Additional Light Data(HD 光照补充数据)组件,因为许多光照设置并非来自关联了 Light 组件的 Game Object 上。下方为几个例子:

[*]间接光照将受 Light Probe Groups(光照探针组)、Reflection Probes(反射探针,带有 HD Additional Reflection Data(HD 反射补充数据组件)、Planar Reflection Probes(平面反射探针)及 Lighting Settings(光照设置)影响。光照本身也可以由 Indirect Lighting Controller(间接光照控制器)体积组件进行调整。
[*]体积系统决定了天空的光照
[*]体积系统也还控制着相关的屏幕空间效果。这些效果类似于一个光源或阴影源:Screen Space Reflection(屏幕空间反射)、Screen Space Refraction(屏幕空间折射)、Screen Space Global Illumination(屏幕空间全局光照)、Screen Space Ambient Occlusion(屏幕空间环境遮蔽)及 Contact Shadow(接触阴影)。
[*]Subsurface Scattering(次表面散射)模拟了“表面到表面的光照”。大多数次表面散射属性由 Diffusion Profiles(散射配置)设定,而后者又定义在了材质中。你可以在体积系统中用 Diffusion Profile Override(散射配置覆写)覆盖其属性。



图6: Indirect Lighting Controller(间接光照控制器)体积组件

相关链接:
- 技术文档:HDRP 的 10 版本(https://docs.unity3d.com/cn/Packages/com.unity.render-pipelines.high-definition@10.4/manual/whats-new-10.html)支持 Unity 2020 LTS 及以上
- 更多HDRP 相关内容,欢迎来到“Unity栋哥带你学HDRP专栏”(https://space.bilibili.com/386224375/channel/seriesdetail?sid=261125)学习


未完…更多优化方法,敬请期待!

Baste 发表于 2021-11-20 16:05

要画质没性能,要性能没画质,一切指望目标用户硬件水平
页: [1]
查看完整版本: 怎么样设置HDRP参数,能提升Unity画质和渲染性能?