Godot - Shader - 文字/图片 添加裂痕

十分简单, 首先百度搜一下自己想要的裂痕效果
比如:


然后对文字/图片设置shader:

shader_type canvas_item;

uniform sampler2D src;

vec2 rotateUV(vec2 uv, vec2 pivot, float rotation) {
    float sine = sin(rotation);
    float cosine = cos(rotation);

    uv -= pivot;
    uv.x = uv.x * cosine - uv.y * sine;
    uv.y = uv.x * sine + uv.y * cosine;
    uv += pivot;

    return uv;
}

void fragment(){
    vec4 cc = texture(TEXTURE, UV);
    vec4 cs = texture(src, rotateUV(UV*8., vec2(.5), 3.14/10.));
    float bright = cs.r*cs.g*cs.b;
    COLOR = vec4(cc.rgb,min(cc.a,bright));
}

这里我用到了· rotateUV·平移旋转参数

  • 从原本的图中获得色彩
  • 从纹理图中将黑色区域转换为透明度
  • 给原图贴上透明纹理效果

效果不错吧,你也可以试试

你会发现相同字母的裂纹是一样的,想想为什么,怎么做成不一样

你可能感兴趣的:(Godot - Shader - 文字/图片 添加裂痕)