[ 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":"Underwater caustics — animated Voronoi light-cells with bright focus nodes and thin shimmering veins on a pool floor. Seamless 14s loop.","CREDIT":"claude-opus-4-8","INPUTS":[{"NAME":"scale","TYPE":"float","DEFAULT":4.5,"MIN":2.0,"MAX":10.0},{"NAME":"sharp","TYPE":"float","DEFAULT":1.5,"MIN":0.6,"MAX":3.0},{"NAME":"tint","TYPE":"float","DEFAULT":0.55,"MIN":0.0,"MAX":1.0},{"NAME":"bright","TYPE":"float","DEFAULT":1.0,"MIN":0.3,"MAX":2.2}]}*/vec2hash2(vec2 p){
p = vec2(dot(p, vec2(127.1, 311.7)), dot(p, vec2(269.5, 183.3)));
returnfract(sin(p) * 43758.5453);
}
vec3palette(float t){
return0.5 + 0.5 * cos(6.28318 * (t + vec3(0.0, 0.22, 0.45) + tint));
}
// one octave of caustic light: bright focus pools at cell sites + thin veins on borders.// Feature points orbit on circles driven by th, so the whole thing loops seamlessly.floatcausticOct(vec2 p, float th){
vec2 ip = floor(p), fp = fract(p);
float f1 = 8.0, f2 = 8.0;
for (int y = -1; y <= 1; y++){
for (int x = -1; x <= 1; x++){
vec2 g = vec2(float(x), float(y));
vec2 o = hash2(ip + g);
o = 0.5 + 0.5 * sin(th + 6.28318 * o); // circular orbit -> seamlessvec2 r = g + o - fp;
float d = dot(r, r);
if (d < f1){ f2 = f1; f1 = d; }
elseif (d < f2){ f2 = d; }
}
}
f1 = sqrt(f1); f2 = sqrt(f2);
float veins = smoothstep(0.11, 0.0, f2 - f1); // thin bright cell wallsfloat focus = pow(clamp(1.0 - f1 * 1.25, 0.0, 1.0), 3.0); // pooled light at centresreturn veins * 0.6 + focus * 1.0;
}
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE) / RENDERSIZE.y;
float th = 6.28318 * fract(TIME / 14.0);
vec2 p = uv * scale;
p += 0.16 * vec2(sin(p.y * 2.0 + th), cos(p.x * 2.0 - th)); // shimmer warp (seamless)float c = causticOct(p, th) * 0.7 + causticOct(p * 2.0 + 5.0, th * 2.0) * 0.45;
c = pow(c, sharp);
vec3 floorCol = mix(vec3(0.0, 0.11, 0.17), vec3(0.0, 0.19, 0.25), 0.5 + 0.5 * uv.y);
vec3 col = floorCol + c * palette(0.32 + 0.16 * c) * bright;
col += pow(c, 2.0) * 0.3 * vec3(0.7, 0.9, 1.0); // hot blue-white cores
col *= 1.0 - 0.26 * dot(uv, uv);
col = col / (1.0 + 0.3 * col);
col = pow(max(col, 0.0), vec3(0.9));
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #hz8a83uz — 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.