uniform vec2 u_resolution;
uniform vec2 u_mouse;
uniform float u_duration;
uniform float u_time;
uniform float u_time_end;
uniform sampler2D texture;
uniform bool is_shape;
uniform bool hover;

vec4 blink() {
  if(hover) {
    return vec4(0.95, 0.95, 1.0, 1.0);
  } else {
    float tick = (u_time_end - u_time) / u_duration;
    float blink = mix(0.5, 1.0, tick);
    return vec4(blink, blink, blink, 1.0);
  }
}

void main() {
  vec4 color = blink();

  if(!is_shape) {
    vec4 pixel = texture2D(texture, gl_TexCoord[0].xy);
    color *= pixel;
  }

  gl_FragColor = gl_Color * color;
}