uniform float tsec, phase; float cnoise(vec2 p); float fbm(vec2 p, int octaves); void main() { const vec3 color = vec3(0.2, 0.4, 1.0); float tm = tsec + phase; vec2 uv = gl_TexCoord[0].st; vec2 pt = uv * vec2(2.0) - vec2(1.0); float pulse = fbm(vec2(uv.y * 50.0 - tm * 0.5, 0.0), 2); float d_horiz = abs(pt.x); float d_vert = max(abs(pt.y), 0.0); float beam_sharpness = 80.0 * clamp(pow(uv.y, 0.5), 0.0, 1.0) * (pulse * 0.5 + 1.0); float beam_intensity = 6.0 * min(0.01 / (uv.y * uv.y) - 0.0004, 1.0); float glow_u = pow(1.0 - smoothstep(0.0, 1.0, d_horiz), beam_sharpness) * beam_intensity; float glow_v = 1.0 - smoothstep(0.98, 1.0, d_vert); float glow = glow_u * glow_v; gl_FragColor.rgb = color * glow;// + vec3(0.0, 1.0, 0.0) * step(0.99, max(abs(pt.x), abs(pt.y))); gl_FragColor.a = 1.0; } float fbm(vec2 p, int octaves) { float res = 0.0; float freq = 1.0; float scale = 1.0; for(int i=0; i