大家好,我是优就业小优,又和大家见面了。今天我们来讲一下,如何用Amplify
Shader Editor插件制作一个燃烧溶解的效果。如下效果:
一、首先我们实现消融的效果
首先需要设置一下主节点的属性
渲染类型(Render Type)要选成透明切口(Transparent Cutout)
渲染队列(Render Queue) 要选成透明度测试(Alpha Test)
遮罩值(Mask Clip Value) 要选成0.5(可手动调节)
当主节点的属性设置成如上后,你会发现主节点的 opacity mask变得可选了。这个就
是透明度遮罩,如果这个值给的大于mask clip value(目前是0.5)那么这个像素就可显示,如果小于这个值(0.5)那么这个像素就不显示。我们知道,Alpha混合运算量是比较大的,但是在实际游戏效果中,有些物体的Alpha的值如果很小,在远处就是看不见的,好不容易运算出来,玩家又看不见,那还不如不算,直接裁剪掉。所以这时候就用上了Alpha Test.如果小于某个Alpha值就直接过滤。省去后面的运算。
这里加了一个遮罩图,是因为我们要实现一个溶解的效果,就是有些像素显示有些像素不显示,就要每个像素不同的opacity mask值,所以用一个噪声图来给每个像素不同的mask值。
接着我们给遮罩图(Dissolve Guide)一个可控的变量值 (Dissolve Amount),这个值的类型是Property,那么意味着我们可以在C#代码里控制它。它的值如果是0,那么我们希望物体有局部消融,如果是1那么我们希望物体全部消融。参数含义如下:
One Minus:节点就是一个翻转节点,在这里就是1-DissolveAmount。
Remap节点:将其输入上设置的值从(Min Old, Max Old)范围转换为由(Min New, Max New)定义的新值。这里我们想把1-DissolveAmount的值从---0的范围变
成-0.6—0.6的范围。
为什么要这样呢?因为我们原先遮罩贴图输出的颜色值的某一通道比如R通道,输出的值的范围是0--1,然后Dissolve Amoun 的值经过翻转后变成了-1--0。这两个相加的范围就是-1到1,但是我们这里opacity mask值需要的范围,0-1。那么我们就需要把DissolveAmount的范围调整为-0.6-0.6,这样和如果遮罩图的单一通道颜色值的是1,相加后是0.4也是小于0.5的。这样就能实现全部消融的效果。
二、消融的时候边缘会有燃烧的效果(自发光)
接着我们需要在消融的基础上加上消融的边缘有自发光的效果,看着好像是被火烧没了的那种感觉。这个效果的难点就是要找到没消融的边缘,然后给他的emission给一个火的颜色就可以了。如下图:
那么我们怎么找到溶解的边缘那?我们溶解的opacity Mask主要是来自噪波图如下:
噪波图的颜色值是比较均匀的,从白渐渐过度到黑,也是从1慢慢变道0,我们知道是颜色是黑的地方就是我们物体看不到的被溶解到的地方,那么噪波颜色是灰色的地方就是我们显示和不显示的边界。
把Opacity Mask值 Append上一个y,生成一个Vector2(opacity Mask,0)作为这个burn ramp的uv值,如果这个值是Vector2(0,0),那么就取的是黑色,如果是vector2(0.7,0)取的就是黄色。那么opacity mask 值为0.7的地方,就是溶解边缘的颜色,这时候它的emission就是黄色。就是燃烧的效果。
好了,今天的课程就到这里了,咱们下期再见