
#define UI0 1597334673U
#define UI1 3812015801U
#define UI2 uvec2(UI0, UI1)
#define UI3 uvec3(UI0, UI1, 2798796415U)
#define UIF (1. / float(0xffffffffU))
float hash11(uint q)
{
	uvec2 n = q * UI2;
	q = (n.x ^ n.y) * UI0;
	return float(q) * UIF;
}


void mainImage( out vec4 frag_color, vec2 frag_coord )
{


    frag_coord -= iResolution.xy/200.;
    //frag_color -= frag_color;
	frag_color = vec4(0,0,0,1.0); // keeps alpha

    for (float i=2.; i<40.; i+=2.) {
        uvec2 p = uvec2( frag_coord * (i*.04+.96)+iTime*100. + 10000.);
        uint temp = ( p.x + uint(100000.*i) )
        	          ^  // try ^ & |
        	          p.y;

        frag_color += step(.98, hash11(temp)) * vec4(2.23/3.,1.16/3.,0.12/3.,1.) / i;
    }


}
