float shape(vec2 fragmentPosition,float radius,vec2 realPosition){
    
    return step(radius/fragmentPosition.x/fragmentPosition.y,length(fragmentPosition-realPosition));
    
}


void mainImage( out vec4 fragColor, in vec2 fragCoord )
{

    vec2 fragmentPosition=fragCoord/min(iResolution.y,iResolution.x);
    
    float circleRadius=.04;
    
    float frequency=1.;
    float range=sin(iTime)*4.+6.;
    vec2 center=vec2(.7,.5);
    
    //vec2 circlePosition=iMouse.xy/min(iResolution.y,iResolution.x);
    vec2 circlePosition=vec2((sin(iTime*frequency)/range)+center.x,(cos(iTime*frequency)/range)+center.y);
    
    vec3 color=vec3(shape(fragmentPosition,circleRadius,circlePosition));
    
    if(length(color)==0.){
        color=vec3(vec2(fragCoord/iResolution.xy),sin(iTime)*.3+.7);
        
    }
    else{
        color=vec3(sin(iTime)*.3+.7,vec2(fragCoord/iResolution.xy));
    }
    
    fragColor = vec4(color,1.0);
}
