Godot Shader特效:2D 溶解效果

效果图如下

效果图

准备工作

  • 一张png的角色图片


    角色图片
  • 一张噪声图片,这次使用的是Godot自动生成噪声图片,当然你也可以使用Gimp等第三方工具制作的噪声图片

步骤

  • 添加一个Sprite命名为mario并且给mario指定图片

  • mario新建ShaderMaterial,再为这个ShaderMaterial新建Shader

  • 在资源视图中新建一个NoiseTexture类型的资源,命名为dissolve_noise.tres

    新建NoiseTexture

  • 编辑dissolve_noise.tres,将其大小设置为和角色图片相同大小(128×128),然后在Noise属性那里新建一个OpenSimplexNoise

新建OpenSimplexNoise
  • 将这个dissolve_noise.tres资源在编辑器中指定给下面代码中的noise就可以了

提示
uniform指派值的位置在下图所示Shader Param

`Shader Param`中指派`uniform`值

代码如下

shader_type canvas_item;
uniform sampler2D noise;

void fragment(){
    vec4 color = texture(TEXTURE,UV);
    float n = texture(noise,UV).x;
    color.a = n > cos(TIME) ? .0 : color.a;
    COLOR = color;
}

小结

  • 只有变色没有形变所以只用到了fragment函数。
  • 噪声的作用是取对应点的一个分量作为阈值,不同的噪声纹理可以得到不同的溶解走向。
  • 加上TIME就可以实现动画效果了,并且不同的时间曲线也可以获得不同的溶解效果。
  • 实际上3D溶解的原理也是类似的。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容