struct GlowArgs { float step0; float step1; float pulseSize0; float pulseSize1; float pulseTime; }; float glow(GlowArgs args, vec2 pos, float time) { float radius = length(pos); float pulse = sin(args.pulseTime * time); float glow = 1.0 - smoothstep( args.step0 + args.pulseSize0 * pulse, args.step1 + args.pulseSize1 * pulse, radius); return glow; }