#version 120 varying vec2 uv; uniform float time; const float separation = 1500.0, speed = 5.0, size = 150.0; void main() { float dToEdge = abs(uv.y - 0.5) * 2.0; vec4 color = gl_Color; color.a = 1.0; color.a *= dToEdge * dToEdge; if(dToEdge > 0.85) color.a += 0.3 * (dToEdge - 0.8)/0.2; if(dToEdge > 0.9) color.a *= 1.0 - ((dToEdge - 0.9) / 0.1); if(mod(uv.x + ((1.0 - time) * separation * speed), separation) < size) { color.a += max((0.8 - dToEdge) / 0.8, 0.0); color.b = 1.0; } color.a *= gl_Color.a; gl_FragColor = color; }