#define ITERS 12
const float scale = 2.;
const float scale1 = 1.38;

void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    fragColor = vec4(0.0);
    vec3 col=vec3(0.0),col_prev=vec3(0.0);
    vec2 uv = (fragCoord*10.0-iResolution.xy)/iResolution.y/15.0;
    float s1 = (uv.y+iTime/4.)/4.0;
    uv.y -= s1;
    for(int c=0;c<ITERS;c++){
        col_prev = col;
        for(int i=0;i<ITERS;i++)
        {
            uv= (uv.yx+vec2(uv.x/scale+uv.y/scale1,-uv.y/scale+uv.x/scale1)/scale)/scale1;
            uv *= -scale1;
            uv = fract((uv.yx+s1)/scale1);
            //uv.y /= -scale1;
        }
        col[2] = (uv.y-uv.x);
        col = (abs(col-col_prev.yzx))/1.125;
	}
    fragColor = vec4(vec3(col),1.0);
    
}
