Ilingis 发表于 2021-7-14 13:53

Unity2018研究——HDRP初探

前言
    在Unity2018版本,Unity为了提高引擎的画面表现,推出了High Definition Render Pipeline 高清晰渲染管线,简称HDRP。
本文主要是带大家简单了解一下新的特性,以及如何使用HDRP来完成自己想要的效果。话不多说,直接开始吧。
创建工程
    创建HDRP的工程有2种方式,一是在原来的工程基础上升级工程。2是重新创建新的工程。由于HDRP现在仍处于预览阶段,此处不建议直接在原先的工程上升级。而且,一旦在原来的工程上进行升级,旧版的自定义的着色器将不能够使用。虽然HDRP给我们提供了将旧版材质升级为高清材质的功能,但是,对于使用自定义着色器的材质,此功能是不具有效果的。此处,我们主要是介绍第2种创建工程的方式。
    首先运行Unity程序(PS:此处使用的版本是2018.3.0b7),如下图新建HDRP工程。
新建HDRP工程
    如果还是有童鞋想要将原先的工程升级为高清工程,可以在Window-Package Manger(包管理器),下载并导入HDRP的包(PS:此处工程使用的是3.3版本的包),进行工程升级。如下图:
Package Manger导入
    导入完成后,新建High Definition Render Pipeline Asset文件,如下图:
创建新的渲染管线资源
    新建完成后,在Editor-Project Setting -Graphics 中的Scriptable Render Pipeline Settings设置新的渲染管线即可。
Volume Setting(体积设置)
    如果你跟我一样都是直接创建(默认直接加载示例场景)的工程的话,可以在Hierarchy视图中,看见Volume Settings物体上添加有Volume组件。如下图:
Volume组件
    Volume组件是HDRP中对一定范围内的光照,雾,以及阴影进行管理的一个组件。直接升级的童鞋也不用担心,在场景中新建一个空物体,添加上Volume组件即可。
    其中Is Global选项如果勾选,其上的设置将会应用到全局。如果未勾选,需要给有Volume组件的物体,添加触发器来设置其影响范围。只有当摄像机进入其影响范围内,才会出现对应的效果。如下图:
设置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搜索下载导入即可使用。
设置HDRI Sky天空显示的纹理
    Linear Fog(线性雾)当Visual Environment组件Fog Type选择Linear Fog类型选项时,添加此组件,可以进行相应的设置。Linear Fog组件将会根据提供的参数,来设置场景中的雾。线性雾的密度将随视距和世界空间高度线性增加。
Linear Fog界面
    Exponential Fog(指数雾)指数雾密度将随着视距和世界空间高度呈指数增长,具体取决于提供的参数。
Exponential Fog界面
    Volume组件还有一部分功能性新组件,这里由于篇幅限制,就不一一赘述了,文章末尾将会给出相应的参考文档,欢迎食用。
新版相机组件与灯光组件
    HDRP的新相机组件,除了在原先旧版相机的基础上增加了新的功能,并进行了分级排版。而且还必须与HD Additional Camera Data(高清相机附加数据)组件同时使用,才能得到正确的相机效果。如下:
新版相机界面
    新版的灯光组件改动与相机类似,只不过是需要灯光组件物体上同时挂载HD Additional Light Data(高清灯光附加数据)与Additional Shadow Data(阴影附加数据)这2个组件,才能正确使用新的灯光组件。
    同时新的灯光组件,还增加了新的灯光类型-Line。其效果类似于发光灯管,值得注意得是使用此类型的灯光,将不会对受到灯光影响的物体投射阴影。效果如下:
Line类型的灯光
高清着色器 Lit
    新版的高清着色器Lit旨在让开发者使用最少的配置,创建更加逼真的材质。而在HDRP工程中,创建新材质的时候默认也是使用的Lit着色器。
高清材质界面
    在新创建的材质中,Lit Shader通过Suface Type(表面类型)的下拉菜单选项,来将材质分成2中类型。一种是可透明的材质(Transparent),一种是不透明材质(Opaque)。需要注意的是,如果你的材质选择了Opaque选项,即使你在后续的Base Color +Opacity选项设置了材质的透明度,也是不会出现透明效果的。效果如下:
不同Suface Type类型的材质设置透明度的效果对比
    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/莅临指导。
线上课程的传送门如下:
另有专业开发交(gao)流(ji)群等待大家强势插入:869551769


参考链接
   HDRP官方文档:Unity-Technologies/ScriptableRenderPipeline
   HDRP官方入门指南:高清晰渲染管线HDRP入门指南 - 资讯频道 - Unity官方中文论坛 - Unity3d.com
   Volume组件参考文档:Unity-Volume组件功能翻译
   Lit 着色器参考文档:Lit Shader(翻译) (PS:以上参考文档为个人渣翻,如有错误相关,欢迎评论指正)

unityloverz 发表于 2021-7-14 13:55

感谢作者,大概看一遍介绍之后,看具体官网资料就更快捷了。

fwalker 发表于 2021-7-14 14:00

十分感谢~英语技术渣表示您的这一篇文章很有价值!

unityloverz 发表于 2021-7-14 14:06

谢谢楼主,不过为啥我模型导入hdrp是白模,导入内置管线都可以

stonstad 发表于 2021-7-14 14:07

我好像一开始就做错了,2020.2.1版本的rendering在哪啊
页: [1]
查看完整版本: Unity2018研究——HDRP初探