precision highp float;
#define iChannel0 inputImageTexture
#define texture(a,b) texture2D(a,fract(b))
#define fragColor gl_FragColor
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
uniform highp float iTime;
uniform highp vec2 iResolution;

uniform float amount;
uniform float position;
float x[9];
void main()
{
    // Normalized pixel coordinates (from 0 to 1)
    highp vec2 uv = textureCoordinate;

    //float amount = iMouse.x / iResolution.x * 0.02;
    //float position = iMouse.y / iResolution.y;

    x[0] = 0.051;
    x[1] = 0.0918;
    x[2] = 0.12245;
    x[3] = 0.1531;
    x[4] = 0.1633;
    x[5] = 0.1531;
    x[6] = 0.12245;
    x[7] = 0.0918;
    x[8] = 0.051;

    highp vec4 color = vec4(0.0);
    for (int i = 0; i < 9; i++) {
        color += texture(iChannel0,  vec2(uv.x, uv.y - abs(uv.y - position) * amount * float(i - 4))) * x[i];
    }

    fragColor = color;
}