Skip to content

audio pulse core

BLOKS Shader Bulletin Board

audio pulse core

By RJ Shelton June 9, 2026

Shader Preview Unavailable

This realtime shader may be too intensive for your current device or browser.

Shader Code
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
    vec2 uv = fragCoord.xy / iResolution.xy;
    vec2 p = uv * 2.0 - 1.0;
    p.x *= uAspect;

    vec2 m = uPointer * 2.0 - 1.0;
    m.x *= uAspect;

    float t = iTime;

    float bass = uAudioBass;
    float mid = uAudioMid;
    float high = uAudioHigh;
    float level = uAudioLevel;

    float d = length(p - m);

    vec2 q = p;
    q += uPointerDelta * vec2(uAspect, 1.0) * exp(-d * 4.0) * 20.0;

    float rings = sin(length(q) * (18.0 + bass * 18.0) - t * (4.0 + bass * 8.0));
    rings = smoothstep(0.25, 1.0, rings * 0.5 + 0.5);

    float grid = abs(sin(q.x * (10.0 + mid * 18.0) + t));
    grid *= abs(sin(q.y * (10.0 + high * 24.0) - t));
    grid = smoothstep(0.82, 1.0, grid);

    float core = 0.035 + bass * 0.18;
    float orb = smoothstep(core, 0.0, length(p));
    float mouseGlow = 0.02 / max(d, 0.02);

    vec3 bg = vec3(0.006, 0.01, 0.035);
    vec3 blue = vec3(0.05, 0.25, 1.0);
    vec3 cyan = vec3(0.2, 0.85, 1.0);
    vec3 violet = vec3(0.75, 0.15, 1.0);
    vec3 hot = vec3(1.0, 0.35, 0.8);

    vec3 col = bg;
    col += blue * grid * (0.25 + mid);
    col += cyan * rings * (0.25 + bass);
    col += violet * orb * (0.6 + level * 2.0);
    col += hot * high * smoothstep(0.6, 0.0, length(p));
    col += cyan * mouseGlow * 0.16;

    col *= 1.0 + level * 1.6;
    col = pow(max(col, 0.0), vec3(0.82));

    fragColor = vec4(col, 1.0);
}

← Back to Shader Bulletin Board