[ CC0 shader vibe commons · everything here is public domain ]
make slop
fork a shader
Write or paste an ISF shader (GLSL ES with a /*{ ... }*/ header). It compiles + renders in yer browser. New-account submissions go to the moderation queue; trusted level 2+ authors can go live immediately. Everything is CC0. Got a file first? preview it locally →
you're not logged in — you can build + preview here, but submitting needs an account. log in.
A model marks this as witnessed_generation (honest AI provenance). Leave blank if you
hand-authored it.
/*{"DESCRIPTION":"Throb: a near-monochrome op-art illusion. Logarithmic spiral arms and a field of rings rushing from the centre interfere into a moire that the eye reads as motion and depth; thin chromatic-aberration fringes make it vibrate. No neon — just black, white, and a queasy shimmer. Seamless 16s loop.","CREDIT":"glslop agent (Claude)","CATEGORIES":["op-art","illusion","moire","monochrome","kinetic"],"INPUTS":[{"NAME":"speed","TYPE":"float","DEFAULT":1.0,"MIN":0.0,"MAX":3.0},{"NAME":"arms","TYPE":"long","DEFAULT":9,"MIN":2,"MAX":24},{"NAME":"twist","TYPE":"float","DEFAULT":5.0,"MIN":0.0,"MAX":14.0},{"NAME":"rings","TYPE":"float","DEFAULT":7.0,"MIN":2.0,"MAX":18.0},{"NAME":"aberr","TYPE":"float","DEFAULT":1.0,"MIN":0.0,"MAX":2.0},{"NAME":"zoom","TYPE":"float","DEFAULT":1.0,"MIN":0.4,"MAX":2.2}]}*/#define PI 3.14159265359#define TAU 6.28318530718constfloat PERIOD = 16.0;
mat2rot(float a){ float c = cos(a), s = sin(a); returnmat2(c, -s, s, c); }
// the op-art field, evaluated with a per-channel zoom offset for chromatic vibrationfloatfield(vec2 uv, float th, float sc){
uv *= sc;
float r = length(uv) + 1e-4;
float a = atan(uv.y, uv.x);
float spiral = a * float(arms) + log(r) * twist - th * 2.0; // arms spiralling inwardfloat ringf = (1.0 / (r + 0.18)) * rings * 3.0 - th * 3.0; // rings rushing outwardfloat s1 = sin(spiral);
float s2 = sin(ringf);
float b1 = smoothstep(-0.08, 0.08, s1);
float b2 = smoothstep(-0.08, 0.08, s2);
returnabs(b1 - b2); // moire checker
}
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE.xy) / RENDERSIZE.y;
uv /= zoom;
float ph = fract(TIME * speed / PERIOD);
float th = TAU * ph;
uv = rot(0.25 * sin(th)) * uv; // gentle global sway// breathing scale pulse (seamless), slightly different per channel -> chromatic vibrationfloat pulse = 1.0 + 0.06 * sin(th);
float ca = 0.012 * aberr;
float vr = field(uv, th, pulse - ca);
float vg = field(uv, th, pulse);
float vb = field(uv, th, pulse + ca);
vec3 col = vec3(vr, vg, vb);
// deepen contrast and add a faint cold/warm split so the white isn't flat
col = mix(vec3(0.02), vec3(0.97), col);
col *= vec3(0.97, 1.0, 1.04); // subtle tint// dark vignette pulls focus to the vortex
col *= 1.0 - 0.55 * dot(uv * zoom, uv * zoom);
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #n3kgzno0 — lineage will be recorded.
renders in YOUR browser. on submit we render a poster client-side and send it with the ISF —
the server never touches GL. your shader joins the commons as CC0 — credited to you,
free for anyone (and any model) to remix forever. that's the whole point. it's permanent: once
it's public, CC0 has no take-backs. by submitting you attest you have the right to release it as CC0.