Unity Shader Graph制作溶解效果

2022-08-29 16:08:32 浏览数 (2)

遵循国际惯例先看效果:

模型使用了Asset Store资源商店里下载的模型Robot Kyle,创建一个新的PBR Graph,命名为dissolve,双击进入shader graph编辑器,修改Main Preview预览窗口,使用Custom Mesh预览,选择Robot模型:

首先创建MainTexture属性,以便在Inspector面板添加贴图:

创建SampleTexture2D节点,将其Texture设为MainTexture属性,并将其输出连接至PBR中的Albedo节点:

添加Simple Noise噪声节点,并为Scale创建一个Noise Scale属性以便在Inspector面板进行调整,我们先将其设为60左右,将Simple Noise输出连接至PBR中的Alpha节点:

现在我们创建一个时间节点,使用其Sine Time实现溶解阈值从0至1、从1只0的循环效果,因为Sin函数取值范围为[-1, 1],因此我们再创建一个Remap节点将其取值范围映射到[0, 1]之间,最终将Remap输出节点连接至PBR中的AlphaClipThreshold节点,可以看到简单的溶解效果已经实现:

如果想要用C#脚本代码控制溶解过程,可以使用一个Vector1类型属性代替时间节点,在代码中调整该属性值以控制溶解过程。

为了实现溶解边缘发光效果,我们再创建一个Step节点,现在Simple Noise同时输出到Alpha和Step的Edge节点上,创建一个Vector1类型属性Edge Width用来调整溶解边缘的宽度,将其值用Add节点与时间正弦值相加输出到Step中的In节点:

最后,创建一个Color属性Edge Color以便调整溶解边缘发光的颜色,使用Multiply节点将Color值与Step输出值相乘,并输出到PBR中的Emission节点:

最终效果:

0 人点赞