Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2021
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. shader_type canvas_item;
  2.  
  3. uniform vec2 uv0;
  4. uniform vec2 uv1;
  5. uniform vec2 uv2;
  6. uniform vec2 uv3;
  7. uniform vec2 uv4;
  8. uniform vec2 uv5;
  9. uniform vec2 uv6;
  10.  
  11. uniform float smoothness = 2.0;
  12.  
  13. uniform float offset = 1.0; //move from border
  14. uniform float thick = -0.02; //border thickness
  15. uniform float blur = 8.0;
  16.  
  17. uniform float uv_scale = 1;
  18.  
  19. void fragment() {
  20.     vec2 p = UV.xy;
  21.     const int num = 7;
  22.     vec2 v[7];
  23.     v[0] = uv0;
  24.     v[1] = uv1;
  25.     v[2] = uv2;
  26.     v[3] = uv3;
  27.     v[4] = uv4;
  28.     v[5] = uv5;
  29.     v[6] = uv6;
  30.    
  31.     float d = dot(p-v[0],p-v[0]);
  32.     int j = num-1;
  33.     for( int i=0; i<num; i++)
  34.     {
  35.         vec2 e = v[j] - v[i];
  36.         vec2 w =    p - v[i];
  37.         vec2 b = w - e*clamp( dot(w,e)/dot(e,e), 0.0, 1.0 );
  38.         d = min( d, dot(b,b) );
  39.  
  40.         j=i;
  41.     }
  42.  
  43.     d = blur*sqrt(d - thick) - offset;
  44.     float alpha  = 1.0 - exp(-smoothness*abs(d));
  45.    
  46.     vec2 scale = vec2(1.0, 1.0)*uv_scale;
  47.     COLOR = vec4( texture(TEXTURE, modf(UV/scale, scale)).rgb, alpha);
  48. }
  49.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement