// Author @patriciogv - 2015
// http://patriciogonzalezvivo.com

#ifdef GL_ES
precision mediump float;
#endif

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

float plot (float y, float pct){
  return  smoothstep( pct-0.01, pct, y) - 
          smoothstep( pct, pct+0.01, y);
}

void main(){
    vec2 st = gl_FragCoord.xy/u_resolution;
    st.y *= u_resolution.y/u_resolution.x;
    vec3 color = vec3(.0);
    float pct = .0;

    float shape = 1.0-distance(st*vec2(1.,2.)-vec2(0.,.5),vec2(.5));

    pct = shape;
    pct = min(pct, distance(st,vec2(0.5,0.76))*10.);
    pct = min(pct, distance(st,vec2(0.36,0.71))*5.);
    pct = min(pct, distance(st,vec2(0.64,0.71))*5.);
    pct = min(pct, distance(st,vec2(0.36,0.20))*4.*pow(1.-st.y,shape*1.1));
    pct = min(pct, distance(st,vec2(0.64,0.20))*4.*pow(1.-st.y,shape*1.1));

    color = vec3(pct);

    color += vec3(1.,1.,.0)*plot(pct,0.5+smoothstep(-1.,2.,sin(u_time))*.1);


    gl_FragColor = vec4( color, 1.0 );
}