     }
 
     // randomize the lookup values to hide the fixed number of samples
-    float offset = random(vec3(12.9898, 78.233, 151.7182), 0.0);
+    float offset = rand(vTextureCoord, 0.0);
 
     float total = 0.0;
     vec4 color = vec4(0.0);


    color /= total;
    // switch back from pre-multiplied alpha
    color.rgb /= color.a + 0.00001;

    gl_FragColor = color;
}


const float MAX_KERNEL_SIZE = 32.0;

// author: http://byteblacksmith.com/improvements-to-the-canonical-one-liner-glsl-rand-for-opengl-es-2-0/
highp float rand(vec2 co, float seed) {
    const highp float a = 12.9898, b = 78.233, c = 43758.5453;
    highp float dt = dot(co + seed, vec2(a, b)), sn = mod(dt, 3.14159);
    return fract(sin(sn) * c + seed);
}

void main() {
