Skip to content

BLOKS Studio Pointer Diagnostic

BLOKS Shader Bulletin Board

BLOKS Studio Pointer Diagnostic

By RJ Shelton June 18, 2026

Shader Preview Unavailable

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

Shader Code
// BLOKS Studio Pointer Diagnostic

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;

    vec2 d = uPointerDelta * vec2(uAspect, 1.0);

    float distToPointer = length(p - m);

    vec3 bg = vec3(0.015, 0.02, 0.045);
    vec3 hoverColor = vec3(0.12, 0.55, 1.0);
    vec3 downColor = vec3(1.0, 0.18, 0.08);

    vec3 pointerColor = mix(hoverColor, downColor, uPointerDown);

    float glow = smoothstep(0.34, 0.0, distToPointer);
    float core = smoothstep(0.035, 0.0, distToPointer);

    float rings = sin(distToPointer * 55.0 - iTime * 7.0);
    rings = smoothstep(0.55, 1.0, rings * 0.5 + 0.5);
    rings *= smoothstep(0.34, 0.0, distToPointer);

    vec2 flow = p - d * 18.0 * exp(-distToPointer * 4.0);

    float gridX = sin((flow.x + iTime * 0.08) * 16.0);
    float gridY = sin((flow.y - iTime * 0.06) * 16.0);
    float grid = smoothstep(0.9, 1.0, abs(gridX * gridY));

    float clickBurst = uPointerDown * exp(-distToPointer * 8.0);

    vec3 col = bg;
    col += grid * vec3(0.08, 0.22, 0.8) * 0.25;
    col += glow * pointerColor * 0.65;
    col += rings * pointerColor * 0.4;
    col += core * vec3(1.0);
    col += clickBurst * vec3(0.5, 0.85, 1.0);

    fragColor = vec4(pow(col, vec3(0.9)), 1.0);
}

← Back to Shader Bulletin Board