3dvary灯光材质为什么不亮_虚幻4:材质混合模式(Blend Mode)

本文详细介绍了虚幻4中材质混合模式,包括不透明、遮罩、半透明、叠加、调制、预乘透明度等。讨论了低开销半透明与高开销半透明(如正向着色ForwardShading)的差异,以及光照模式(Lighting Mode)的选择。还提到了蒙版、Additive/Modulate/AlphaComposite的使用,并讲解了折射(Refraction)效果。建议根据场景需求选择合适的混合模式,以平衡视觉效果和性能。
摘要由CSDN通过智能技术生成

2e3ff25f943c59fd6f0f2b0e5b63f468.png

混合模式(Blend Mode)

”混合模式“用来定义半透明度类型,一般情况下,它负责控制各种类型的半透明。半透明度由于各种原因非常难以处理,延迟渲染器(GBuffe)也给它施加了各种限制,因此使用半透明面临的困难很多,针对这些困难点产生了对应的半透明度设置,以及各种处理半透明度的方法。这也导致了它过于复杂,难以深入详细讲解。半透明度具有大量相关选项和功能,要详细讲解和理解何时应该使用哪些半透明度设置,颇有些令人望而却步。

310163f11e8801149ca1c78dfc8c7860.png

混合模式

  • 不透明(Opaque)
  • 遮罩(Masked)
  • 半透明(Tanslucency)
  • 叠加(Additive)
  • 调制(Modulate)
  • 预乘透明度(AlphaComposite)

总结:除了”Opaque“模式,其它如”Masked“、”Translucency“等都是与半透明相关的设置


讲解材质混合模式(Blend mode)的大致思路

  1. 介绍低开销版本的半透明有灯光和无灯光有什么区别,做半透明是否需要灯光
  2. 高开销版本半透明,为什么开销高
  3. 为什么灯光模式(Lighting Mode)使用“正向着色(ForwardShading)”,简单介绍光照模式(Lighting Mode)其它几个模式。
  4. 简单介绍几种使用蒙版(Masked)实现透明效果
  5. 简单介绍Additive/Modulate/AlphaComposite
  6. 简单介绍折射(Refraction)
  7. 总结如何选择混合模式(Blend Mode)

一、先比较低开销半透明有光照和无光照的区别

低开销半透明(Cheap translucency)

67216573386ba1974532e3b4848298cb.png

比较有光照半透明和无光照半透明

75f80d3c284f91f1433ea73b2ce02166.png

0f345b839fac27af81f0af8e7812ff5f.png

通过着色器复杂度解析窗口(Shader Commplexity)可以看到“半透明带光照”比“半透明无光照”更暗,就可以得出带光照比无光照开销更大,无光招开销显然小许多。由于GBuffer的限制,半透明表面确实非常难以显示反射,也非常难以与一般光照和着色效果进行正常互动,因此带光照的才显得如此普通。带光照的透明材质没有任何反射,只是半透明而已。也正是由于这个原因,它看上去与无光照几乎完全相同。

总结:在“延迟着色”中处理半透明度时,应尽可能使用无光照模式。


二、高开销半透明(正向着色ForwardShading)

b9fb4421ec0007346bf51917b8eaf0df.png

高开销的半透明的设置:

  • 金属度(Metaliic) 1.00
  • 高光度(Specular) 1.00
  • 粗糙度(Rougness) 1.00
  • 不透明度(Opacity) 0
  • 开启”屏幕空间反射(Screen Space Reflections)“
  • ”光照模式(Lighting Mode)“设为“表面正向着色(Surface ForwardShading)”

通过以上设置可以实现最佳的透明效果。此版本的开销非常高,可以看到在“统计数据(Stats)”面板中现在已经706调指令了,相比之前的透明无光照的材质只有28调指令,差距特别大。

在Translucency细节面板下有高级设置可供微调

  • “应用雾化(Apply Fogging)”关闭雾化的话玻璃就不会收到“远距离雾化”的影响。
  • “按像素计算雾化(Compute Fog Per Pixel)默认时按顶点计算雾化,而当开启时,就是按像素计算,在非常大的半透明海面上,可能会产生明显效果,你可能会看到构成海洋的三角形变为可见”。
  • “于景深后渲染(Render After DOF)有时可能遇到这种情况半透明表面上存在景深效果,但在不应该模糊的时候出现模糊或在应该模糊的时候未出现模糊”、“禁用景深测试(Disable Depth Test)当禁用时,该材质将无视遮挡关系,始终渲染”。

总结:使用”正向着色(FoworadShading)“可以有效的提高半透明的效果,但开销很大。


三、简单介绍光照模式(Lighting Mode):

  1. 体积非定向(Volumetric NonDirectional):是默认设置并且开销很低
  2. 体积定向(Volumtric Directional):开销低,但是着色是按照顶点来着色的,效果不好
  3. 体积逐像素非定向(Volumetric PerVertex NonDirectional)内部对平面进行细分来实现着色,细分的不是三角形而是四边形,然后使用这些小块来模拟光照,导致着色过度不平滑。这些小块是由控制台r.TranslucencyLightingVolumeDim 来控制分辨率
  4. 体积逐像素定向(Volumetric PerVertex Directional)
  5. 半透明体积(Surface TranslucencyVolume):开销较高且视觉效果很好
  6. 表面正向着色(Surface ForwardShading):开销很高

455e280bc4cac43397ffe79b1d6c20c1.png

基本上视觉效果遵循从差倒好的顺序排序,不使用”正向渲染“时,你会感觉到前四个选项的效果非常相似。一般情况下不使用”正向着色“,因为“正向着色”会导致它按“正向着色”的方式进行渲染。因为游戏或应用程序的所有其余部分都使用其它流程进行渲染,而只有它按“正向着色”来渲染玻璃,所以它开销特别大。

总结:正向渲染开销大部分原因是因为引擎其它模块都是用延迟渲染,而使用正向渲染时需要开正向渲染模块。


四、蒙版(Masked)

将“Blend Mode”设置为“Masked”即可启用“不透明蒙版”,然后只需将来纹理的Apha通道连到”Opacity Mask“即可。蒙版的开销很低,该材质109条指令,大部分是来自组成树叶本身的像素。它支持“金属度”、“高光”和各种PBR设置,它还支持“法线”等。 可见部分的开销很低。

a467de5160c60f545f2e623fdbf171a3.png

注意不可见的任何部分,实际上仍在进行渲染,而这些渲染会占用性能,渲染不透明部分的性能很快,性能大部分都流失在你看不到的部分。

12180639fde1f1f3c52311179b2c4e99.png

我们可以常看到对于蒙版的材质的性能优化,会对模型面积进行缩减。

34df18284ca82b0360c97988b7407862.png

颤动半透明度(Expensive translucency)

颤动半透明,它是基于不透明蒙版做透明效果。所以可以完全应用PBR。缺点就是会有重影,可以清晰看到“临时抗锯齿”导致的重影。该效果类似于在Apha通道上布棋盘格,来达到透明的效果。

abb4eaee5fd807a74f0d282e69573a4e.png

我们使用颤动临时抗锯齿”DitherTemporalAA“的函数来实现。此效果的渲染速度比实际透明度渲染更快,但又视觉瑕疵,不适合用于玻璃,但适合某些远距离的效果。

总结:蒙版可见部分开销低,不可见部分开销高。减少原始模型面积可有效降低性能消耗。


五、Additive/Modulate/AlphaComposite

055ad04acb05da0069cab541ce7503be.png

混合模式“叠加Additive”、“调制Modulate”和“预乘透明度AlphaComposite”,这三个功能非常相似。

  • “Additive”即在顶层添加颜色,并非半透明只是在顶层添加颜色。
  • ”Modulate”与“Additive”相反它移除所有亮部,仅保留较暗的像素处于可见状态。
  • “Modulate”很实用可用于污渍、泥土等,它可用于爆炸痕迹烧焦痕迹或者类似的效果,通常也只有处理此类痕迹时才会使用“Modulate”。

总结:Additive/Modulate/AlphaComposite和PhotoShop中的图层功能叠加/调制/透明度功能类似。


六、折射(Refraction)

当材质使用某种形式的半透明混合模式时,才能使用“折射”来反射对象背后的物体。

折射常用于水效果,比如用来折射水下小的场景,为你呈现水中常见的涟漪扭曲的效果。

407fdd452e71c7379c28dcbee7455421.png

如果材质连接法线贴图,那么着色器会把法线贴图纳入考量范围,并将法线贴图也用于折射。

f4541acbb1a8b665cf54080a08c5c948.png

常用的折射率

  • 空气(Air) 1.00 无折射默认值
  • 水(Water) 1.33
  • 冰 (Ice) 1.31
  • 玻璃(Glass) 1.52
  • 钻石(Diamond) 2.42

仅供参考,可根据实际效果调整

不能直接使用折射用于平面上

如果直接使用折射,并将其用于水面上,显示效果如下图左侧图。因为上列我们是将其用于球面上,球面属于有些复杂的模型,使用上面的方法是有效的,可正确显示折射。但如果对水平面使用上列方法就会有问题,它会导致图像向下偏移。

4c0b160d80583aeccd9a6e48419ecc01.png
左侧是显示错误,右侧显示正确

当我们用于平面折射时,需要将“折射模式(Refraction Mode)”改为”像素法线偏移(Pixel Normal Offset)“,默认是“折射率(Index Of Refraction)”。

cf7cbdd160764e5ce082a5d4980e2a2c.png

七、总结

如何选择使用混合类型(Blend Mode)

  • 能用“蒙版(Masked)“实现的效果那就用“Maked”
  • 如果使用”半透明(Translucent)“,那就判断一下是否需要光照,如果有光照和无光照没啥区别,那就用”无光照半透明模式“。
  • 如果按以上做没效果或效果不好,那就这样使用简单的半透明,不要用”正向着色“,不要启用”屏幕空间反射“,仅使用默认”体积非定向光照“或其它类似的灯光模式,尽可能使材质本身简单。
  • 如果你确实需要更好光照半透明效果,需要正确反射尽可能实现最佳视觉效果,并且性能没限制,那仅可能仅在有需要的地方使用“正向着色”。同时不要使用超过500个指令的高开销的半透明玻璃表面。
  • 环境中半透明的表面越多,半透明的材质就应该越简单
  • “Additive”、”Modulate“和”AlphaComposite“不常用的几种模式。上面有简单的介绍。

笔记整理自官方材质大师教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值