很多游戏开发者在接触UE4的过程中经常都会遇到透明材质的问题,比如排序,品质,效率,表现等。透明材质也有些特有优势未被充分认识;下面为大家系统的介绍透明材质,并结合实践循序渐进展开。帮助大家拓展思路和应用想象空间。


UE4中如何理解与应用透明材质


什么是透明材质:


UE4中透明材质主要是指Blend Mode是Translucent类型的材质。它的特征是可以有半透效果,能部分或者全部看到后面SceneColor(背景),延迟渲染管线下还包括看到材质后的其他G-buffer的信息,并且不写入深度(SceneDepth);从广义上来讲能和材质后像素混合的材质都是透明材质,因此其他如Modulate, Additive, 以及AlphaComposition 等混合模式的材质都具有透明材质的特征。另外除了Surface类型材质,Deferred Decal, Volume目前只能使用透明Blend Mode。


透明材质的特性以及优缺点:


1、不写入场景深度(SceneDepth),但可以单独绘制深度到Custom Depth,及绘制Custom Stencil等buffer;


因此深度相关的特性缺失。最常遇到的问题是基于像素的前后排序的问题。目前透明材质的前后排序仅能通过透明物体相对于摄像机距离远近来做前后排序,这个可以在物体的Translucent sort里设置其优先级,优先级越高越靠前。另外粒子有其特定的信息来帮助排序,比如粒子诞生的时间,离摄像机的距离等,这些可以在粒子系统的相关参数中调整;另外多个透明物体由于随着摄像机移动产生绘制顺序的前后变化跳跃,我们也可以把这些透明物体作为一个Group通过使用一个Bounds来固定前后绘制顺序;但所有这些都基于物体而非像素,这是目前已有的局限;如果要基于像素的排序就需要有深度绘制,Epic一直使用的是通过非透明材质加Dither Opaque Mask的方式来模拟,效果效率有优劣。


没有深度的另一个常见问题是透明物体景深效果(DOF)的问题。材质本身深度的缺失导致DOF散焦效果会基于透明物体背后的深度来计算,如果透明物体离背景较近,深度差别小,问题不严重;如果离背景远,比如非常近距离的透明物体背景是天空(无限远),整个透明物体就会被(DOF)模糊掉。目前解决方式是通过指定透明材质绘制到DOF效果之后而排除掉DOF对其的影响,然后再在材质里简易的模拟DOF效果(比如变大,变模糊),这里涉及到的材质节点是DepthOfFieldFunction,具体的实现可以参看ParticleDOF材质函数的实现。


没有深度也带来特殊的优势,我们可以通过忽略排序来让它绘制到最前面(材质中Disable Depth Test)。使用这种方式可以做一些局部区域类似后期的效果。


选择Real Time Ray Tracing渲染透明物体没有排序问题。


2、Unlit Translucency: 透明材质的最大特性是可以半透,同时看到前景和背景(背景的颜色,深度,法线,等等),或者说可以采样到背景作为前景;


屏幕上透过透明材质看到的画面最终效果无非取决于三方面:前景,背景,以及两者的混合模式;

前景指直接传入到Emissive Color中的信息;这个信息可以是贴图,数值,背景信息(背景颜色,深度,法线,位置等等),Custom通道信息


背景指Opacity(0-1)为0时候看到的信息。我们对背景内容本身无法改变,能控制的是通过调整Opacity值决定看到的背景的多少,是线性控制;


背景Opacity的控制也可以通过控制前景来模拟实现(通过Lerp SceneColor);比如以下的透明Logo效果可以用以下两种方式实现。他们在效果上没有区别,效率上在不同的情况下稍有差别(这里控制Opacity方式更快,但有时Lerp快)。这个需要注意下,根据实际情况选用合适的方式,尤其是OverDraw严重的时候会累计这种开销差别。


UE4中如何理解与应用透明材质

UE4中如何理解与应用透明材质



 ●  混合模式(Blend Mode):目前有Translucent\Modulate\Additive\AlphaComposition等;


UE4中如何理解与应用透明材质


混合模式(Blend Mode)的控制也可以通过控制前景模拟实现;以下是Modulate, Additive和AlphaComposition等Blend Mode通过Translucent Blend Mode来模拟。效果无差别,开销在不同情况差别不一。


比如Modulate混合模式是前景乘上背景的混合结果,一般来说会变得更暗。它也可以使用Translucent混合模式通过前景乘上SceneColor来实现(开销比较会根据实际情况变化)。


UE4中如何理解与应用透明材质


同样Additive混合模式是前景加上背景的混合结果,会变得更亮。可以使用Translucent 混合模式前景加上SceneColor实现。


UE4中如何理解与应用透明材质


AlphaComposition混合模式是前景加上背景的结果和背景之间的线性混合,混合权重取决于Alpha;这种混合模式比较好的平衡了Additive和Translucent两者的优略,使得混合结果某些亮的区域在背景前不至于太爆,同时对于Alpha通道的品质要求也不高。适用于一些解决过曝粒子特效的问题。


UE4中如何理解与应用透明材质


从AlphaComposition的模拟看出,其实它是Additive和Translucent两种混合模式在一个材质中的实现;我们看到控制前景模拟混合模式可见的好处是可以在一个材质里基于像素区分多种混合方式。以下例子就是把Modulate, Additive和AlphaComposition三种混合方式通过一张贴图的不同通道来做区分混合到了一个材质里。


UE4中如何理解与应用透明材质


因此UE4透明材质控制的三方面都可以归一化为前景控制。前景控制包括本身的值,和UV等;对于这些的控制可以实现不少效果。

,Unreal Engine技巧,Unreal Engine教程