FreeVJ / Loop library / Field
Liquid Blobs
Metaballs that merge and split, swelling with the bass.
GLSL source
// Liquid metaball blobs. Lissajous orbits close in whole turns over 16 beats — seamless. Lows inflate the blobs.
vec2 prim(vec2 uv) {
vec2 p = asp(uv);
float field = 0.0;
float rad = (0.09 + uBass * 0.07) * uParams.y;
for (int i = 0; i < 8; i++) {
if (float(i) >= uParams.x) break;
float fi = float(i);
float t = uBeat * TAU / 16.0;
vec2 c = vec2(sin(t * (1.0 + mod(fi, 2.0)) + fi * 2.1), cos(t * (1.0 + mod(fi, 3.0)) + fi * 1.3)) * vec2(0.55, 0.32);
field += rad * rad / max(dot(p - c, p - c), 1e-4);
}
float l = smoothstep(0.8, 1.25, field) * 0.75 + clamp(field * 0.15, 0.0, 0.25);
return vec2(l, smoothstep(0.3, 1.0, field));
}
One vec2 prim(vec2 uv) function using the shared uniform contract (uBeat · uBass · uKick …). It outputs luma and alpha only.
Similar loops
Rising Embers
Particle · Embers floating upward, brighter as the energy rises.
Ambientcg Tiles 074
Texture · Tiles 074
Noise Flow
Field · Slow smoke and nebula flow that gains contrast with the energy.
Ambientcg Paving Stones 102
Texture · Paving Stones 102
Polyhaven Wood Inlaid Concrete Wall
Texture · Wood Inlaid Concrete Wall
Polyhaven Gingham Check
Texture · Gingham Check