void mainImage( out vec4 fragColor, in vec2 fragCoord )
{
    // Normalized pixel coordinates (from 0 to 1)
    vec2 uv  = ( fragCoord -.5* iResolution.xy ) / iResolution.y;
    float z =0.2;


    if(sqrt(uv.x*uv.x +uv.y*uv.y) > 0.1){
    uv.y += sign(sin(uv.x*100.))/30.* sin(uv.x*uv.x +uv.y*uv.y) ;//*sin(iTime*2.);
    uv.x += sign(cos(uv.y*100.))/30. * sin(uv.x*uv.x +uv.y*uv.y);//*cos(iTime*2.);
    /* Some Nice Effect */
    }
    // uv.y += sign(sin(uv.x*20.))/200.*clamp(sin(iTime*2.+3.),0.,1.);
    //uv.x += sign(sin(uv.y*20.))/200.*clamp(-sin(iTime*2.),-1.,0.);
    //uv.x += sign(sin(uv.x*20.))/200.*clamp(-cos(iTime*2.),-1.,0.);
     //uv.y += sign(sin(uv.y*20.))/200.*clamp(sin(iTime*2.+3.),0.,1.);

    //uv.x = log(uv.x)*z ;

   // uv.y = log(uv.y)*z ;



    float p= 0.2  ;
    float q= 0.229 - (1.+cos(iTime*2. - exp(length(uv)*2.) ))/45.;
    float k= 6.;

    float colc = mod(length(uv )  -  iTime/k ,p) ;

	float col1 = mod(length(uv + vec2(0.1,0.))  -  iTime/k ,p) ;
    float col2 = mod(length(uv + vec2(-0.1,0.)) -  iTime/k ,p);

    float col3 = mod(length(uv + vec2(0,-0.1))  -  iTime/k ,p);
    float col4 = mod(length(uv + vec2(0,0.1))   -  iTime/k ,p);



    float colo = mix(col1,col2,0.5);
    float coli = mix(col3,col4,0.5);
    float col  = mix(colo,coli,0.5);

    float aa = (colo + coli) /2.;


    col = clamp(.8,.9, smoothstep(q,q-0.15,col));

    float b  =  1.-col;

    float ring =  smoothstep(1.,0.8,log( (q*10.59) ))+q;

    ring = smoothstep(0.2,0.1,1.-ring);

    fragColor = 1.5*vec4( vec3(0.9,0.2,0.6) * vec3( b+aa ,0.1,aa+col*b*ring )   ,1.0);
    //fragColor  = vec4(col1);
}
