float rand (vec2 n) { 
	return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453);
}

vec2 rotate (vec2 v, float a) {
	float s = sin(a);
	float c = cos(a);
	mat2 m = mat2(c, -s, s, c);
	return m * v;
}

void mainImage( out vec4 fragColor, in vec2 fragCoord ) {
    vec2 coord = 6.0 * fragCoord.xy / iResolution.xy;

    for(int n = 1; n < 7; n++){
        float i = float(n);
        coord += vec2(2.0 / i * sin(i * coord.y + iTime + 0.3 * i) + 0.8, 0.4 / i * sin(coord.x + iTime + 0.3 * i) + 10.6);
    }

    vec3 color = vec3(0.5 * sin(coord.x) + 0.5, 0.5 * sin(coord.y) + 0.5, sin(coord.x + coord.y));


    fragColor = vec4(color, 1.0);
}
