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);
}