虚幻引擎4.25的发行为材质系统带来了一些重大更新,包括增加一种正确的各向异性输入和一种新的基于物理的半透明着色模型,并更新了透明涂层模型。那么你知道UE4中更新的着色模型有哪些作用呢?
改进的透明涂层
UE4支持模拟透明涂层材料的多层着色器已有时日,正在继续改进现有模型,以生成更准确地遵循物理定律的结果。准确再现真实世界中复杂材质的能力对于某些行业和项目至关重要。例如,再现汽车漆面材质就是表现薄半透明表面的绝好例子,这种表面往往有不同的法线和粗糙度属性,还有底层表面的细节。
虚幻引擎4.24与4.25汽车漆面
先前的透明涂层模型适合配合环境光照使用,也就是说,它在配合利用天空和定向太阳光照的大型户外环境时效果最好。虚幻引擎4.25支持对精确(点、聚和定向)光源的正确定向响应,这类带有方向性的光源的衰减和菲涅尔效果最为明显。
虽然透明涂层模型往往与汽车漆面类材质关联,但也不局限于它们,它可以用于模拟任何在标准材质上面有一层稀薄半透明表面的多层材质,表现金属感和非金属感表面时效果都很好。
为了真正改进透明涂层模型,我们首先用编辑器中的路径追踪器来实现它。通过这种方法,我们得以生成地面真值参考,也就是用透明涂层模型生成准确遵循物理定律的地面真值表示,可以同时用于在传统光栅渲染路径和光线追踪渲染路径中改进它。
要设置和使用你自己的透明涂层材质,请导航到你的材质的细节(Details)面板,将着色模型(Shading Model)改为透明涂层(Clear Coat)。这会在主材质节点上启用两个输入:透明涂层(Clear Coat)和透明涂层粗糙度(Clear Coat Roughness)。
法线输入用于控制顶层的表面纹理。要设置和控制透明涂层下面的底层,可以启用透明涂层启用第二法线(Clear Coat Enable Second Normal)的项目设置,它可在引擎(Engine)/渲染(Rendering)/材质(Material)设置下找到。
启用第二法线后,使用材质图表中的透明涂层底层法线(Clear Coat Bottom Normal)输出表达式设置和控制透明涂层表面层下方的法线贴图细节。
底层法线可以更准确地表现与顶层透明图层有不同几何或反射表面的复杂材质,例如下层的碳纤维或汽车漆的反光斑点。这种材质设置的更多示例可以在汽车材质包中找到。
启用透明涂层底层法线与禁用透明涂层底层法线
增加的各向异性材质支持
在虚幻引擎4.25发行之前,要以正确的各向异性响应表现拉丝金属和其他相似的材质类型,只有通过在材质中伪造效果才能实现。在这个发行版中,我们添加了对设置和控制各向异性的测试版支持,可以提供准确遵循物理定律的光照响应。也就是说,你将能够通过一些简单易用的材质输入实时控制光源方向性,省去了伪造效果的麻烦。
例如,这个车轮上的旋转部件使用新的各向异性和切线材质输入,只需要极少的设置就能对光线作出自然的响应。
标准各向同性响应与正确的各向异性响应
我们的各向异性模型使用GGX各向异性公式,支持精确光源,用于天空光照的基于图像光照(IBL),以及使用光线追踪或反射捕捉探头配合透明涂层和默认光照着色模型的反光。这个发行版支持的光源类型有限,但将来的引擎发行版将支持定向光源和矩形光源。目前,它们还是会使使用各向异性属性的材质产生各向同性响应。
启用项目设置标记使用各向异性BRDF(测试版)(Use anisotropic BRDF (Beta))会打开材质编辑器中主材质节点上的各向异性(Anisotropy)和切线(Tangent)输入。
在材质编辑器中通过项目设置可以打开主材质节点上的各向异性(Anisotropy)和切线(Tangent)输入。当“粗糙度”输入的值大于0时,“各向异性”输入控制各向异性输入响应的正负粗糙度。
切线输入可用于指定所应用纹理的光源方向性。以上示例使用了一种拉丝金属切线贴图。各向异性输入控制各向异性响应的粗糙度。在下面的示例中,它从值0(无各向异性响应)变为值1(正各向异性响应)。各向异性响应可以使用-1到1的数值。各向异性使用0到1的数值,显示从各向同性响应到完全的正各向异性响应。
“切线”输入可用于通过直接数值或切线纹理贴图指定光源方向性。在仅使用法线纹理时,光源方向性提供各向同性响应。但是,当与切线贴图结合时,就会得到对光源方向性的完全各向异性响应。
左图,使用法线和切线贴图的各向异性响应;中图,仅使用法线贴图的各向异性响应;右图,仅使用切线贴图的各向异性响应
改进的基于物理的半透明效果
要创建某种透明材质来准确表现真实世界中的玻璃行为,例如有色玻璃和严重结霜的玻璃,以往总是有种种限制,只能通过变通方法或复杂的设置来实现。我们已经添加了一种全新的半透明着色模型来解决这个问题,它叫做薄半透明,使用一种基于物理的着色器,考虑了光线从空气射入玻璃、再从玻璃反射到空气的因素,能够在一个通道中同时渲染白色高光和背景对象。做到这一切的同时,它还在我们先前方法的基础上提高了半透明材质的质量和性能。
在创建有色玻璃之类的材质或任何半透明有色材质时,既要增加白色高光,又要给透过玻璃看到的背景染色。在先前版本的虚幻引擎中,只能通过分开对象和材质来伪造这类效果:一个用于处理白色高光,另一个用于背景染色。除此之外,这种设置的复杂性还要求将每个部分按正确的顺序混合。
薄半透明着色模型通过材质中一个基于物理的着色器,在一个通道中解决了这类问题。而且它也不需要过于复杂的变通方法或工作流程来实现这种效果。稀薄半透明材质在一个通道中既能准确表现白色高光,又能正确地给背景染色。
要开始使用这种新的着色模型,可以在你的材质细节面板中通过下列设置启用它:
混合模式设为半透明(Translucent)
着色模型设为薄半透明(Thin Translucent)
光照模式设为表面前向着色(Surface ForwardShading)
在材质图表中,添加一个薄半透明材质(Thin Translucent Material)输出表达式来驱动材质的透光颜色。下面是一种非常简单的半透明材质。TransmittanceColor驱动透过材质的颜色。主材质节点上的“不透明度(Opacity)”输入控制允许透过材质的光线量。与默认光照半透明材质不同的是,如果不透明度设置为0,材质仍然可见,但不会阻止光线透过材质。
如果我们查看默认光照半透明材质与我们的新半透明模型的对比,差异是很明显的。传统模型依靠深度缓冲,它并不能对在其正后方的对象作出正确反应。此外,阴影区域也没有得到正确表现,使有色的半透明材质看起来就像无色透明的一样。
新的半透明模型考虑了这些因素,提供了白色高光和正确染色的背景表现。
在汽车、制造和建筑行业工作的人士长期致力于在他们的项目中实现高精度。虚幻引擎4.25中着色器改进在降低这类材质设置的复杂度方面又迈进了一步,大家可以不必使用过于复杂的材质逻辑或技巧就能获得理想的外观。
,Unreal Engine技巧,Unreal Engine教程