欢迎大家来到IT世界,在知识的湖畔探索吧!
UE在5.1中推出了基于PBR的新材质系统Strata,5.2版本中更新名并改名为Substrate,并在5.3版本中对Substrate做了进一步的改进。
在去年9月份Thepoly关于5.3新功能的文章中,简单提了一下Substrate,今天要对这套材质系统进行展开介绍。

欢迎大家来到IT世界,在知识的湖畔探索吧!
1
启用Substrate
在项目设置,渲染中,开启Substrate。
Substrate材质不能恢复为非Substrate材质。打开并保存后,不可取消转换。因此,建议在启用Substrate之前将项目备份。
Substrate不透明材质粗糙折射(Substrate opaque material rough reflection) |
启用后,覆盖在其他材质上的粗糙表面能够以物理上可行的方式模糊较低层。 |
|
Substrate高级可视化着色器(Substrate advanced visualization shaders) |
启用此选项后,将生成高级调试视图模式所需的着色器。这些着色器会影响性能,应仅在需要调试Substrate材质拓扑时启用。 |
开启Substrate后,之前的材质会默认转换为适配Substrate的材质,并通过“Substrate Legacy Conversion”旧版转换,将之前的材质流程转换为Substrate流程。
在实际测试中,重新关闭项目设置中的Substrate选项,材质依然会切换回旧版,但是为了保险起见,还是建议对原有项目进行备份后再开启Substrate,或者在新项目中开启Substrate。
2
5.3版本中的新改进
在5.3版本中对Substrate的功能、稳定性及性能等方面都进行了改进,具体如下:
1. 新增闪光(Glints)和高光反射轮廓(Specular Profile) 特性,主要用于汽车应用。
2. 改进了DBuffer着色节点支持。
3. 用于高规格平台的Fuzz模型。
4. 更新了“材质编辑器”中的“基底材质信息”选项卡,以更好地显示材质性能和拓扑信息。
5. 其他BUG修复以及性能改进。
3
Substrate概述
基于原理化BSDF的材质创作的Substrate材质框架概述。
BSDF:全称是Bidirectional Scattering Distribution Function,即双向散射分布函数,它是一个统称,一般包括BRDF(反射)和BTDF(透射),反映了一个面上不同方向的散射强度。
之前沿袭UE4的旧材质系统使用的是BRDF,全称是BidirectionalReflectance Distribution Function,即双向反射分布函数。用来定义给定入射方向上的辐射照度(irradiance),如何影响给定出射方向上的辐射率(radiance)。更笼统地说,它描述了入射光线经过某个表面反射后如何在各个出射方向上分布。也可理解为:光线从某个方向入射到表面后,能量被该表面吸收,然后再朝着各个方向发射出去。
BSDF与BRDF同样都是遵循物理,基于PBR的模型。只是使用基于BSDF的Substrate在处理物体表面散射时会更容易调出效果,如介于金属和非金属之间的材质效果。
简言之,BSDF=BRDF+BTDF
BTDF,全称Bidirectional Transmittance Distribution Function,即双向透射分布函数。通常用于表现光透过物体产生的效果,如SSS次表面。
Substrate是虚幻引擎5中的材质编辑途径;它摒弃了原有固定着色模型和混合模式的思路(例如默认光照和透明涂层),替换为表现力更强、更为模块化的框架。
Substrate材质消除了非Substrate(或旧版)材质系统的特定抽象性,而改用有度量的物质属性。这扩大了可以工作的参数空间,可以更准确地呈现混合金属、玻璃、塑料等复杂的材质表面。Substrate还简化了材质分层过程,可以更轻松地表示诸如金属上有液体或次表面散射上有透明涂层之类的表面。
Substrate中的材质依赖”物质Slab(slab of matter)”概念。这些Slab是一种由具有明确单位的物理量参数化的原则性BSDF表示。材质表示为执行各种运算(例如混合与分层)的Slab图。由于其原则性表示,Substrate材质可以根据平台的容量进行简化,放弃视觉质量,以换取性能的提升。
3
Substrate常用节点注释
以Substrate Slab BSDF为例,主节点包括以下输入:
漫反射反照率 (Diffuse Albedo) |
定义从表面进行漫反射的光线百分比。这类似于介质的局部基础颜色。默认值为0.18。 |
|
F0 |
定义表面与摄像机垂直的高光度高光的颜色和亮度。对于非传导性材质(塑料和其他非金属材质),这个数值通常在0到0.08的范围内。对于金属材质,它的范围最高可以达到1。宝石的范围最高可以达到0.16左右。 |
|
F90 |
定义表面法线与摄像机成90度夹角的高光度高光的颜色。换言之,在相对于摄像机视图的切线角。仅会感知到色调和饱和度,因为亮度固定为1.0。随着F0降至0.02以下,这会淡入淡出为黑色。 |
|
粗糙度(Roughness) |
控制材质的粗糙程度。表面粗糙度的范围是从0到1。为0(光滑)时,粗糙度是镜面反射。为1(完全粗糙)时,粗糙度是完全哑光或漫反射。使用各向异性时,会使用切线轴上的粗糙度值。 |
|
各向异性(Anisotropy) |
控制材质的各向异性方向(-1:高光与双切线对齐,1:高光与切线对齐)。 |
|
法线(Normal) |
取表面法线为输入。法线根据Material Root节点上的空间属性被视为切线或世界空间。此输入逐像素定义着色法线。 |
|
切线(Tangent) |
取表面切线为输入。法线根据Material Root节点上的空间属性被视为切线或世界空间。此输入逐像素定义着色切线。 |
|
SSS MFP |
次表面散射平均自由程(MFP)。这控制材质的密度,并影响材质对光源的吸收和散射。更准确地说,它定义光子与物质粒子相互作用的平均距离。这个距离由每个颜色通道控制。 此输入仅在没有向Material Root节点指定次表面轮廓资产时使用。 |
|
SSS MFP缩放 (SSS MFP Scale) |
次表面散射平均自由程(MFP)。这控制材质的密度,并影响材质对光源的吸收和散射。更准确地说,它定义光子与物质粒子相互作用的平均距离。这个距离由每个颜色通道控制。 此输入仅在没有向Material Root节点指定次表面轮廓资产时使用。 |
|
SSS相位各向异性 (SSS Phase Anisotropy) |
正值沿光线方向延长相位函数,导致前向散射。负值沿光线方向的反方向延长函数,导致后向散射。 |
|
自发光颜色(Emissive Color) |
控制材质表面上的自发光颜色。 |
|
第二粗糙度 (Second Roughness) |
控制次要高光度波瓣的粗糙度。为0(光滑)时,粗糙度是镜面反射。为1(完全粗糙)时,粗糙度是完全哑光或漫反射。 此输入不影响漫反射粗糙度。 |
|
第二粗糙度权重 (Second Roughness Weight) |
主要和次要高光度波瓣之间的混合因子。使用粗糙度的第一高光度的权重为(1 – SecondRoughnessWeight)。值等于0时,仅渲染主要波瓣。值为0.5时,主次各占50%,值为1.0时,仅渲染次要波瓣。 |
|
绒毛粗糙度(Fuzz Roughness) |
控制绒毛层的粗糙程度。粗糙度为0的绒毛为光滑(更有光泽),粗糙度为1的绒毛为完全粗糙(哑光)。 如果没有值连接到此输入,将改用粗糙度输入。 |
|
绒毛量 (Fuzz Amount) |
在界面上添加类似绒毛的层,从而引发彩色逆反射。这控制应用于表面层上的绒毛量。通常用于创建织物材质。 |
|
绒毛颜色(Fuzz Color) |
定义绒毛层的颜色。 |
|
闪光密度(Glint Density) |
材质表面上的微面片密度的对数表示。 需要在ConsoleVariables.ini配置文件中设置 r.Substrate.Glints=1 。 |
|
闪光UV (Glint UVs) |
控制材质表面上闪光的位置和比例。 需要在ConsoleVariables.ini配置文件中设置 r.Substrate.Glints=1 。 |
4
Substrate混合模式
Substrate使用自有的一组混合模式来定义材质颜色如何与背景混合。旧版材质混合模式在彼此混合方面效果有限,所以能够创建的材质类型受限。Substrate的混合模式选择更多,可将材质混合到一起,形成各种各样的材质。这对于实现物理上正确的半透明表面着色尤其重要。
Substrate包括以下混合模式:
混合模式 |
说明 |
|
半透明(Opaque) |
定义了光线既不能通过也不能穿透的表面。覆盖范围是1的不透明表面。这与旧版不透明混合模式相同。 |
|
遮罩(Masked) |
用于需要以二元(开/关)方式选择性控制可视性的材质。覆盖范围是1或0的不透明表面。这与旧版遮罩混合模式相同。 |
|
半透明灰色透射率( |
一种具有彩色表面和覆盖范围,但透射率减少为灰阶的半透明材质。这可以加快速度,因为它可以防止将后景深半透明额外渲染成调制通道。这是退却混合模式,适合不支持硬件彩色半透明度(称为双源颜色混合)的平台。这类似于旧版半透明混合模式。 |
|
叠加(Additive) |
将材质颜色添加到背景颜色,其中最终颜色 = 源颜色 + 目标颜色。 |
|
仅限彩色半透明 (ColoredTranslucencyOnly) |
仅使用材质的透射率。表面相互作用减少到0。这与旧版乘混合模式相同。 |
|
Alpha复合(预乘的Alpha) (AlphaComposite (Premultiplied Alpha)) |
此混合模式用于更精细地控制材质的哪些部分以叠加方式混合,哪些部分使用不透明度输入以半透明方式混合。工作方式与旧版Alpha复合(预乘的Alpha)混合模式相同。 |
|
Alpha维持 (AlphaHoldout) |
此混合模式将维持Alpha,以便给对象打孔,露出后面的对象。工作方式与旧版AlphaHoldout混合模式相同。 |
|
半透明彩色透射率 (TranslucentColored Transmittance) |
一种具有彩色表面、覆盖范围和彩色透射率的全功能半透明材质。在景深后期处理时使用单独半透明的开销更大,因为必须在单独的缓冲区中渲染透射率分量,类似于旧版薄半透明(ThinTranslucent)着色模型。 |
5
光照模式
利用Substrate处理半透明比传统材质更简单,半透明混合模式的意图更明确。这两者都有一个方面没有发生变化,即所有半透明混合模式还必须设置 光照模式(Lighting Mode) 来定义如何计算表面的光照。这对于实现半透明材质的正确外观很重要。
你创建的绝大部分半透明材质都将使用 表面半透明体积(Surface Translucency Volume) 或 表面正向着色(Surface Forward Shading) 。
以下光照模式可供选择:
|
光照模式 |
说明 |
|
体积非定向 (Volumetric NonDirectional) |
将针对体积计算照明,且照明没有方向性。此设置用于烟雾和灰尘等粒子特效。这是最经济实惠的逐像素光照方法。但是,没有考虑材质法线。 |
|
体积定向 (Volumetric Directional) |
将针对体积计算照明,且照明具有方向性,因此材质法线也被纳入考虑范围。请注意,默认粒子切线空间面向摄像机,因此,启用”生成球体粒子(Generate Spherical Particles)”可获得更有用的切线空间。 |
|
体积逐顶点非定向 (Volumetric PerVertex NonDirectional) |
与体积非定向相同,但光照仅在顶点处求值,因此像素着色器开销低得多。请注意,光照仍然来自体积纹理,因此范围有限。定向光源在远处无阴影。 |
|
体积逐顶点定向(Volumetric PerVertex Directional) |
与体积定向相同,但光照仅在顶点处求值,因此像素着色器开销低得多。请注意,光照仍然来自体积纹理,因此范围有限。定向光源在远处无阴影。 |
|
表面半透明体积(Surface Translucency Volume) |
将为表面计算光照。光线会在体积中累积,因此结果比较模糊,距离也有限,但逐像素开销非常低。可在半透明表面(如玻璃和水)上使用。仅支持漫反射光照。 |
|
表面前向着色(Surface ForwardShading) |
将为表面计算光照。可在半透明表面(如玻璃和水)上使用。这使用前向着色来实现,因此支持来自局部光源的高光度高光,但不支持许多纯延迟功能。这是开销最大的半透明光照方法,因为每个光源的贡献量逐像素计算。 |
6
小总结一下
相信很多人在Substance发布之初都看过Allegorithmic出的PBR综合指南PBR Guide,里面有介绍过F0反射率值,也看过下图这个示例。
绝缘体反射光的总量比金属小非常多。对于常见绝缘体这一数值为2-5%,在sRGB中这一数值会在sRGB 40-75 之间,即0.02-0.05(线性)范围。对于金属,镜面反射范围在70-100%之间,映射到 sRGB 即180-255之间。
F0以导体和非导体(金属和非金属)为分类,将F0数值进行区分。
其中非金属具有单色/灰色镜面反射颜色。而金属具有彩色的镜面反射颜色。即非金属的F0是一个float,而金属的F0是一个float3。
之前在材质系统中所使用的基于BDRF的两套PBR工作流程。
两种PBR材质Basecolor+Metalic与Albdeo(Diffuse)+F0(SpecularLevel镜面反射等级)效果的对比,两种流程效果一模一样。注意这里没有展示Roughness灰度图。
5
需要更改制作流程吗
对于新的Substrate材质有人会担心需要新的制作流程,这里可以不用担心,Substrate提供了新的节点,“Substrate
Metalness-To-DiffuseAlbedo-F0”,可以将BaseColor和Metallic转换为DiffuseAlbedo和F0。
在使用新的Substrate材质后,新建材质球,都会默认有“Substrate UE4 Default Shading”节点,看起来熟悉又陌生。
两种流程一种使用“Substrate UE4 Default Shading”,将材质直接连接。
另一种使用“Substrare Slab BSDF – Simple”节点,配合“Substrate
Metalness-To-DiffuseAlbedo-F0”一起使用。
同样都是PBR流程的材质,所以效果一模一样。
6
SpecularProfile高光度描述文件
右键创建高光度描述文件
只有Substrate Slab BSDF-ComplexSpecial可以添加高光度描述文件,将高光度描述文件放在对应材质选项中。
通过调节高光度描述文件的LUT值,可以轻松做出“五彩斑斓的黑”效果,同样也在制作珍珠,泡沫等多种表面反射颜色的材质。
同样的也可以制作珍珠材质。
关于Substrate材质更多的内容,会在以后的文章中继续更新。
以上就是本次案例的内容了,如有不足之处,希望大家可以一起交流学习,一起变得更强!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/112208.html