高清渲染管道艺术家入门指南

编者注本帖中的信息已经过时。对于较新版本的 Unity,我们建议使用《高清渲染管道 (HDRP) 照明权威指南》 电子书,该电子书最近一次更新是在 2022 年。
在本篇博文中,我们将探讨如何使用 Unity 的高清渲染管道(也称为 HDRP)制作要渲染的场景。我们将逐步开始一个新的 HDRP 项目,升级所有导入资产的材质,并学习如何使用材质检查器中的新参数创建逼真的玻璃材质。我们还将强调内置管道和 HDRP 之间的区别。
在 2018.1 中,Unity 引入了一个名为 "可脚本渲染管道(SRP)"的新系统,允许您根据项目需求创建自己的渲染管道。SRP 包括两个现成的管道,分别称为轻量级 (LWRP) 和高清晰度 (HDRP)。HDRP 追求高视觉保真度,适用于 PC 或游戏机平台。
如果您还没有安装,我们建议您安装Unity Hub。它可以帮助你跟踪你的项目以及已安装的 Unity 版本。在 Unity Hub 中创建新项目时,在 "模板 "下可以选择 "高清 RP(预览)"选项。

由于 HDRP 仍处于预览阶段,因此在生产过程中切换到 HDRP 并不是一个好主意。不过,您可以尝试将项目升级到 HDRP,方法是进入新的软件包管理器并安装。请注意,一旦将项目升级到 HDRP,就无法恢复。确保在升级前创建项目备份。
如上所述,HDRP 仍处于预览阶段,因此将来可能会有变化。 要将项目从内置渲染管道升级到 HDRP,请导航至窗口 > 软件包管理器。在 "软件包管理器"(Package Manager)中,您可以看到当前安装在 Unity 项目中的所有软件包。在 "全部 "下找到 "高清渲染管道"(Render-pipelines.high)并安装最新版本。安装管道还将集成渲染管道核心、着色器图形和后处理软件包。


安装 HDRP 软件包后,需要导航至 "编辑">"项目设置">"图形",为 HDRP 分配 "可脚本渲染管道 "资产。

检查器会在 "可脚本渲染管道设置 "字段下显示当前安装的渲染管道资产。如果从 Unity Hub 安装管道,则会分配 HDRP 渲染管道资产。如果您是从内置管道升级项目,则该字段将设置为 "无"。我们可以通过单击资产选择框旁边的按钮或从设置文件夹中拖入资产来分配管道资产。
HDRP 使用 C# 脚本化渲染管道 API。随之而来的是一系列不同的偏好设置,您可以对项目的渲染进行自定义设置。渲染设置存储在 "渲染管道资产 "中,这意味着你可以通过为该字段分配一个新的 "渲染管道资产 "来更改渲染设置。
要创建新的 "渲染管道资产",请右键单击设置文件夹,然后选择"创建 > 渲染 > 高清晰度渲染管道资产"。

使用 HDRP 项目时,将不会渲染任何 Unity 内置的 "标准 "或 "未点亮材质",因此将使用默认的粉色未点亮着色器显示,当着色器损坏时,Unity 会显示该着色器。在尝试升级现有项目或整合不使用 HDRP 兼容着色器的资产商店资产等遗留内容时,可能会出现这种情况。为了使用 HDRP,需要对材料进行升级。
Unity 2018.1 配备了内置材质转换工具。它从 Unity 的 "标准着色器 "中获取 "材质 "属性,并将其转换为新的 HDRP "材质"。值得注意的是,这对自定义着色器不起作用,因为自定义着色器需要为 HDRP 重新编写。
要访问 "材质转换工具",请导航至 "编辑">"渲染管道"。

Unity 在此菜单中提供了多个升级选项。在这里,我们将重点讨论前两个问题。"将项目材料升级为高清材料",将升级项目中所有可升级的材料。"将选定的材质升级为高清材质",让您从项目窗口中选择要升级的材质。
此时,我们建议您创建一个单独的项目备份。
材料转换完成后,材料的着色器将被命名为 "HDRenderPipeline/Lit"。现在,您可以在 "材质检查器 "中完全使用 HDRP 光着色器的全新功能。
此外,在 "HDRenderPipeline "下的 "材质着色器 "选项中,您可以选择并应用各种着色器类型,如 LitTesseleation 或 Unlit 等。

随后的章节将介绍 HDRP 新增的一些功能。我们利用其中的一些新功能来提升厨房场景的外观。
HDRP 中的照明使用一种称为 "物理照明单位 "(PLU)的系统。PLU 表示这些单位基于现实生活中的可测量值,就像你在商店选购灯泡或用照相测光表测量光线时看到的一样。
我们用 LUX 来表示定向灯,因为在现实世界中,这些数值是用来测量阳光强度的,用 LUX 测量仪就可以轻松完成测量。现实世界中的其他光源使用流明(Lumens)来测量强度,这可以作为我们场景中较小发光体的参考。
实时线条灯可从用户可定义长度的线条中保持无缝、恒定的光线输出。这些灯光类型常用于动画电影,以实现逼真的照明效果。它们为场景照明增添了电影般的质感。在场景中放置灯光后,在检查器中选择形状类型即可创建线条灯光。
许多现代厨房都使用线条灯来照明厨房工作区,因此这里的线条灯不仅能产生逼真的照明效果,而且与真实厨房中的照明效果完全一致。
此外,光线检测器还能通过温度来确定光线的颜色。从 1000 开尔文到 20000 开尔文不等,数值越低,发出的热量越少,光线看起来越红。相反,随着温度值的升高,它看起来更蓝。
同样,矩形形状类型会根据自定义的 X 轴和 Y 轴值发出光输出。
请注意:线条或矩形光形状类型目前不支持阴影。

另外,使用 "灯光资源管理器 "还可以轻松管理项目中任何类型的灯光。您可以修改数值、更改灯光类型,甚至操作阴影类型,而无需在场景中找到它们。此外,还可以通过该窗口管理反射探针、光探针和静电发射器。
要访问灯光资源管理器,请导航至窗口 > 常规 > 灯光资源管理器:

通过 "音量设置",您可以直观地更改环境偏好,调整视觉环境、程序天空和高清阴影设置等元素。这样还可以创建自定义音量配置文件,并在它们之间切换。
音量设置可通过创建 GameObject 并添加音量组件来管理。此工作流程类似于为后处理堆栈 v2 创建卷的流程。在 HDRP 中,层次结构中默认会有一个。
高清阴影设置
通过高清阴影设置,您可以确定音量中阴影的整体质量。最大距离 "字段根据摄像机与阴影的距离计算阴影的质量。

视觉环境
在 Visual Environment 中有两个下拉菜单。
天空类型提供三个选项:程序天空、渐变天空和 HDRI 天空。

程序天空会根据您在程序天空组件中选择的值生成一个环境。
HDRI Sky 可根据组件内的图像集构建环境贴图。默认情况下,HDRISky 组件未指定到 "体积设置"中,单击 "检查器 "选项卡底部的 "添加组件覆盖... "并选择 "HDRISky",该组件将变得可用。
现在,您可以分配 HDRI Sky Cubemap 并更改数值,以实现精确的真实光照。
Unity HDRI Pack可从 Unity Technologies 的 Asset Store 免费获取,它提供了 7 个预转换(1024x2014 分辨率)的 HDR Cubemaps,可供您在项目中使用。

在此场景中,Unity HDRI 包中的 "TreasureIslandWhiteBalancedNoSun "效果最佳,因为它提供了足够的光线来照亮厨房,但又不会将其洗掉。当然,利用组件中提供的修改器(如曝光和乘数),还可以改变和调整亮度。选择与场景相辅相成的 HDRI 地图非常重要。
最后,"雾类型 "提供了 3 个选项:线性、指数和体积。为了确定数值,请重复上一个组件步骤("添加组件覆盖",将相关组件应用于检查器)。
在引入《人类发展报告》之前,创建玻璃材料并非易事。如果不进行大量的研究和着色器编程,或者求助于资产商店使用自定义着色器,就无法简单地构建逼真的玻璃材质。
现在,利用材质检查器中的 HDRP Lit Shader 新功能,您可以制作出不仅外观漂亮,而且能根据可定义设置折射光线的玻璃。
首先,我们要创建一个新的 HDRenderPipeline/Lit 材质。这是应用于 HDRP 中创建的任何新材质的默认材质着色器。
要创建新材质,请右键单击首选文件夹,然后选择创建 -> 材质。材料检查器现在将显示全新的 HDRP 材料检查器。其中有一些明显的变化。让我们回顾一下。
在这里,您可以开始确定材料的表面。
表面类型
表面类型有两种选择:不透明或透明。不透明模拟完全固态的材料,光线无法穿透。
相比之下,"透明 "是一种 alpha 混合效果,模拟的是半透明表面,虽然有用,但这种表面的渲染成本较高。
HDRP 的一个重要特点是对透明和不透明物体进行统一照明。
本例中选择 "透明"。这样就可以访问下文讨论的参数。
双面
此偏好允许双面渲染 "材质"。默认情况下,"正常模式 "设置为 "镜像",但我们可以在下拉菜单中选择 "翻转 "或 "无"。
如果 "双面 "未激活,Unity 将只渲染材质面向相机方向的一面。
材料类型选项可创建新的行为,使材料更加逼真。激活后,每个选项都会在检查器中提供更多参数。
标准
使用基本参数,是默认的材料类型。
表层下散射 (SSS)
次表层散射是通过模拟光线与植物等半透明物体的相互作用和穿透来实现的。它还可用于渲染皮肤。如果你曾用手指尖照过光,就会发现光线在表面下散射时会改变颜色。可以使用该表面类型来复制。
激活后,将显示传输参数。通过使用厚度贴图,您可以确定物体的半透明度。
这两个特征都可以通过使用扩散轮廓来操作。提供了两种默认配置文件,分别称为 "皮肤 "和 "树叶",可用作此类 SSS 材料的基础。还可以使用下图所示的预案设置对另外 13 个预案进行定制。

如需观看简短的视频演示,请查看我关于 SSS 的 Unity 提示:
我一直对次表层散射(SSS)敬而远之,因为它听起来总是很复杂!?
通过 HD RP,SSS 有 2 种预设配置文件,以及 13 种可定制的其他配置文件,可为任何材料增加深度。
请看下面的简单视频演示#unitytips pic.twitter.com/NM4Z03l1U1
- 基兰-科伦纽特团结(@kierancolenutt)2018 年 8 月 28 日
各向异性
各向异性模拟了一种表面材料,这种材料会根据其方向改变特性,例如,模拟拉丝铝的外观。使用切线图和各向异性贴图,您可以改变反射的强度和方向,而不是创建一个具有干净、整齐反射的金属表面。
彩虹色
提供在 "材质 "表面创建彩虹效果的参数,类似于光线在溢油上的效果。输出由虹彩图和虹彩层厚度图决定。
镜面颜色
镜面反射颜色用于控制材质中镜面反射的颜色和强度。这使得镜面反射的颜色与漫反射的颜色不同成为可能。
半透明
半透明选项可以非常有效地模拟植被与光线的相互作用。这种材料类型使用剖面图,与 SSS 相似,只是在这种情况下使用厚度图来确定光线的传输方式。
这个有用的参数可以轻松地使材质对贴花材质做出响应,它适用于两种工作流程,既可以通过贴花投影仪,也可以作为对象组件。

基色 + 不透明度
此时,玻璃材质仍会显示为不透明,这是因为您需要更改 "输入 "中的不透明度值,以便让光线穿透。
为此,请打开 "基色 + 不透明度 "旁边的色板窗口。
红色、绿色和蓝色通道用作基色,alpha 通道决定不透明度。当前材质的不透明度由 0 到 255 的数值决定,255 表示完全不透明,0 表示完全透明。在本例中,我们希望将 "材质 "的颜色设置为浅绿色。
我们希望将不透明度设置为 30,因为这将改变材质,使其大部分是透明的。
以下是我使用的色值:
RGB 值:
R - 201
G - 255
B - 211
十六进制值 - C9FFD3
需要记住的重要一点是,即使将材质的 alpha 值设置为较低的数值,但将表面类型设置为不透明,材质也不会透明,并将保持其不透明度。

金属质感和光滑度
这些选项可通过滑块进行更改,数值范围为 0 至 1。这两个值和输出均由检查器中下面的 "蒙版贴图 Alpha "和 "红色通道 "生成。指定掩码映射后,滑块将用于重新映射最小值和最大值。
正常地图
应用法线贴图后,可以在 0 至 2 的范围内调节参数滑块来修改强度。
您可以为您的玻璃材料添加更多的细节和深度,例如压痕或划痕。
面具地图
在 HDRP 中,"掩码映射图 "是以下内容的组合:
红色通道 - 0 至 1 之间的金属色
绿色通道 - 环境遮蔽
蓝色通道 - 详细地图屏蔽
阿尔法通道 - 平滑度
默认情况下,导入 Unity 的纹理使用 sRGB。在纹理检查器中,取消选中 "sRGB(彩色纹理)"可将纹理转换为线性格式。由于遮罩贴图使用数学方法生成输出,因此该纹理必须是线性的。

大衣面罩
涂层蒙版可在材质上模拟透明涂层效果,同时增加光滑度。默认情况下,"涂层屏蔽 "值设置为 0,但滑块可以在 0 到 1 的范围内调整该参数。透明涂层掩膜可用于模仿汽车漆或塑料等材料。
详细输入
详细地图是《人类发展报告》中引入的新地图,也是增加材料细节的其他地图的混合体。详细地图使用以下通道:
红色使用叠加混合进行灰度处理
绿色法线贴图 Y 通道
蓝色光滑度
阿尔法法线贴图 X 通道
通过修改着色器的 "透明度输入 "属性,可以开始确定整体的透明效果。只有将曲面类型设置为透明后,透明度输入才可用。
在本例中,下面的部分将帮助您创建玻璃材质的折射效果。
折射模型
折射模型定义了如何模拟光线通过材料时的弯曲。有两个选项:平面和球面。
选择折射模型取决于应用 "材质 "的对象的形状和大小:
球体:对于填充物体,请使用球体模型,其折射厚度与所放置材质的物体大小相当。
飞机对于空物体,使用折射厚度较小的平面模式。
折射率和折射厚度选项允许您控制折射模型的行为。
折射率
该参数的范围为 1 到 2.5,调整该参数将提供不同的折射强度。默认情况下,该值设置为 1,不会产生折射。
在 1.1 和 1.2 之间,折射率会发生翻转,通过材料看到的环境会出现颠倒。

现在,玻璃材质的基底已经制作完成,您可以添加自定义调整,以组装出最适合您和材质所应用对象的材质。
希望本概述能帮助您更好地了解如何在项目中实际应用 HDRP!虽然它仍处于实验预览阶段,但我们已在 GitHub 上发布了一些初步文档,您也可以阅读这些文档开始使用。
HDRP 是一个不断发展、令人兴奋的新项目创建工具,我迫不及待地想知道你们将用它制作什么。如有任何问题或疑问,请随时通过 Twitter@kierancolenutt与我联系。我想听听你们的经验,请告诉我进展如何!
要关注和讨论 HDRP 和 SRP 的发展,请加入我们的实验图形论坛。