BLOKS Shader Bulletin Board
BLOKS Studio Pointer Diagnostic
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);
}
