#ifdef GL_ES
precision mediump float;
#endif
#define PI 3.141592653
uniform float time;
uniform vec2 mouse;
uniform vec2 resolution;

//by Olivier de Schaetzen (Citiral)
//full of aweful code but heck, it was fun!

vec3 pattern(vec2 c, vec2 p)
{
	float ang = atan(p.y-c.y,p.x-c.x);
	float d = distance(c,p);
	float rd = d;
	if (rd < 0.04) return vec3(1.,1.,1.);
	d = 0.05/(d*d) + iTime;
	
		
	if (mod(d,0.4) <= 0.2) {
		ang += PI/20.;	
	}

	if (mod(d,1.0) <= 0.5) return vec3(1.0,1.0,1.0);
	
	if (mod(d,2.0) <= 1.0) ang += iTime*0.4;
	else ang -= iTime*0.4;
	if ( mod(ang ,PI/10.) < PI/20.) return vec3(1.0,1.0,1.0);
	
	return vec3(sin(d ),cos(d),sin(d)-cos(d));
}

void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
	vec2 c = vec2(0.5,0.5); 
	vec2 p = fragCoord.xy / iResolution.xy;
	p.x *= iResolution.x/iResolution.y;
	c.x *= iResolution.x/iResolution.y;
	
	float d = distance(c,p);
	
	fragColor = vec4( pattern(c,p), 1.0 );

}
