高清渲染管线 (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 着色器”文档。
贴花着色器 (Decal Shader)
贴花着色器可用于在场景中的表面上放置贴花。要将贴花应用到某个表面上,可以使用 Decal Projector 组件将贴花投影到该表面上,也可以将贴花直接分配给网格,然后将网格放置在表面上。如需了解更多信息,包括着色器属性的完整列表,请参阅“贴花着色器”文档。
地形着色器 (Terrain Shader)
地形光照着色器与内置的地形系统兼容,并且在单个绘制调用中最多支持八层。此着色器使用与光照着色器相同的光照模型。如需了解更多信息,包括着色器属性的完整列表,请参阅“地形光照着色器”文档。
光照
光源类型
HDRP 光源类型使用物理光单位来帮助您以最逼真的方式为场景提供光照。为使光源在使用 PLU 时正常工作,需要遵循 HDRP 单位约定(1 个 Unity 单位等于 1 米)。HDRP 光源类型为:
方向光
- 色温
- 彩色剪影
- 阴影遮罩支持
聚光灯
- 色温
- 彩色剪影
- 阴影遮罩支持
- 圆锥、棱锥和盒体形状
点光源
- 色温
- 彩色剪影
- 阴影遮罩支持
矩形光源
- 色温
- 彩色剪影
- 阴影遮罩支持
灯管
- 色温
- 无阴影遮罩支持
圆盘光源(仅烘焙)
- 色温
- 无阴影遮罩支持
如需了解更多信息,包括光源属性的完整列表,请参阅光源组件文档。
反射探针
HDRP 支持立方体贴图和平面 GPU 反射探针,可帮助您在场景中实时产生逼真的反射。有关更多信息,请参阅反射探针简介。
屏幕空间反射和折射
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 允许您添加与体积框架集成的自定义后期处理。您可以在不透明和天空对象之后、内置后期处理之前或内置后期处理之后注入后期处理。如需了解更多信息,请参阅“自定义后期处理”文档。
抗锯齿
HDRP 包含以下抗锯齿方法,可帮助您在考虑性能和质量的情况下消除锯齿效果:
- 多重采样抗锯齿:对每个像素中的多个位置进行采样,并将这些样本合并以生成最终像素。这是 HDRP 中最耗费资源的抗锯齿技术。
- 时间抗锯齿:使用历史缓冲区中的帧来平滑边缘,比快速近似抗锯齿技术更有效。在运动中的边缘平滑效果方面要明显好得多,但您必须为此启用运动矢量。
- 亚像素形态抗锯齿:在图像的边界中查找图案,并根据该图案混合这些边界上的像素。
- 快速近似抗锯齿:在每个像素级别上平滑边缘。这是 HDRP 中最不耗费资源的抗锯齿技术。
物理摄像机
HDRP 使用基于物理的摄像机系统,该系统与 HDRP 的其他物理特征(例如物理光单位)无缝协作,以产生物理上精确的统一结果。基于物理的摄像机的工作方式类似于真实摄像机,因此使用相同的属性。这使您可以配置 HDRP 摄像机来模拟真实摄像机的行为,并获得预期效果(例如曝光和景深)。有关 HDRP 基于物理的摄像机的更多信息,包括使用方法的描述,请参阅 Camera 组件文档。
自定义通道
自定义通道允许您在渲染循环中的某些点注入着色器和 C#,从而让您能够绘制对象、进行全屏渲染和读取某些摄像机缓冲区,例如深度、颜色或法线,请参阅“自定义通道”文档。
工具
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 文档。
MatCap 模式
在 MatCap 模式下,HDRP 将 Scene 窗口的 Lighting 按钮的功能替换为材质捕获 (MatCap.md) 视图。此模式特别适合在不设置场景光照的情况下用于导航和获得场景感。有关 MatCap 模式的更多信息,包括使用方法的描述,请参阅 MatCap 模式。
背板
在 HDRI 天空中,您可以将底部直接投影到各种形状(例如矩形、圆形、椭圆形)的平面上或无限大的平面上。 为了匹配场景中游戏对象的缩放,可以更改像素占用空间。
光源资源管理器 (Light Explorer)
光源资源管理器使您可以选择和编辑光源:方向光、点光源、聚光灯、面光源、反射探针、平面探针以及天空和雾效体积。
编程
材质架构
HDRP 支持前向和延迟材质。延迟材质比前向材质更高效,但支持的属性集略微受限。前向材质没有属性限制,但渲染速度比延迟材质慢。
HDRP 的材质架构允许您添加自己的前向材质,并包含一个在 HDRP 中编译材质时必须遵循的规则列表。
光照架构
HDRP 使用混合瓦片和集群渲染器对不透明和透明游戏对象进行前向和延迟渲染。这将创建一个局部光源列表,以允许 HDRP 渲染大量光源。使用前向渲染器可以为更复杂的材质提供光照,例如具有次表面散射或各向异性的材质。使用延迟渲染器可以提高常见材质(例如标准光照材质或无光照材质)的光照处理速度。有关 HDRP 光照架构的更多信息,包括对瓦片和集群渲染的说明,请参阅光照管线文档。
对阴影更新的控制
HDRP 提供了一个 API 来请求光源更新其阴影贴图。您所要做的就是将阴影贴图更新模式设置为 OnDemand,并在 RequestShadowMapRendering
类中调用 RequestShadowMapRendering()
。