summaryrefslogtreecommitdiff
path: root/shader/metaball.shader
blob: e7e344e0083426ad9a7908965bfe7321f3522751 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
extern vec2 distortionFactor;
extern vec2 scaleFactor;
extern number feather;
vec4 effect(vec4 color, Texture tex, vec2 uv, vec2 px) {
  // to barrel coordinates
  uv = uv * 2.0 - vec2(1.0);
  // distort
  uv *= scaleFactor;
  uv += (uv.yx*uv.yx) * uv * (distortionFactor - 1.0);
  number mask = (1.0 - smoothstep(1.0-feather,1.0,abs(uv.x)))
              * (1.0 - smoothstep(1.0-feather,1.0,abs(uv.y)));
  // to cartesian coordinates
  uv = (uv + vec2(1.0)) / 2.0;
  return color * Texel(tex, uv) * mask;
}