Newer
Older
pixi.js / src / filters / shockwave / shockwave.frag
@Chad Engler Chad Engler on 25 Jan 2015 606 bytes add shockwave filter
precision lowp float;

varying vec2 vTextureCoord;

uniform sampler2D uSampler;

uniform vec2 center;
uniform vec3 params; // 10.0, 0.8, 0.1
uniform float time;

void main()
{
  vec2 uv = vTextureCoord;
  vec2 texCoord = uv;

  float dist = distance(uv, center);

  if ( (dist <= (time + params.z)) && (dist >= (time - params.z)) )
  {
    float diff = (dist - time);
    float powDiff = 1.0 - pow(abs(diff*params.x), params.y);

    float diffTime = diff  * powDiff;
    vec2 diffUV = normalize(uv - center);
    texCoord = uv + (diffUV * diffTime);
  }

  gl_FragColor = texture2D(uSampler, texCoord);
}