Unity2018研究——HDRP初探

作者:繁华如梦
前言
在Unity2018版本,Unity为了提高引擎的画面表现,推出了High Definition Render Pipeline 高清晰渲染管线,简称HDRP。
本文主要是带大家简单了解一下新的特性,以及如何使用HDRP来完成自己想要的效果。话不多说,直接开始吧。
创建工程
创建HDRP的工程有2种方式,一是在原来的工程基础上升级工程。2是重新创建新的工程。由于HDRP现在仍处于预览阶段,此处不建议直接在原先的工程上升级。而且,一旦在原来的工程上进行升级,旧版的自定义的着色器将不能够使用。虽然HDRP给我们提供了将旧版材质升级为高清材质的功能,但是,对于使用自定义着色器的材质,此功能是不具有效果的。此处,我们主要是介绍第2种创建工程的方式。
首先运行Unity程序(PS:此处使用的版本是2018.3.0b7),如下图新建HDRP工程。

如果还是有童鞋想要将原先的工程升级为高清工程,可以在Window-Package Manger(包管理器),下载并导入HDRP的包(PS:此处工程使用的是3.3版本的包),进行工程升级。如下图:

导入完成后,新建High Definition Render Pipeline Asset文件,如下图:

新建完成后,在Editor-Project Setting -Graphics 中的Scriptable Render Pipeline Settings设置新的渲染管线即可。
Volume Setting(体积设置)
如果你跟我一样都是直接创建(默认直接加载示例场景)的工程的话,可以在Hierarchy视图中,看见Volume Settings物体上添加有Volume组件。如下图:

Volume组件是HDRP中对一定范围内的光照,雾,以及阴影进行管理的一个组件。直接升级的童鞋也不用担心,在场景中新建一个空物体,添加上Volume组件即可。
其中Is Global选项如果勾选,其上的设置将会应用到全局。如果未勾选,需要给有Volume组件的物体,添加触发器来设置其影响范围。只有当摄像机进入其影响范围内,才会出现对应的效果。如下图:

Volume组件可以通过点击“Add component overrides…”按钮添加其子组件来进行功能拓展。其中常用的主要有一下几种:
HD Shadow Settings(高清阴影设置)主要是用于控制Volume组件范围内的阴影质量相关。

Visual Environment(可视环境),用于控制天空盒以及远处雾气的效果,不添加或者关闭将不会看见相应的视觉画面。其中有2个选项,用来设置天空的类型,以及雾的类型。默认情况下,分别为Procedural Sky与Exponential Fog。

Gradient Sky(渐变天空)当Visual Environment组件Sky Type选择Gradient Sky类型选项时,添加此组件,可以进行相应的设置。Gradient Sky可以定义三种颜色,顶部,中部和底部,HDRP会在它们之间进行插值以创建渐变天空盒。

Procedural Sky(程序化天空),使用步骤同上,但是设置的效果不同。Procedural Sky可以设置太阳大小,地面颜色和天空色调来自定义天空盒。

HDRI Sky是一种使用立方体贴图纹理的天空盒。Unity商店提供了免费HDRP使用的立方体纹理包Unity HDRI Pack。Asset store搜索下载导入即可使用。

Linear Fog(线性雾)当Visual Environment组件Fog Type选择Linear Fog类型选项时,添加此组件,可以进行相应的设置。Linear Fog组件将会根据提供的参数,来设置场景中的雾。线性雾的密度将随视距和世界空间高度线性增加。

Exponential Fog(指数雾)指数雾密度将随着视距和世界空间高度呈指数增长,具体取决于提供的参数。

Volume组件还有一部分功能性新组件,这里由于篇幅限制,就不一一赘述了,文章末尾将会给出相应的参考文档,欢迎食用。
新版相机组件与灯光组件
HDRP的新相机组件,除了在原先旧版相机的基础上增加了新的功能,并进行了分级排版。而且还必须与HD Additional Camera Data(高清相机附加数据)组件同时使用,才能得到正确的相机效果。如下:

新版的灯光组件改动与相机类似,只不过是需要灯光组件物体上同时挂载HD Additional Light Data(高清灯光附加数据)与Additional Shadow Data(阴影附加数据)这2个组件,才能正确使用新的灯光组件。
同时新的灯光组件,还增加了新的灯光类型-Line。其效果类似于发光灯管,值得注意得是使用此类型的灯光,将不会对受到灯光影响的物体投射阴影。效果如下:

高清着色器 Lit
新版的高清着色器Lit旨在让开发者使用最少的配置,创建更加逼真的材质。而在HDRP工程中,创建新材质的时候默认也是使用的Lit着色器。

在新创建的材质中,Lit Shader通过Suface Type(表面类型)的下拉菜单选项,来将材质分成2中类型。一种是可透明的材质(Transparent),一种是不透明材质(Opaque)。需要注意的是,如果你的材质选择了Opaque选项,即使你在后续的Base Color +Opacity选项设置了材质的透明度,也是不会出现透明效果的。效果如下:

Lit Shader使用Material type选项,来设置我们的材质类型。选择不同的选项,让使用同一个着色器的材质,表现的画面不一致。主要有一下几种:
1. Subsurface scattering (次表面散射 简称:SSS材质) 主要用于模拟类似皮肤相关的材质类型。
2. Standard(标准金属材质)Unity使用标准金属的材质类型。
3. Anisotropy(各向异性)当从不同角度查看此材质时,各向异性曲面材质上的高光会在外观上发生变化。
4. Iridescence(彩色光晕材质) 该材质的高光点颜色,将会随着光照角度与视角变化,出现类似彩虹一样的变化。类似于肥皂泡,昆虫翅膀之类的材质。
5. Specular Color(高光颜色材质)类似于镜子的材质类型,可以通过这个选项创建具有彩色镜面反射高光的材质。
6. Translucent(半透明材质)使用“Translucent”类型时,HDRP将会使用Input块中的参数,设置厚度贴图来模拟半透明材质。与SSS材料相比,半透明材料仅透过材料传输光线,而不会使光线模糊。
这里就简单展示一下Iridescence与Specular Color和Standard这3种材质的区别。其余的材质类型,在此文章中不便于进行演示,有兴趣的童鞋,可以下去自己创建并进行对比。

Lit Shader还提供了其他众多的功能。例如是否开启透明度测试(AlphA Cutoff Enable),是否开启双面渲染(Double Sided),是否接受贴花投射(Enable Decal)等等功能。由于功能众多,这里就不在细说了,详情可以文末的文档链接进行参考。
题外话
在HDRP的这个示例场景中,我们还发现场景中使用了PostProcessing(后期特效)来进一步提升画面的表现力。PostProcessing 的相关资源也可以在文章开头的GIF图中的包管理器中,找到对应的资源。导入即可使用。值得注意的是,不管你是升级的HDRP工程还是普通工程使用PostProcessing,为了画面的表现力,推荐将File—Build Setting——Player Settings—Other settings下的Color Space(色彩空间)选项改为Linear。
关于PostProcessing的使用不在本篇文章的探讨范围内,如有需要,建议配合官方文档进行食用。链接如下:
https://github.com/Unity-Technologies/PostProcessing/wiki
结语
在Unity 2018的版本中,可以看出Unity为了解决画面的诟病,下了不少功夫。不但引入了新的高清着色器,渲染管线,还对灯光与相机进行了不同修改。同时还通过新的Volume组件,来对灯光,天空和阴影进行控制,以达到满意的效果。虽然现在HRDR目前仍处于预览阶段,相信在不久的将来就可以看到它大展拳脚的身影。
最后惯例
想系统学习游戏开发的童鞋,欢迎访问 http://levelpp.com/
游戏开发搅基QQ群:869551769
微信公众号:皮皮关
线上课程的传送门:https://study.163.com/course/introduction/1006462005.htm
参考链接:
HDRP官方文档:https://github.com/Unity-Technologies/ScriptableRenderPipeline/wiki/Upgrading-to-HDRP
HDRP官方入门指南:http://forum.china.unity3d.com/thread-32953-1-1.html
Volume组件参考文档:https://mubu.com/doc/3cVzBhtH2E
Lit 着色器参考文档:https://mubu.com/doc/3r9kMP4FbE