vec2 xyRot(float n, in vec2 xy)
	{
		return vec2(xy.x*cos(n)-xy.y*sin(n),
					xy.x*sin(n)+xy.y*cos(n));
	}

float r(vec2 xy)
	{
		vec2 tmp1 = xyRot(iTime*.02,xy);
		float tmp2 = 70.+10.*(sin(iTime*.1));
		return sqrt(pow(sin(tmp1.x*tmp2),2.) +
					pow(sin(tmp1.y*tmp2),2.));
	}

float a(float m, float n, float x, float y)
	{
		return (x+sin(iTime*m))*(y+cos(iTime*n))*sin(iTime*.1+x*y+m+n);
    }

float s(float n, float r)
	{
		return abs(1.-abs(n-r));
	}

void mainImage(out vec4 color, in vec2 coord)
{
   vec2 xy = coord.xy / iResolution.xy - vec2(0.5,0.5);
   xy.x *= iResolution.x/iResolution.y;
   float r_ = r(xy);
   color.r = s(s(a(xy.x*.2+iTime*.005,xy.y*.21,xy.x,xy.y),r_),xy.x);
   color.g = s(s(a(xy.x*.23,xy.y*.25+iTime*.005,xy.x,xy.y),r_),xy.y);
   color.b = s(s(a(xy.x*.27,xy.y*.29,xy.x,xy.y),r_),(xy.x+xy.y)*.5);
}
