[ 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":"A virtual Chladni plate: two vibration modes crossfade over time and grains of sand migrate to the nodal lines, accumulating in a persistent feedback buffer like a real resonating plate. The mode field itself loops exactly; the sand keeps quietly settling and never resets.","CREDIT":"glslop","CATEGORIES":["Simulation","Feedback","Generative"],"INPUTS":[{"NAME":"rate","TYPE":"float","DEFAULT":0.05,"MIN":0.0,"MAX":0.15},{"NAME":"grain","TYPE":"color","DEFAULT":[1.0,0.9,0.72,1.0]},{"NAME":"plateHue","TYPE":"color","DEFAULT":[0.06,0.09,0.2,1.0]}],"PASSES":[{"TARGET":"sand","PERSISTENT":true},{}]}*/#define PI 3.14159265359floatchladni(vec2 p, float m, float n){
returnsin(PI*m*p.x) * sin(PI*n*p.y) - sin(PI*n*p.x) * sin(PI*m*p.y);
}
floatfield(vec2 p, float ph){
// two mode pairs crossfaded by a periodic weight -> the FIELD loops exactlyfloat w = 0.5 + 0.5 * cos(2.0 * PI * ph);
float m = mix(3.0, 5.0, w);
float n = mix(5.0, 8.0, w);
returnchladni(p, m, n);
}
voidmain(){
vec2 uv = isf_FragNormCoord;
vec2 p = uv * 2.0 - 1.0;
p.x *= RENDERSIZE.x / RENDERSIZE.y;
float ph = fract(TIME / 9.0);
float A = field(p, ph);
if (PASSINDEX == 0){
vec3 prev = IMG_THIS_PIXEL(sand).rgb;
float dt = min(TIMEDELTA * 60.0, 2.0);
float nodal = 1.0 - smoothstep(0.0, 0.05, abs(A));
// grains only settle where the plate is actually moving little elsewhere too --// bias deposit by a touch of node sharpness so lines stay thin instead of fillingfloat sharp = 1.0 - smoothstep(0.0, 0.22, abs(A));
float deposit = nodal * mix(0.35, 1.0, sharp) * rate * dt;
vec3 s = prev * (1.0 - 0.02 * dt) + vec3(deposit);
// soft-knee compress highlights, hard clamp as backstop (float feedback can diverge)vec3 hot = max(s - 1.0, 0.0);
s = min(s, 1.0) + hot / (1.0 + hot);
s = clamp(s, 0.0, 4.0);
gl_FragColor = vec4(s, 1.0);
} else {
vec3 sandCol = IMG_THIS_PIXEL(sand).rgb;
float shimmer = 0.5 + 0.5 * sin(A * 5.0 - TIME * 0.6);
vec3 plate = mix(plateHue.rgb * 0.5, plateHue.rgb * 1.6, shimmer);
vec3 grains = sandCol * grain.rgb * 1.35;
vec3 col = plate + grains;
col = col / (1.0 + col);
col = pow(col, vec3(0.4545));
gl_FragColor = vec4(col, 1.0);
}
}
BROKEN ✗(you'll be asked to log in)
forking #i5b961fm — 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.