Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- shader_type canvas_item;
- uniform vec2 uv0;
- uniform vec2 uv1;
- uniform vec2 uv2;
- uniform vec2 uv3;
- uniform vec2 uv4;
- uniform vec2 uv5;
- uniform vec2 uv6;
- uniform float smoothness = 2.0;
- uniform float offset = 1.0; //move from border
- uniform float thick = -0.02; //border thickness
- uniform float blur = 8.0;
- uniform float uv_scale = 1;
- void fragment() {
- vec2 p = UV.xy;
- const int num = 7;
- vec2 v[7];
- v[0] = uv0;
- v[1] = uv1;
- v[2] = uv2;
- v[3] = uv3;
- v[4] = uv4;
- v[5] = uv5;
- v[6] = uv6;
- float d = dot(p-v[0],p-v[0]);
- int j = num-1;
- for( int i=0; i<num; i++)
- {
- vec2 e = v[j] - v[i];
- vec2 w = p - v[i];
- vec2 b = w - e*clamp( dot(w,e)/dot(e,e), 0.0, 1.0 );
- d = min( d, dot(b,b) );
- j=i;
- }
- d = blur*sqrt(d - thick) - offset;
- float alpha = 1.0 - exp(-smoothness*abs(d));
- vec2 scale = vec2(1.0, 1.0)*uv_scale;
- COLOR = vec4( texture(TEXTURE, modf(UV/scale, scale)).rgb, alpha);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement