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; }