Blend Mode
Blend Mode主要用于控制半透明物体的混合,半透明物体在实时渲染中处理起来比较有挑战。
Opaque:
不透明。
Translucent:
半透明。启用Opacity。因为半透明开销比较大,所以如果可以的话,Shading Mode尽量使用Unlit。
Masked:
启用Opacity Mask。Masked相比Translucent性能要好很多。Masked性能大部分都流失于看不到的透明部分。
在不透明的部分,不涉及半透明渲染的渲染排序问题,开销比较小。而看不见的透明部分,其实也消耗计算,而且复杂度比较高。
所以请尽量使用Masked,除非需要绝对真实的半透明不要使用Translucent。
有一种使用Masked + DitherTemporalAA模拟半透明效果的方法,DitherTemporalAA生成一些颜色深浅不同的像素块,连接入Opacity Mask产生一种类似半透明的效果。
即使这样,这个材质的性能消耗也比Translucent要好。但是这样有一些视觉瑕疵,不适合模拟光滑的半透明物体,如果物体在远处可以考虑。
Additive:
在顶层添加颜色,并非半透明。
Modulate:
移除所有明亮的部分,仅保留较暗的像素处于可见状态。常用于污渍、爆炸痕迹等。
Refraction
Translucent和Additive模式下会启用Refraction,材质的IOR。
法线贴图的连接会影响折射系数,即使是Unlit模式下也会影响。
Details中有一个设置"Refraction Mode",大部分情况使用Pixel Normal Offset效果更好(比如水下的折射)。
半透明物体的设计
能用Masked就用Masked
确实需要使用真实的Translucent,看能否使用Unlit的半透明。
如果光照计算也不能省掉,尽量使用极简的材质设置。不要使用"Forward Shading"、"Screen Space Reflections"等。
尽量在有限度内使用半透明材质,减少场景中半透明物体数量,或者至少保证不会一个半透明后面再放一个半透明。
总体上考量,如果一个场景中使用的半透明物体越多,那么半透明材质的复杂度就要可能简化。
以上内容转自知乎 Texel;
网友评论