#ifdef GL_ES
precision mediump float;
#endif

uniform float u_time;
uniform vec2 u_resolution;
uniform vec2 u_mouse;

void main()
{
	vec2 uv = (gl_FragCoord.xy * 2.0 - u_resolution) / min(u_resolution.x+u_mouse.x, u_resolution.y+u_mouse.y);
	vec2 f = vec2(0.0);
	vec3 c = vec3(0.5);
	float light = 0.0;
	
	for (float x = 0.1; x < 6.0; x += 1.0)
	{
		f = vec2(sin(sin(u_time + uv.x * x) - uv.y * dot(vec2(x + uv.y), vec2(sin(x), cos(x)))));
		light += (0.04 / distance(uv, f)) - (0.01 * distance(vec2((sin(u_time + uv.y+u_mouse.x))), vec2(uv)));
		c.y = sin(u_time + x) * 0.2 + 0.6;
	}
	
	c *= light;
	
	gl_FragColor = vec4(c, 0.6);
}