BLOKS Shader Bulletin Board
audio pulse core
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);
}
