一切始于光照。Unity 构建了高清渲染管线 (HDRP),帮助实现创作者的愿景,同时利用高端 PC 或主机硬件达到全新水平的图形现实主义。本指南旨在指导现有的 Unity 美术和开发人员探索 HDRP 基于物理的照明技术。
HDRP 代表 Unity 在实时渲染技术领域的进步,允许用户使用如同现实世界的光照效果。你想用自然阳光渲染郁郁葱葱的雨林景观?还是遍布霓虹灯的大城市混凝土丛林?借助 HDRP,你可以用摄影师的画笔绘制场景关卡,将玩家从熟悉空间带到奇幻世界。
本文选取了部分精彩内容:
HDRP光照概述
HDRP 可利用各种功能扩展 Unity 现有的照明系统,使场景渲染更接近真实世界的照明:
物理照明单位和曝光:HDRP 使用真实世界的光照强度和单位。匹配已知光源的规格,并使用物理摄像机设置曝光。
高级光照:利用聚光灯和区域灯的附加形状选项控制灯光位置。使用光照层限制灯光对特定网格的影响。应用实时效果,如屏幕空间全局照明和屏幕空间折射。
天空景色:使用不同技术生成自然的天空。使用基于物理的天空系统程式化地模拟行星大气层,或将 HDRI 用作立方体贴图纹理。
雾:用雾为场景添加深度和维度。使体积插件能够集成雾效果和前景对象,并渲染电影光束效果。保持对每个光源的体积光和阴影控制,并使用局部体积雾组件和 3D 遮罩纹理精确控制雾密度。
体积系统:HDRP 包含一个直观系统,让您可以根据摄像机位置或优先级禁用不同光照效果和设置。分层和混合体积允许对场景的每一平方进行专家级控制。
后处理:HDRP 后处理由基于现有体积系统的一系列体积覆盖进行控制。可添加边缘柔化、色调映射、色彩分级、泛光、景深以及一系列其他效果。
高级阴影:HDRP 提供针对阴影的高级美工和性能控制。可修改其色调、过滤、分辨率、内存预算和更新模式。使用接触阴影和微阴影突出小细节和额外的深度。
高级反射:反射表面可使用多项技术进行渲染。反射探针提供传统的反射映射方法,其中平面反射探针提供更多适用于平面的高级选项。屏幕空间反射 (SSR) 增加了一种使用深度缓冲区的实时技术。
可扩展性:HDRP 是基于 Unity 的可编程渲染管线构建的。经验丰富的技术美工和图形程序员可以拓展管道,甚至使其超出现有用途。
Unity 可编程渲染管线:
https://docs.unity3d.com/Manual/ScriptableRenderPipeline.html
HDRP场景示例
Unity Hub 中提供的 3D 场景示例是一个模板项目,可帮助您开始使用 HDRP 和基于物理的照明。这个轻量级项目不到 100 兆,并且提供了一个 HDRP 工作范例,您可以随时快速加载以便参考。
我们将在本指南中使用该项目演示 HDRP 的许多功能。
这个小型的多房间环境展示了采用不同照明设置的 3 个不同区域。代表太阳的定向光源具有 10 万勒克斯的现实世界光强,每个位置都会校正摄像机的曝光,以匹配照明环境。
使用 WASD 按键和鼠标驱动 FPS 控制器在关卡中移动。
- 房间 1 为圆形平台,采用头顶阳光照明。贴花会在水泥地板上增加污垢和水洼。
- 房间 2 增加了来自天窗的体积光束,以及玻璃橱内使用先进材料制成的树木。
- 房间 3 展示了室内人工照明和发光材料。
如欲深入了解 HDRP 3D 场景示例,请查看这篇文章(点击回看),该文章对场景模板进行了详细说明。大家也可以观看由 Unity 大中华区平台技术总监杨栋制作的讲解视频《Unity2020.2 - HDRP最新模板项目(全方位讲解)》。
https://learn.u3d.cn/tutorial/unity-2020-2-hdrp-template
更多 HDRP 内容示例
当您了解了 HDRP 3D 场景示例后,您可能会发现其他一些项目对您也有所帮助。
虽然最初不是用于游戏目的,但汽车展示厅项目使用逼真的照明展示了高度细节化的车辆。您可以在交互式演示中改变展台灯光、汽车油漆材料和背景。这个项目可通过 Unity Hub 获得。
飞船演示主要展示视觉特效图,但它也采用了许多科幻环境中的 HDRP 功能。您可以从 Unity 的 Plastic 中下载。
https://plastichub.unity.cn/unity-tech-cn/SpaceshipDemo
如果您通过 VR 使用 HDRP,则可以体验虚拟现实炼金术师实验室。该项目展示了小型中世纪实验室中的交互效果。
https://github.com/Unity-Technologies/VRAlchemyLab
如欲学习如何制作电影或动画电影,则使用我们的电影工作室示例,它展示了如何设置和照亮镜头的有趣短片 Mich-L,该短片混合了风格化和照片级渲染。
https://assetstore.unity.com/packages/templates/tutorials/cinematic-stud...
当您了解了高清渲染管线时,欢迎探索其他项目。
项目设置
您可以在项目设置(Project Settings)(编辑>项目设置(Edit > Porject Settings))中的图形(Graphics)、HDRP默认设置(HDRP Default Settings) 和质量(Quality)下找到一些基本设置。
注:HDRP 默认设置(HDRP Default Settings) 在 Unity 2021.2/HDRP 12 及以上版本中称为 HDRP 全局设置。
图形设置
顶部字段脚本渲染管道设置(Scriptable Render Pipeline Settings)表示磁盘上存储所有 HDRP 设置的文件。
每个项目可以由多个此类管道资源。可以将每个资源视为单独的配置文件。例如:您可以用它们来存储不同目标平台(Xbox、PlayStation 等)的专门设置,或者它们也可以代表玩家可以在运行时切换的不同视觉质量水平。
3D 场景示例从设置(Settings) 文件夹的几个管道资源开始:HDRPHighQuality、HDRPLowQuality 和 HDRPMediumQuality。还有一个 HDRPDefaultResources 文件夹,包含 DefaultHDRPAsset。
质量设置
质量设置(Quality Settings)允许您将其中一个管道资源与预定义的质量水平相对应。选择顶部的水平(Level),以激活特定渲染管道资源(Render Pipeline Asset),如渲染(Rendering) 选项中所示。
您可以自定义默认值或创建额外的质量水平,每个质量水平都与额外的管道资源配对。
质量水平代表管道中激活的一组特定视觉功能。例如:您可以在应用中创建多个图形层级。在运行时,玩家可以根据硬件选择活动质量水平。
在质量/HDRP子项中编辑实际的管道设置。您还可以在项目(Project) 视图中选择管道资源(Pipeline Asset),然后在检查器(Inspector) 中编辑设置。
HDRP优化
请注意,在管道资源(Pipeline Asset)中启用越多功能,消耗的资源就越多。一般来说,优化您的项目,以便只使用您实现预期效果所需的功能。如果您不需要某个功能,则可以将其关闭,以提高性能,节省资源。
下面介绍了一些典型功能,如果无需使用,可以禁用:
- HDRP 资源中:贴花、低分辨率透明度、透明背面/深度预传递/深度后传递、SSAO、SSR、接触阴影、体积插件、次表面散射和变形
- 在摄像机帧设置(主摄像机、用于集成效果(如反射)的摄像机或用于自定义效果的附加摄像机)中:折射、后处理、后处理之后、传输、反射探针、平面反射探针和大型拼贴预传递
HDRP默认设置
HDRP 默认设置 (HDRP Default Settings) 部分(在Unity 2021.2/HDRP 12 中称为 HDRP 全局设置)可决定启动项目时所启用功能的基准配置。您可根据摄像机位置和/或优先级使用局部设置覆盖这些设置(参见下面的体积)。
全局设置保存在顶部字段中定义的单独管道资源中。在这里设置默认的渲染和后处理选项。
启用HDRP功能
在开发项目时,您可能需要返回HDRP 默认设置(HDRP Default Settings),以打开或关闭特定功能。除非明确启用了默认配置中的相应复选框,否则某些功能不会出现。请注意,某些设置出现在体积配置文件中,而一些功能则出现在帧设置中,具体取决于用途。
在熟悉HDRP 功能集时,使用项目设置(Project Settings) 中右上角的搜索字段。这样只会对您显示与高亮显示的搜索术语相关的面板。
启用 HDRP 默认设置 (HDRP Default Settings) 中的功能并不能保证激活该功能。为进行验证,您还必须找到当前选择为质量水平的管道资源。同时,勾选相应的选项。HDRP 功能必须在全局和局部设置中启用才能正常运行。
前向渲染与延迟渲染
在管道资源中配置 HDRP 设置时,通常从渲染 (Rendering) 下的光照着色器模式 (Lit Shader Mode) 开始。您可以选择延迟(Deferred)、前向(Forward)或两者(Both)。这些代表渲染路径,即与管道渲染和照亮几何体方式相关的一系列具体操作。
自定义渲染路径
在光照着色器模式(Lit Shader Mode) 中选择前向(Forward) 或延迟(Deferred) 来设置默认的渲染路径。
HDRP 比较灵活,也允许您选择两者(Both)。利用这个选项,您可以将一个渲染路径用于大多数渲染,然后在每个摄像机中覆盖该路径。然而,该方法会占用更多的GPU 内存。在大多数情况下,最好选择前向或延迟。
- 若要默认影响所有摄像机,则转至 HDRP 默认设置 (HDRP Default Settings),然后找到默认帧设置 (Default Frame Settings)。默认帧设置可应用于摄像机 (Camera)、烘焙 (Baked) 或自定义反射 (Custom Reflection)或者实时反射 (Realtime Reflections)。在渲染 (Rendering) 组中,在光照着色器模式 (Lit Shader Mode) 下设置渲染路径。
- 对于特定摄像机,请勾选自定义帧设置 (Custom Frame Settings),以将其覆盖。
关于渲染路径的更多信息
您可能希望了解这些渲染路径的工作原理,以了解光照着色器模式将如何影响管道中的其他设置。
01 前向渲染
在前向渲染中,显卡会将屏幕上的几何图形分成顶点。这些顶点进一步分解成片段或像素,然后渲染呈现到屏幕上,形成最终的图像。
每个对象都会传递至图形 API,一次一个。前向渲染形成每个光照都会产生成本。您场景中的光照越多,渲染时间就越长。
前向渲染在单独的通道中绘制光照。如果有多个光照针对同一个 GameObject,则可能会造成严重透支,当存在大量光照和物体时,就会减速。
并渲染多个光照。然而,这个过程的成本仍相对较高。如果性能是个问题,则您可能会希望使用延迟渲染。
02 延迟渲染
HDRP 还可以使用延迟渲染,其中光照不是按对象计算的。相反,延迟渲染将大量渲染推迟到后期,并使用两个通道。
在第一个通道中,或G-buffer 几何体通道中,Unity 渲染 GameObjects。该通道会检索多种几何属性,并将其存储在一组纹理中(例如:漫反射和镜面颜色、表面平滑度、光遮蔽、法线等)。
G-buffer:
https://docs.unity3d.com/Manual/RenderTech-DeferredShading.html
在第二个通道中,或光照通道中,Unity 会在 G-buffer 完成后渲染场景的光照。因此,它会延迟渲染。延迟渲染路径会迭代每个像素,并根据缓冲区而非各个对象计算光照信息。
光照通道:
https://docs.unity3d.com/Manual/RenderTech-DeferredShading.html
有关渲染路径之间的技术差异的更多信息,请参见 HDRP 文档中的“前向和延迟渲染”。
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-defini...@11.0/manual/Forward-And-Deferred-Rendering.html
《高清渲染管线权威指南》里,还详细介绍了边缘柔化、Volume(体积)框架、曝光、光照、阴影、反射等内容,点击下方链接,即可免费解锁完整指南。
https://learn.u3d.cn/tutorial/hdrp_lighting_expert_guide