高清渲染管线 (High Definition Render Pipeline) 概述
这是高清渲染管线 (HDRP) 中可以使用的所有功能的高级概述。本文档按以下类别介绍这些功能:
项目
平台支持
您可以在 Xbox One、PS4 以及与计算着色器兼容的设备(适用于 DirectX 11、DirectX 12、Metal 和 Vulkan)上运行 HDRP 项目。
虚拟现实
HDRP 与 VR 兼容,并针对单通道渲染进行了优化。有关虚拟现实的更多信息,请参阅 VR 文档。
摄像机相对渲染
与内置渲染管线相比,HDRP 以更稳健和数值更稳定的方式渲染远处的游戏对象(具有较大的世界空间坐标)。如需了解 HDRP 如何实现此目标,请参阅“摄像机相对渲染”文档。
动态分辨率
使用动态分辨率时,HDRP 能够以不同的分辨率进行渲染。为此,HDRP 要么使用硬件功能(如果可用),要么渲染到大小等于或小于当前视口的渲染目标。这有助于在 Unity 项目中保持稳定的帧率。有关动态分辨率以及 HDRP 支持的类型的更多信息,请参阅动态分辨率文档。
体积
使用体积可以本地化环境场景设置和后期处理效果。您可以在一个场景中拥有多个体积,并根据摄像机的位置来创建诸如雾密度、天空颜色或曝光等效果。如需了解如何使用 HDRP 中的体积,请参阅“体积”文档。
材质
HDRP 着色器允许您使用以下功能:
-
- 透明表面的不同混合模式。
- 与雾效搭配使用的透明表面。
- 透明表面的折射和失真。
材质类型。
- 各向异性,适用于从不同角度查看时会改变高光的表面,例如拉丝金属或天鹅绒。
- 彩虹色,适用于从不同角度查看时会改变颜色的表面,例如肥皂泡或昆虫翅膀。
- 金属性,适用于仅由镜面反射光照提供光照并为镜面反射颜色采用基础颜色输入的表面。例如,铝、铜和钢。
- 镜面反射颜色,适用于需要具有彩色镜面反射高光的表面。
- 次表面散射,适用于模拟光线相互作用和散射的半透明表面,例如皮肤或植物叶子。
- 半透明,适用于模拟光线相互作用但不会模糊穿透材质的光线的表面。
像素和顶点位移,适用于要基于高度贴图进行位移的表面。
发射,适用于要用作自发光光源的材质。
贴花,适用于要将纹理投射到的表面。
细节贴图,适用于要将微观细节添加到的表面。
光照着色器 (Lit Shader)
光照着色器可用于轻松创建逼真的材质,并包含用于诸如次表面散射、彩虹色和半透明等效果的选项。这是 HDRP 中的默认着色器。如需了解更多信息,包括着色器属性的完整列表,请参阅“光照着色器”文档。
分层光照着色器 (Layered Lit Shader)
分层光照着色器将主要材质与其他可平铺的材质组合在一起,以便产生质量与单个高分辨率纹理相似的视觉效果,但其性能成本低于使用单个高分辨率纹理的光照着色器。如需了解更多信息,包括着色器属性的完整列表,请参阅“分层光照着色器”文档。
无光照着色器 (Unlit Shader)
无光照着色器可用于创建不受光照影响的材质。无光照着色器非常适合生成视觉效果。如需了解更多信息,包括着色器属性的完整列表,请参阅“无光照着色器”文档。
使用设置中的 Shadow Matte 选项,我们可以使表面在无光照的情况下获得阴影。我们有不透明阴影或透明阴影,每种阴影都有 Alpha 值。
StackLit 着色器 (StackLit Shader)
StackLit 着色器在光照着色器上进行了改进,相对于性能而言,更注重质量。与光照着色器相比,此着色器可以更精确地涂覆表面,而与光照着色器不同的是,此着色器可以让您同时使用多种材质特征,例如各向异性、次表面散射彩虹色和朦胧参量。
毛发着色器 (Hair Shader)
毛发着色器专为在 Unity 项目中精确渲染逼真的毛发而设计。此着色器使用改进的 Kajiya Kay 光照模型,该模型具有更好的能量守恒,并提供更大的灵活性。如需了解更多信息,包括着色器属性的完整列表,请参阅毛发着色器和毛发主栈文档。
织物着色器 (Fabric Shader)
织物着色器用于在 HDRP 中渲染逼真的织物材质。你可以使用棉绒或丝绸光照模型来创建各种各样的织物。如需了解更多信息,包括着色器属性的完整列表,请参阅棉/绒着色器、丝绸着色器和织物主栈文档。
AxF 着色器 (AxF Shader)
AxF 着色器支持 X-Rite AxF 测量的材质格式。Unity Enterprise for Product Lifecylce 中提供的 AxF Importer 在导入 AxF 资源时自动填充 AxF 材质。如需了解更多信息,包括着色器属性的完整列表,请参阅“AxF 着色器”文档。
贴花 (Decals)
HDRP 允许在场景中的表面上应用贴花。要将贴花应用到某个表面上,可以使用 Decal Projector 组件将贴花投影到该表面上,也可以将贴花着色器直接分配给网格,然后将网格放置在表面上。有关更多信息,请参阅“贴花”文档。
HDRP 还支持贴花层,因此可以控制游戏对象是否接收贴花。
地形着色器 (Terrain Shader)
地形光照着色器与内置的地形系统兼容,并且在单个绘制调用中最多支持八层。此着色器使用与光照着色器相同的光照模型。如需了解更多信息,包括着色器属性的完整列表,请参阅“地形光照着色器”文档。
光照
光源类型
HDRP 光源类型使用物理光单位来帮助你以最逼真的方式为场景提供光照。为了协助创建物理上精确的光源,Light 组件 Inspector 在 Intensity 和 Temperature 属性旁边提供了图标。每个图标显示每个属性值当前代表的真实光源。每个图标也是一个按钮,可以单击该按钮来访问与实际光源匹配的预设值列表。为使光源在使用 PLU 时正常工作,需要遵循 HDRP 单位约定(1 个 Unity 单位等于 1 米)。HDRP 光源类型为:
方向光
- 色温
- 彩色剪影
- 阴影遮罩支持
聚光灯
- 色温
- 彩色剪影
- 阴影遮罩支持
- 圆锥、棱锥和盒体形状
点光源
- 色温
- 彩色剪影
- 阴影遮罩支持
矩形光源
- 色温
- 彩色剪影
- 阴影遮罩支持
灯管
- 色温
- 无阴影遮罩支持
圆盘光源(仅烘焙)
- 色温
- 无阴影遮罩支持
如需了解更多信息,包括光源属性的完整列表,请参阅 Light 组件文档。
IES 配置文件和光照剪影
HDRP 支持以照明工程协会 (IES) 文件格式描述从光源发出的光的分布。HDRP 支持点光源、聚光灯(圆锥、棱锥和盒体形状)以及矩形面光源的 IES 配置文件。也可以将 IES 配置文件与光照剪影混合,甚至将配置文件和光照剪影混合以进行光照贴图烘焙。
反射探针
HDRP 支持涉及表面平滑度的立方体贴图反射。HDRP 立方体贴图反射还可以支持伪造基于距离的粗糙度。这有助于在场景中实时产生逼真的反射。有关更多信息,请参阅反射探针简介。
平面反射探针
HDRP 支持涉及表面平滑度的平面反射探针。因此可以创建一些模仿发亮镜子或潮湿地板的效果。对于接近于基于物理的平面反射,HDRP 提供了精确过滤机制。
有关更多信息,请参阅平面反射探针。
屏幕空间反射和折射
HDRP 提供了用于反射和折射的屏幕空间解决方案。它使用屏幕的深度和颜色缓冲区来帮助模拟光线传播到摄像机的路径,并由此计算出准确的反射和折射。此功能也可用于窗户或水面等透明材质。如需了解更多信息,请参阅屏幕空间反射和屏幕空间折射文档。
屏幕空间全局光照
HDRP 支持屏幕空间全局光照 (SSGI)。SSGI 是一种访问环境所生成的间接漫射光照的算法。它的工作方式与屏幕空间反射相同,都是使用光线追踪来计算结果。
屏幕空间失真
HDRP 提供了用于失真的屏幕空间解决方案。失真与折射相似,只是它是纯粹由美术控制的。有关更多信息,请参阅失真文档。
曝光
HDRP 支持通过多种方法计算曝光。这些方法包括:
直方图曝光
HDRP 的曝光实现可以计算图像的直方图,允许选择要丢弃的高和低百分位值。丢弃阴影或高光中的异常值有助于计算更稳定的曝光。
有关更多信息,请参阅曝光。
计量模式
HDRP 的曝光实现中包括一个计量遮罩。这包括一个基于纹理的遮罩和一个程序化模式。
有关更多信息,请参阅曝光。
发射
HDRP 材质支持发射,这使您可以将材质制成自发光的可见光源。全局光照会考虑发射,您可以根据实际光源使用物理光单位来设置强度。
阴影
HDRP 使用多种方法来计算阴影:
- 阴影级联:HDRP 使用级联分割来根据与摄像机的距离控制方向光投射的阴影质量。
- 接触阴影:HDRP 在深度缓冲区内行进光线以处理这些阴影。这样,HDRP 可以捕获常规阴影算法无法捕获的小细节。
- 微阴影:HDRP 使用材质的法线贴图和环境光遮挡贴图来估算这些贴图(如果它们是网格)将投射的阴影。
要减少主级联阴影贴图的锯齿,可以对它们应用不同的过滤器,例如 PCF 或 PCSS。
对于精准光源和面光源阴影,HDRP 可以根据光源覆盖的屏幕大小来实现动态分辨率。HDRP 会重新缩放阴影图集的内容,否则为全屏。有关 HDRP 使用的过滤算法的更多信息,请参阅过滤质量文档。
在阴影贴图的高级设置中,还可以在阴影或阴影的半影上应用色调。
天空
在 HDRP 中,您可以在体积中设置天空,因此您可以更改天空设置,甚至可以更改天空本身的类型,具体取决于摄像机在场景中的位置。HDRP 允许您将视觉天空与用于环境光照的天空分开。HDRP 包含以下内置天空类型供您在 Unity 项目中使用:
- 渐变天空 (Gradient Sky):使用天空的顶部、中部和底部三个颜色区域渲染简单的天空。
- HDRI 天空 (HDRI Sky):根据您在 HDRI Volume 组件中设置的立方体贴图纹理来构造天空环境。
- 基于物理的天空 (Physically Based Sky):模拟具有两部分大气的球形行星,其中大气的密度会相对于高度呈指数递减。
- 程序化天空 (Procedural Sky):根据您在 Procedural Sky Volume 组件中选择的值来生成环境。这类似于 Unity 内置渲染管线中的程序化天空。这种天空类型已弃用,但仍可以在 HDRP 项目中使用。如需了解具体做法,请参阅升级到 2019.3。
HDRP 能够处理不同摄像机看到的多个天空。
雾效
在 HDRP 中,您可以在体积中设置雾效,因此您可以更改雾效设置,甚至可以更改雾效类型本身,具体取决于摄像机在场景中的位置。您可以自己设置雾的颜色,也可以使用天空的颜色。HDRP 雾效会影响具有不透明和透明表面的材质。HDRP 实现了具有可选体积效果的指数雾。
光源层
光源层是您为光源和网格指定的 LayerMask。光源仅为光源上启用的光源层上的网格提供光照。您还可以在阴影贴图设置中使用光源层将阴影与光照分离。有关光源层的更多信息,请参阅“光源层”文档。
阴影贴图下拉选单中的光源层还可用于控制哪个对象从哪个光源获得阴影。默认情况下,光源层和阴影贴图光源层都是同步的,因此结果是相干的(对象接收光时也会投射阴影)。有关阴影贴图光源层的更多信息,请参阅“阴影光源层”部分。
屏幕空间环境光遮挡
HDRP 包括一个屏幕空间环境光遮挡效果,可实时模拟环境光遮挡。它根据场景中的光源和游戏对象周围的环境来模拟环境光在游戏对象表面上的强度和位置。
屏幕空间镜面反射遮挡
HDRP 还提供了对屏幕空间环境光遮挡效果的扩展,该扩展效果支持方向信息。HDRP 将此效果直接应用于间接镜面反射光照。
物理光单位
HDRP 使用真实的物理光单位,因此您可以轻松地以逼真的方式为场景提供光照。如需了解物理光单位的更多信息,包括 HDRP 使用的一组单位,请参阅物理光单位文档。
使用物理光单位时,光线强度可能确实很高,并且会导致精度问题和高光限制。 为了抵消这种影响,HDRP 会使用预曝光。在存储光照信息之前,预曝光会应用上一帧的摄像机曝光。
光线追踪(预览版)
HDRP 使用光线追踪代替其某些屏幕空间效果、阴影技术和网格渲染技术。 实时光线追踪效果目前处于预览版,将来可能会改变行为。
- 光线追踪环境光遮挡取代了屏幕空间环境光遮挡,前者采用更精确的光线追踪环境光遮挡技术,可利用屏幕外的数据。
- 光线追踪接触阴影取代了接触阴影,前者采用更精确的光线追踪接触阴影技术,可利用屏幕外的数据。
- 光线追踪全局光照是 HDRP 中光照探针和光照贴图的替代方法。
- 光线追踪反射取代了屏幕空间反射,前者采用光线追踪反射技术,可利用屏幕外的数据。
- 光线追踪阴影取代了方向光、点光源和面光源等光源的阴影贴图。
- 递归光线追踪取代了网格的渲染管线。使用该功能的网格将递归投射折射和反射光线。
- 光线追踪次表面散射是可利用屏幕外数据的次表面散射的替代方案。
摄像机
后期处理
HDRP 包含自己专用的后期处理实现方案,用于生成异常高质量的图形。你可以使用后期处理将全屏滤镜和效果应用于摄像机,从而以极少的设置时间显著改善 Unity 项目的视觉效果。有关 HDRP 后期处理的概述,请参阅后期处理文档。
累积运动模糊
HDRP 包含一个录制 API,可用于渲染诸如高质量累积运动模糊之类的效果。此技术可将来自多个中间子帧的信息组合起来,从而创建最终的“融合”帧。借助该 API 可以使用脚本提取正确融合的最终帧并进行进一步处理或将它们保存到磁盘。
有关此功能的信息以及一些示例脚本,请参阅多帧渲染和累积。
抗锯齿
HDRP 包含以下抗锯齿方法,可帮助您在考虑性能和质量的情况下消除锯齿效果:
- 多重采样抗锯齿 (MSAA):对每个像素中的多个位置进行采样,并将这些样本合并以生成最终像素。可使用 Alpha 屏蔽某个区域以使用 MSAA。这是 HDRP 中最耗费资源的抗锯齿技术。
- 时间抗锯齿 (TAA):使用历史缓冲区中的帧来平滑边缘,比快速近似抗锯齿技术更有效。在运动中的边缘平滑效果方面要明显好得多,但必须为此启用运动矢量。
- 亚像素形态抗锯齿 (SMAA):在图像的边界中查找图案,并根据该图案混合这些边界上的像素。
- 快速近似抗锯齿 (FXAA):在每个像素级别上平滑边缘。这是 HDRP 中最不耗费资源的抗锯齿技术。
物理摄像机
HDRP 使用基于物理的摄像机系统,该系统与 HDRP 的其他物理特征(例如物理光单位)无缝协作,以产生物理上精确的统一结果。基于物理的摄像机的工作方式类似于真实摄像机,因此使用相同的属性。这使您可以配置 HDRP 摄像机来模拟真实摄像机的行为,并获得预期效果(例如曝光和景深)。有关 HDRP 基于物理的摄像机的更多信息,包括使用方法的描述,请参阅 Camera 组件文档。
自定义后期处理
HDRP 允许添加与体积框架集成的自定义后期处理。可以在不透明和天空对象之后、时间抗锯齿通道之前、内置后期处理之前或内置后期处理之后注入后期处理。如需了解更多信息,请参阅“自定义后期处理”文档。
自定义通道
自定义通道允许您在渲染循环中的某些点注入着色器和 C#,从而让您能够绘制对象、进行全屏渲染和读取某些摄像机缓冲区,例如深度、颜色或法线,请参阅“自定义通道”文档。
自定义通道 API 允许从另一视角(如禁用的摄像机)在主摄像机的渲染中渲染游戏对象。该 API 还内置支持将深度、法线和切线渲染到 RTHandle 中。
也可以使用此摄像机覆盖来渲染具有不同视野的某些游戏对象,例如第一人称应用程序中的手臂。
自定义通道 AOV 导出
凭借此功能可以使用 HDRP 中任意输出变量 (AOV) API 的扩展从自定义通道注入点导出任意数据。一个使用示例是导出使用自定义通道渲染的“对象 ID”。有关该功能和示例脚本的信息,请参阅 AOV 文档。
路径追踪
路径追踪景深
HDRP 包含一种景深模式,可用于生成具有高质量散焦模糊效果的路径追踪图像。与后期处理的景深相比,此模式适用于多个透明层,除了路径追踪图像中的典型噪点外,不会产生任何瑕疵。可以通过增加样本数和/或使用外部降噪工具来解决此问题。
有关此功能的更多信息,请参阅景深。
路径追踪器融合
HDRP 包含一个录制 API,可用于渲染融合的路径追踪图像。此技术可将来自多个中间子帧的信息组合起来,从而创建最终的“融合”帧。借助该 API 可以使用脚本提取正确融合的最终帧并进行进一步处理或将它们保存到磁盘。
路径追踪次表面散射
路径追踪使用随机游走方法支持次表面散射 (SSS)。要使用该功能,请采用与 HDRP 材质相同的方式启用路径追踪并设置 SSS。
有关 HDRP 中的 SSS 的信息,请参阅次表面散射。
路径追踪雾效
路径追踪现在支持雾效吸收。与 SSS 一样,要此功能,请采用与 HDRP 中的标准雾效相同的方式启用路径追踪并设置雾效。
有关 HDRP 中的雾效的信息,请参阅雾效。
工具
Render Pipeline Wizard
为了帮助您快速正确地设置 HDRP,HDRP 提供了 Render Pipeline Wizard。通过使用该向导,只需单击一次按钮即可解决配置问题,并创建一个已经使用默认场景设置进行配置的模板场景。有关 Render Pipeline Wizard 的更多信息,包括使用方法的描述,请参阅 Render Pipeline Wizard 文档。
Render Pipeline Debugger
Render Pipeline Debugger 包含许多调试和可视化工具,可帮助您快速了解和解决任何问题。有关 Render Pipeline Debugger 的更多信息,包括使用方法的描述,请参阅 Render Pipeline Debugger 文档。
LookDev
LookDev 是一个查看器,可用于在良好且一致的光照环境中导入和显示资源。使用该工具可以验证外包资源或展示您自己使用 HDRP 创建的资源。有关 LookDev 的更多信息,包括使用方法的描述,请参阅 LookDev 文档。
调试模式
HDRP 包含调试模式,可帮助你调试资源、光照和场景。
光照调试视图
为了帮助调试场景中的光照,HDRP 提供各种光照调试视图模式,可用于将光源的各个分量分为多个部分。这些调试模式在 AOV API 中也可用,允许录制器导出它们:
- 漫射
- 镜面反射
- 直接漫射
- 直接镜面反射
- 间接漫射
- 反射
- 折射
光源层调试模式
HDRP 包括一个光源层调试模式,该模式可显示分配给每个游戏对象的光源层或突出显示与特定光源的光源层匹配的游戏对象。
有关更多信息,请参阅 HDRP 调试窗口中的 Lighting 面板部分。
体积调试模式
Render Pipeline Debug 窗口具有一个 Volume 面板,可用于可视化影响特定摄像机的 Volume 组件。
对于影响最终插值的每个体积,Volume 面板将显示每个属性的值以及是否覆盖了该属性。此外还会使用体积的权重和混合距离来计算体积的影响百分比。
有关更多信息,请参阅 HDRP 调试窗口中的 Volume 面板部分。
四边形过度绘制和顶点密度
此调试工具包含两部分:
- 四边形过度绘制 (Quad Overdraw):突出显示 GPU 四边形(运行由小三角形或狭长三角形引起的多个片元着色器)。
- 顶点密度 (Vertex Density):显示像素(运行多个顶点着色器)。
这对于远距离或高细节级别的网格很有用。此调试工具可以帮助在场景中查找可能需要 LOD 的游戏对象。此模式目前在 Metal 上不受支持。
MatCap 模式
在 MatCap 模式下,HDRP 将 Scene 窗口的 Lighting 按钮的功能替换为材质捕获 (MatCap.md) 视图。此模式特别适合在不设置场景光照的情况下用于导航和获得场景感。有关 MatCap 模式的更多信息,包括使用方法的描述,请参阅 MatCap 模式。
背板
在 HDRI 天空中,您可以将底部直接投影到各种形状(例如矩形、圆形、椭圆形)的平面上或无限大的平面上。 为了匹配场景中游戏对象的缩放,可以更改像素占用空间。
光源资源管理器 (Light Explorer)
光源资源管理器使您可以选择和编辑光源:方向光、点光源、聚光灯、面光源、反射探针、平面探针以及天空和雾效体积。
图形合成器
图形合成器 (Graphics Compositor) 允许在 3D 内容、静态图像和视频各层之间进行实时合成操作。
此工具支持三种类型的合成技术:
- 由 Shader Graph 引导的基于图的合成。
- 摄像机堆叠合成:多个摄像机渲染到相同的渲染目标,然后可以将结果用于基于图的合成。
- 3D 合成:将合成图层插入 3D 场景中,以便在 3D 游戏对象上的合成图层之间创建诸如反射/折射之类的效果。
总体而言,此工具用于通过将图像和视频与 3D 内容实时混合来合成最终帧,所有这些都在 Unity 内进行,无需外部合成工具。
有关该功能的信息,请参阅 HDRP 合成器文档。
编程
材质架构
HDRP 支持前向和延迟材质。延迟材质比前向材质更高效,但支持的属性集略微受限。前向材质没有属性限制,但渲染速度比延迟材质慢。
HDRP 的材质架构允许您添加自己的前向材质,并包含一个在 HDRP 中编译材质时必须遵循的规则列表。
光照架构
HDRP 使用混合瓦片和集群渲染器对不透明和透明游戏对象进行前向和延迟渲染。这将创建一个局部光源列表,以允许 HDRP 渲染大量光源。使用前向渲染器可以为更复杂的材质提供光照,例如具有次表面散射或各向异性的材质。使用延迟渲染器可以提高常见材质(例如标准光照材质或无光照材质)的光照处理速度。有关 HDRP 光照架构的更多信息,包括对瓦片和集群渲染的说明,请参阅光照管线文档。
对阴影更新的控制
HDRP 提供了一个 API 来请求光源更新其阴影贴图。您所要做的就是将阴影贴图更新模式设置为 OnDemand,并在 RequestShadowMapRendering
类中调用 RequestShadowMapRendering()
。