Unity高清晰渲染管线HDRP入门指南
本文将介绍使用高清晰渲染管线HDRP渲染我们所创作场景的过程,以及重点介绍内置渲染管线和高清晰渲染管线HDRP之间的区别。
我们将会新建一个HDRP项目并升级所有导入资源的材质,以及学习使用材质检视窗口中的新参数来创建逼真的玻璃材质。
高清晰渲染管线HDRP
在Unity 2018.1中,Unity引入了可编程渲染管线SRP,它能让你根据项目需求创建自定义渲染管线。
可编程渲染管线SRP包含二个可直接使用的渲染管线,轻量级渲染管线LWRP和高清晰渲染管线HDRP。其中高清晰渲染管线HDRP旨在提供高级视觉保真度,适用于PC和主机平台。
设置HDRP
请使用Unity Hub,它可以帮助你管理项目和已安装Unity版本的信息。使用Unity Hub创建新项目时,在Template下可以看到High-Definition RP (Preview)选项。
由于HDRP仍处于预览阶段,建议不要在项目制作中期将项目切换为HDRP。你可以通过资源包管理器为项目安装HDRP,从而将项目升级。
请注意:一旦将项目升级至HDRP,就无法恢复原有项目,所以请确保在项目更新前做好备份。HRDR目前仍处于预览阶段,因此相关功能可能在未来发生一些变化。
将项目从内置渲染管线升级至高清渲染晰管线HDRP,请点击打开Window > Package Manager。在资源包管理器中,我们可以看到当前Unity项目中已安装的所有资源包。
在All标签页下找到“HD Render Pipeline”,即“Render-pipelines.high”,安装最新版本。安装该管线的过程中还会自动安装Render-pipelines.core、Shader Graph着色器视图和Post Postprocessing资源包。
安装HDRP资源包后,点击打开Edit > Project Settings > Graphics ,指定用于HDRP的可编程渲染管线资源。
该检视窗口会将当前已安装的渲染管线资源(Render Pipeline Asset)显示在“Scriptable Render Pipeline Settings”字段中。
如果是在Unity Hub中安装HDRP,将自动指定为HDRP渲染管线资源。如果是将项目从内置渲染管线升级为HDRP,该字段会设为“None”。指定管线资源时,可以点击Asset Selection资源选择方框右边的按钮,或是将资源从Settings文件夹拖入该字段。
HDRP使用C# Scriptable Render Pipeline API。该API提供各种不同的设置,可用于自定义项目的渲染内容。渲染设置保存在渲染管线资源中,这意味着你可以修改渲染设置,只要将新的渲染管线资源指定到该字段即可。
创建新渲染管线资源时,在Project窗口空白处点击右键,选择Create > Rendering > High Definition Render Pipeline Asset。
升级材质
使用HDRP项目时,任何Unity的内置材质、标准材质或无光材质将不会被渲染,这是Unity使用粉色无光着色器显示这些不兼容的材质。
当尝试升级现有项目或集成旧资源,例如:不使用HDRP兼容着色器的Asset Store资源商店中的资源时,会发生这种情况。为了能够被HDRP渲染,我们需要升级材质。
Unity 2018.1提供了Built-in Material Conversion Tool(内置材质转换工具)。它会从Unity标准着色器获取材质属性,然后将材质转换为新的HDRP材质。
请注意:该功能不适用于自定义着色器,我们需要手动升级自定义着色器以兼容HDRP。
点击Edit > Render Pipeline,可访问材质转换工具。
Unity在该菜单中提供多个升级选项,我们将重点介绍前二个选项。
Upgrade Project Materials to High Definition Materials:更新项目中所有可更新的材质。
Upgrade Selected Materials to High Definition Materials:从项目窗口中选取需要更新的材质。
到了这一步,我们建议你创建项目的一个备份。
当材质被转换后,材质的着色器会被称为“HDRenderPipeline/Lit”。现在我们可以完全使用材质检视窗口中HDRP Lit Shader的全新功能。
在材质的Shader选项“HDRenderPipeline”下拉菜单中,你可以选择应用各种着色器类型,例如:LitTesseleation或Unlit等。
下面将介绍高清晰渲染管线HDRP中的新功能,我们将使用这些新功能来提升厨房场景的效果。
HDRP光照
HDRP中的光照使用Physical Light Units(PLU)物理光单位系统。使用PLU意味着光照单位基于真实可测量数值,就像商店中电灯泡包装上的数值,或是摄影测光表测量光照时的数值。
我们将勒克斯(LUX)用作定向光(Directional Light)的单位,因为在真实世界中,勒克斯用于测量太阳光的强度,使用勒克斯计可对太阳光强队进行测量。其它真实世界光源使用流明(Lumen)来测量光强度,它可用作场景里小型光发射器的参考单位。
实时线条光
实时线条光(Realtime Line Light)会保持无缝恒定的光线输出,用户可以自行定义线条光的长度。这些光照类型通常用于动画影片,从而实现逼真的光照效果,为场景光照增加影视质量。在光线放入场景后,可以在检视窗口选择形状类型来创建线条光。
大量现代厨房使用线条光来照明厨房工作区,所以线条光在此不仅能产生逼真的光照,而且准确符合真实厨房的效果。
此外,Light检视窗口还可以通过调整温度数值来决定发射出的光线的颜色。温度范围从1000~20000开尔文,数值越低就发射越少热量,光线呈现越多红色。反之,提高温度值会显示更多蓝色。
类似地,Rectangle(矩形)形状的灯光类型会基于自定义X和Y轴数值发射光线输出。请注意,目前Line或Rectangle光线形状类型不支持阴影。
光线浏览器
使用Light Explorer(光线浏览器)可以轻松管理项目中任意光线类型。你可以修改数值、更改光线类型和甚至控制阴影类型,而不必先到场景中找到这个光源并选中它。反射探针、光照探针和静态发射也可在该窗口管理。
使用Light Explorer,请点击Window > General > Light Explorer。
体积设置
Volume Settings(体积设置)允许你可视化修改环境设置并调整各类元素,例如:Visual Environment(可视环境),Procedural Sky(程序化天空)和HD阴影设置。该设置还允许你创建自定义体积配置文件并进行切换。
我们可以在创建游戏对象后,通过添加Volume组件来管理Volume Settings。该工作流程类似Post-Processing Stack v2创建体积时的工作流程。HDRP中,在层级窗口默认有一个体积设置。
1
HD阴影设置
HD阴影设置(HD Shadow Settings)允许你决定体积中阴影的总体质量。Max Distance字段会根据摄像机和阴影间的距离,计算阴影质量。
2
可视环境
Visual Environment(可视环境)中有Sky Type和Fog Type二个下拉菜单。Sky Type提供三个选项:Procedural Sky、Gradient Sky和HDRI Sky。
Procedural Sky会根据Procedural Sky组件中的数值生成环境。
HDRI Sky会根据HDRI Sky组件所关联的图像集构建环境贴图。默认情况下,HDRISky组件不会指定到Volume Settings中。点击检视窗口标签页底部的“Add component overrides…”,选择“HDRI Sky”后,就可以使用该组件。
现在可以指定HDRI Sky Cubemap,修改数值以实现准确的真实的光照。
你可以在Asset Store资源商店免费获取Unity HDRI Pack ,该资源提供7个预转换的HDR Cubemap,可在项目中直接使用。
下载Unity HDRI Pack :
https://assetstore.unity.com/packages/essentials/beta-projects/unity-hdri-pack-72511
对于厨房场景,Unity HDRI Pack 中的“TreasureIslandWhiteBalancedNoSun”很适用,因为它能提供足够的光线照亮厨房,同时光线不会过于强烈。通过使用该组件内的修改器,例如:Exposure和Multiplier,可以自行修改和调整亮度。选取能够衬托场景的HDRI贴图非常重要。
最后,Fog Type提供了三个选项:Linear、Exponential和Volumetric。为了确定数值,重复之前的组件操作步骤,选择“Add Component Override”,应用相关组件到检视窗口。
材质检视窗口
在引入高清晰渲染管线HDRP之前,制作玻璃材质的过程并不简单。为了创建逼真的玻璃材质,必须进行广泛研究并掌握着色器编程方法,或是从Asset Store资源商店寻找并使用定制着色器。
现在有了材质检视窗口中HDRP Lit Shader的新功能,你可以制作出外观精致而且能根据设置折射光线的玻璃。
首先,我们新建一个HDRenderPipeline/Lit Material,这是在HDRP中创建材质时默认使用的着色器。
创建新材质时,在所选择的文件夹上单击右键,选择Create -> Material。材质检视窗口此时会展示全新的HDRP材质检视窗口。
在此窗口会有一些明显的变化,下面介绍一下这些变化。
表面选项
你可以在该选项决定材质的表面效果。
1
表面类型
表面类型(Suface Type)中有二个选项:
Opaque(不透明):模拟出完全为固态的材质,它无法透过光线。
Transparent(透明):应用了Alpha混合,能模拟半透明表面,效果很实用,但该表面类型在渲染时会消耗更多性能。
HDRP的一个重要功能是对透明对象和不透明对象应用了统一的光照效果。本文示例中,我们选择Transparent,其中的参数在后面会介绍。
2
双面渲染
双面渲染(Double Sided)允许对材质的二个面进行渲染。默认情况下,Normal Mode会设为Mirror(镜像),但在下拉列表中,我们可以选择Flip或None。
如果未启用双面渲染,Unity只会渲染材质面向摄像机方向的那一面。
材质类型
材质类型选项会创建新行为,从而实现更逼真的材质。启用这些选项后,它们各自会在检视窗口提供额外参数设置。
1
标准
标准(Standard)选项使用基础参数,它是默认的材质类型。
2
次表面散射(SSS)
次表面散射(Subsurface Scattering )会模拟光线交互和穿透半透明对象时的效果,例如:植物。
该选项还可用于渲染皮肤。如果你曾经透过指尖观察光线,你会看到光线颜色会随着在表面下散射而变化,这样的现象可以使用该表面类型模拟出来。
启用该选项后,会出现Transmission参数,使用该参数可以通过厚度图(Thickness Map)确定对象的半透明度。
这些功能都可以通过使用散射配置文件(Diffusion Profiles)进行控制。该选项提供二个默认配置文件,分别名为Skin和Foliage,可以用作SSS材质类型的基础。额外的13个配置文件可以使用以下配置文件设置进行定制。
3
各向异性
各向异性(Anisotropy)选项会模拟出根据朝向进行配置修改的表面材质,例如:模拟拉丝铝的效果。你不必创建具有干净整洁反射效果的金属表面,通过使用切线(Tangent)和各向异性贴图(Anisotropy Map),可以直接修改反射的强度和方向。
4
晕彩
晕彩(Iridescence)选项提供参数设置用于在材质表面创建晕彩效应,该效果类似光线在浮油上的效果。输出效果由晕彩贴图(Iridescence Map)和晕彩图层厚度图(Iridescence Layer Thickness Map)决定。
5
高光颜色
高光颜色(Specular Color)用于控制材质上镜面反射的颜色和强度。该选项可以让你使用与漫反射颜色不同的颜色来产生镜面反射效果。
6
半透明
半透明(Translucent)选项能非常有效地模拟植被的光线交互。该材质类型会使用配置文件,类似次表面散射SSS,但与示例中不同的是,它会使用厚度图(Thickness Map)来决定如何传输光线。
启用贴花
Enable Decal这个参数启用以后可以让该材质支持贴花功能。该功能适用于二个工作流,既可以通过Decal Projector使用,又可以作为游戏对象的组件来使用。
输入
1
基色和不透明度
此时的玻璃材质仍表现为不透明的效果,这是因为需要在Inputs中修改不透明度数值,从而允许光线穿透材质。为此,请点击“Base Color + Opacity”旁边的色样窗口。
红色、绿色和蓝色通道会用作基色,Alpha通道会决定不透明度。当前材质的不透明度由范围在0到255之间的数值决定,255是完全不透明,0是完全透明。
本示例中,我们会将材质颜色设置为浅绿色,不透明度设为30,因为这样会使材质大体上透明。使用的颜色参数是RGB(201,255,211)或十六进制值 :C9FFD3。
请记住重要的一点是,当表面类型为Opaque时,即使你将材质的Alpha设为较小数值,该材质还是不会呈现透明效果,并会保持原来的不透明度。
2
基色和不透明度
这些选项可以通过滑块调整,数值范围从0到1,这二个数值和输出会从下方检视窗口中Mask Maps Alpha和红色通道生成。指定Mask Map后,该滑块将用于重新映射最小值和最大值。
3
法线贴图
应用法线贴图时,可以在调整参数滑块时修改强度,范围在0到2之间。通过应用法线,例如:压痕或划痕等效果,我们可以为玻璃材质增加额外的细节和深度。
4
遮罩贴图
在HDRP中,遮罩贴图由以下内容组成:
红色通道:金属参数范围从0到1
绿色通道:环境遮蔽
蓝色通道:细节贴图遮罩
Alpha通道:光滑度
默认情况下,导入Unity的纹理使用sRGB。在纹理检视窗口中,取消勾选“sRGB (Color Texture)”会将纹理转换为使用线性格式的纹理。因为遮罩贴图使用数学方法生成输出内容,该纹理必须为线性。
5
涂层遮罩
涂层遮罩(Coat Mask)会模拟材质上的清漆层效果,提高光滑度。默认情况下,涂层遮罩数值为0。清漆层遮罩可用于模拟汽车油漆或塑料等材质。
6
细节输入
细节贴图是HDRP中加入的全新贴图,它会合并其它贴图,为材质带来微妙的细节。细节贴图使用以下通道:
红色:使用叠加混合的灰度值
绿色:法线贴图Y通道
蓝色:光滑度
Alpha:法线贴图X通道
透明度输入
通过修改着色器的透明度输入(Transparency Input)属性,可以决定总体透明效果。透明度输入只在表面类型设为Transparent时可用。
本示例中,下面的属性将使你能为玻璃材质创建折射效果。
1
折射模型
折射模型(Refraction Model)定义如何模拟透过材质的光线弯曲效果。它具有二个选项:Plane和Sphere。
选择折射模型取决于材质应用对象的形状和大小:
球体(Sphere):对于实心的物体,请使用球体模型。折射厚度(Refraction Thickness)值对应物体的大小来设置。
平面(Plane):对于中空的物体,请使用平面模式。折射厚度(Refraction Thickness)应设置的较小。
折射率(Index of Refraction)和折射率厚度(Index of Refraction Thickness)选项允许你控制折射模型的行为。
2
折射率
折射率(Index of Refraction)范围在1~2.5之间,调整该参数会得到不同折射强度。默认情况下,该数值为1,不会生成折射效果。数值在1.1~1.2之间时,折射会翻转画面,透过该材质会看到颠倒的环境。