纹理合成的需求

UE4材质常常需要合成不同的纹理。常用的合成运算,有好几种选择,下面单独介绍。

下面这两种图片,是合成之前的图片。

UE4材质中的乘法

乘法是最常用的合成运算。

下面是这两张图用乘法合成的效果。

乘法合成很简单,取值范围在运算之后仍然是0~1。

但是合成之后会变暗,这是因为两个0~1的数相乘,会变得更小,所以更暗。下图是材质节点。

UE4材质中的加法

这是加法合成的效果。

两个0~1之间的数相加,范围是0~2,所以需要再除以2。下图是材质节点。

但是为什么整体会变亮?其实不只是变亮,而是亮度趋向于平均值。亮的地方更暗,暗的地方更亮。

这就是均值运算造成的结果。

UE4材质中的除法

下图是合成的效果。

下图是材质节点。

其实除法一般不用于纹理合成,原因很简单,两个0~1之间的数相除之后,其取值范围变化非常大。可能会有很多像素点的值直接超过1,表现为白色。合成之后的结果也证明了这一点。

另外,哪个除以哪个,效果也不同。下图是交换之后的结果。

UE4材质中的减法

同样的,减法不满足交换律。下图是减法合成的效果。

下图为材质节点。

两个0~1之间的数相减,其取值范围为-1~1,而小于0的颜色按照0来算,所以很多像素点直接就是黑色。

你也可以进行先加1再除以2的运算,但是效果。。并不好,下图就是。

UE4材质中的插值(Lerp)

插值可以取得更多样的效果,因为插值引入了第三个参数。

下图是材质节点。

而Lerp的Alpha参数分别为0.5、0.2、0.8的效果。

可以看到,插值可以很好地控制合成效果。

而插值的第三个参数,可以使用一个灰度图。下图就是用一张黑白相间的灰度图合成的效果。

相对于其他运算,插值更广泛的应用于纹理合成。