Notifications
Article
[HDRP] PBR Lit shader(一.基础用法篇)
Published 10 months ago
4.2 K
44
铛~铛~铛~大家好!兔纸我又来啦~ 快过年啦,先给大家拜个早年!祝大家新年快乐!身体健康!万事如意!然后,鉴于最近肺炎的情况呢,大家出门记得带口罩哦~~好啦,今天呢,给大家分享一下HDRP默认Lit Shader的基础介绍,让小伙伴了解一下用法, 还有还有,记得哦~ 评论~! 点赞~! 转发~! (●'◡'●)以及收藏!!

好啦,借助这默认的HDRP Shader,小伙伴们可以轻松地在HDRP中创建逼真的物理材质。它包括一些效果选项,例如次表面散射,虹彩,顶点或像素位移等各种表现效果。
今天呢,主要分享一下HDRP自带的三种Shader Types:

Shader types(着色器类型)

  • Lit(默认着色器):基础的PBR着色器,可改变材质类型,来实现任何想要的材质感觉。
  • Layered Lit(分层着色器):通过一张Mask图,可将Lit材质最多分成四个通道,并赋予不同的Lit材质(需要材质类型相同)。
  • LitTessellation(曲面细分着色器):通过一张Hight map可改变Lit赋予后的表面,所生成的表面就会表现出高度贴图中所编码的高度信息。
要创建新的Lit Material,在引擎的导航栏中找到Asset窗口,右键单击该窗口,然后选择Create> Material。这会将新的材质添加到Unity项目的Asset文件夹中。当你在HDRP中创建新材质时,默认情况下它们将使用Lit Shader。想要换成其他的呢,它们呢,都在“ 着色器”下拉菜单中“ HDRP/ ”下。

对了,有别的问题的话,可以看下我之前写的文章哦~
HDRP的贴图通道细节可以看这里:厕所工程
HDRP后期Volume介绍可以看这里:Volume

Surface types(表面类型)

Tyes的HDRP手册文档:Types
  • Opaque(不透明):用于制作没有光穿透的完全固态的材料。
  • Transparent(透明):用于制作光可以穿透的半透明材料,例如透明的塑料或玻璃。选择“Transparent”可在“ Surface Options”部分以及“ Transparency Inputs”部分中显示更多属性。

Material types(材质类型)

Types的HDRP手册文档:Types
  • Standard(标准):用于制作基础的金属着色器工作流程的材料,这是默认的“ 材料类型”。
  • Anisotropy(各向异性):用来制作那些在不同角度观察高光会产生变化的材料。当您从不同角度查看“材质”时,各向异性表面的高光会改变外观。
  • Iridescence(彩虹色):用来制作那些在不同角度观察颜色会产生变化的材料。
  • Specular Color(镜面颜色):用来制作那些想要拥有特定颜色高光的材料或者是纯镜面着色的材料。
  • Subsurface Scattering(次表面散射):用来制作那些可模拟光交互和散射的半透明材料。
  • Translucent(半透明):用来制作那些半透明的材料,与次表面散射材料相比,半透明材料不会模糊透射通过该材料的光。

在制作之前呢,我们先来了解一下菲涅尔效应(Fresnel effect),因为它是作为基于物理的渲染理念中的核心理念之一。

菲涅尔效应 Fresnel Effect

基于物理的渲染的核心理念之一是采用基于真实世界测量的材质光学参数。
由于光由电磁波组成,因此,物质的光学特性与其导电特性密切相关。我们通常把导电性较差的材质,如煤、人工晶体、琥珀、陶瓷等称为绝缘体。而把导电性比较好的金属如金、银、铜、铁、锡、铝等称为导体。以及将导电性质介于导体和绝缘体之间的材质称为半导体。
即根据导电特性,可将现实生活中的物质分为三个主要光学类别:
  • 金属(metals)
  • 电介质(dielectrics)
  • 半导体(semiconductors)

菲涅尔效应,表示的是看到的光线的反射率与视角相关的现象,由法国物理学家奥古斯丁.菲涅尔率先发现。其具体表现是在掠射角(与法线呈接近90度)下光的反射率会增加。而上述的反射率,便被称为菲涅尔反射率。如下图。
需要注意的是,我们在宏观层面看到的菲涅尔效应实际上是微观层面微平面菲涅尔效应的平均值。
也就是说,影响菲涅尔效应的关键参数在于每个微平面的法向量和入射光线的角度,而不是宏观平面的法向量和入射光线的角度。即:
  • 当从接近平行于表面的视线方向进行观察,所有光滑表面都会变得100%的反射性。
  • 对于粗糙表面来说,在接近平行方向的高光反射也会增强,但不够达到100%的强度。
不同材质的菲涅尔效应的强弱是不同的,导体(如金属)的菲涅尔效应一般很弱,主要是因为导体本身的反射率就已经很强。就拿铝来说,其反射率在所有角度下几乎都保持86%以上,随角度变化很小,而绝缘体材质的菲涅尔效应就很明显,比如折射率为1.5的玻璃,在表面法向量方向的反射率仅为4%,但当视线与表面法向量夹角很大的时候,反射率可以接近100%,这一现象也导致了金属与非金属外观上的不同。
当光线垂直(以0度角)撞击表面时,该光线被反射(Reflected)为镜面反射光的比率被称为F0。即F0为0度角入射时的菲涅尔反射率。而折射(refracted)到表面中的光量则为为1-F0。如下图。
对于光滑的电介质表面,在0度角入射(F0)将反射2-5%的光,在掠射角入射下将反射100%的光。
大多数常见电介质的F0范围为0.02-0.05(线性值)。对于导体,F0范围为0.5-1.0。
为了方便创作呢,可参考如下的PBR材质F0反射率速查图表,其中分别对常见材质的线性值,sRGB值和参考颜色进行了列举。

好了,现在呢,我们了解了基础的表面类型和材质类型,以及物理的材质解析之后呢,就可以开始制作了,这里呢,我做了几个材质的示例,供大家参考一下~
  • 木板
  • 金属
  • 抛光金属
  • 皮肤
  • 透明塑料
  • 泥土沙石
  • 电镀
  • 布料
  • 绒毛
  • 分层材质
  • 分层Planar

— 木板 —


在“ 着色器”下拉菜单中,选择“ HDRP”>“Lit”
电介质具有相当低的F0值 - 通常为0.06或更低。在垂直入射时的这种低反射率使得菲涅尔效应对于电介质尤其明显。电介质的光学性质在可见光谱上很少变化很大,导致无色反射率值。
这个木头材质的属性如下:首先木头的Surface types是Opaque的,然后呢,它的Material types就选默认的Standard。

— 金属 —


在“ 着色器”下拉菜单中,选择“ HDRP”>“LitTessellation”
金属具有高的F0值 - 几乎总是0.5或更高。一些金属具有在可见光谱范围内变化的光学性质,导致了这些金属有色的菲涅尔反射率。
这个铁球为了将它表面细节体现的更加可信,我将它设为了曲面细分的Lit,这个金属材质的属性如下:首先它的Surface types是Opaque的,然后呢,它的Material types就选默认的Standard,如果选择了曲面细分的shader的话,会在Shader面板中多出一条Tessellation Options,来设置曲面细分的细节,这里就先不多做介绍了。
然后在Surface Inputs会多一项Height Map的接口,以及细分高度参数的设置。

— 抛光金属 —


在“ 着色器”下拉菜单中,选择“ HDRP”>“Lit”
这个抛光材质的属性如下:首先它的Surface types是Opaque的,然后呢,它的Material types选择到Specular Color。
为了呈现出镜面抛光的感觉呢,我将Smoothness值调整到了1,如果是Specular Color的材质类型的话,会在shader的Surface Inputs中多出一行Specular的贴图设置以及颜色设置。
抛光金属会立即吸收任何透射光,因此它们不会出现任何次表面散射或透明感。


— 皮肤 —


在“ 着色器”下拉菜单中,选择“ HDRP”>“LitTessellation”
这个皮肤材质的属性如下:首先它的Surface types是Opaque的,然后呢,它的Material types选择到Subsurface Scattering。
之后会在Surface Inputs会多一项Diffusion Profile(扩散曲线)的配置文件调用接口,如果你想创建Diffusion Profile,可以在Assets > Create > Rendering > Diffusion Profile,需要使用的话,可以添加到HDRP配置文件中的Diffusion Profile List里面。
然后还有Subsurface Mask贴图以及参数接口,以及Thickness(厚度)参数接口。

— 透明塑料 —


在“ 着色器”下拉菜单中,选择“ HDRP”>“Lit”
这个塑料材质的属性如下:首先它的Surface types是Transparent的,然后呢,它的Material types选择到Translucent,Translucent下的Lit Shader会生成一组Refraction Inputs设置,并将它之下的Refraction Model开启,并将模型设置成为Sphere(球体),当开启Refraction之后,Smoothness贴图就将能控制这个透明材质的可见度。

— 泥土沙石 —

在“ 着色器”下拉菜单中,选择“ HDRP”>“LitTessellation”
这个石头材质的属性如下:首先石头的Surface types是Opaque的,然后呢,它的Material types就选默认的Standard,石头的设置和木材是一样的,不过为了获得更加丰富的细节,用Hight Map将埋在土里的小石子逼真的刻画出来。

— 电镀 —

在“ 着色器”下拉菜单中,选择“ HDRP”>“LitTessellation”
这个电镀材质的属性如下:首先它的Surface types是Transparent的,然后呢,它的Material types选择到Iridescence,Iridescence下的Lit Shader会生成一组Iridescence设置,彩虹色的遮罩贴图和参数调节,还有就是彩虹色的遮罩厚度和参数调节。

— 布料 —

在“ 着色器”下拉菜单中,选择“ HDRP”>“Lit”
这个布料材质的属性如下:首先它的Surface types是Opaque的,然后呢,它的Material types选择到Anisotropy,Anisotropy下的Lit Shader会在Surface Inputs下生成一个Tangent Map(切线贴图)的接口以及Anisotropy参数设置条以及Anisotropy贴图接口。

— 绒毛 —

在“ 着色器”下拉菜单中,选择“ HDRP”>“LitTessellation”
这个绒毛材质的属性如下:首先它的Surface types是Opaque的,然后呢,它的Material types选择到Anisotropy,然后通过Hight Map的曲面细分,让材质有绒毛的感觉~。

— 分层材质 —


在“ 着色器”下拉菜单中,选择“ HDRP”>“LayeredLit”
在使用LayeredLit之后,会比Lit多一行Layer相关的设置,可以在Layer Mask上添加一张有RGBA通道的Mask贴图,将Layer Count设置成四个通道,这样,Layer List就会出现4个材质的接口,你可以直接拖入已经设置好的材质(修改这些材质的参数并不会影响原有的这些材质),或者直接在下面四个Layer里面设置也可以的。
这是我在使用的这张MASK贴图,显示在PS中的通道视图,这样看就很清晰明白了,白色代表每一个通道的显示区域,把所有的白色部分组合在一起时候,就能成为一张完整的贴图。
HDRP 在Main Layer之上按顺序渲染第1层,第2层和第3 层,通过Layering Options里的Opacity也可以让层级之间的材质相互混合。

— 分层Planar—

这是Layered Lit的拓展功能,将Base UV Mapping设置为Planar,将贴图的World Scale设置保持和地形或者其他Object的贴图一致,这样的话,比如,在做室外场景的时候,有树根或者石块什么的,插在地形上面的情况时,就能和地形Terrain完美的结合了。
好了,这次的Lit Shader的基本功能介绍就到这里啦~
  • 记得!评论~
  • 记得!点赞~
  • 记得!转发~
  • 还有!
樱花兔
一个做单机游戏的美少女,商务合作Q:262745567 - Producer
15
Comments
D
Dagouzi
5 months ago
谢谢小姐姐,知识+1,水群时间+1h。
0
5 months ago
樱花兔你好~是需要弄出什么效果啊...
半透明。。。。。
0
5 months ago
透明材质 cull mode 为什么不是 front 我设置back完全不透明。。。。。。。
0
g
guanbiao
9 months ago
宝藏啊,马上收藏了😍
0
F
Finger
9 months ago
FingerTangent Map是个啥啊
ok~谢啦
0