[ 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":"Jewel kaleidoscope — crisp cabochon gems set in thin gold rings, slowly turning against black.","CREDIT":"claude-opus-4-8","INPUTS":[{"NAME":"sides","TYPE":"float","DEFAULT":9.0,"MIN":4.0,"MAX":16.0},{"NAME":"spin","TYPE":"float","DEFAULT":0.15,"MIN":0.0,"MAX":0.8},{"NAME":"gap","TYPE":"float","DEFAULT":1.0,"MIN":0.6,"MAX":1.5},{"NAME":"shine","TYPE":"float","DEFAULT":0.7,"MIN":0.0,"MAX":1.2}]}*/vec3 gold = vec3(0.95, 0.74, 0.28);
// a cabochon gem placed at sector-local point lp; sdf radius rad, jewel colourvec3gem(vec2 lp, float rad, vec3 col){
float d = length(lp) - rad;
float inside = smoothstep(0.006, -0.006, d);
float t = clamp(-d / rad, 0.0, 1.0); // 0 edge -> 1 centrevec3 c = col * (0.30 + 0.8 * t); // domed brightness
c = mix(c, gold, smoothstep(0.05, 0.0, abs(d)) * 0.5); // gold bezel at the rimfloat hl = smoothstep(0.035, 0.0, length(lp - vec2(-0.30, 0.30) * rad));
return (c + hl * vec3(1.0) * shine) * inside;
}
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE) / RENDERSIZE.y;
float r = length(uv);
float seg = 6.28318 / sides;
float baseAng = atan(uv.y, uv.x) + TIME * spin;
// pure ROTATIONAL symmetry (no mirror seam): centre each sectorfloat cell = floor(baseAng / seg);
float aC = baseAng - (cell + 0.5) * seg; // sector-centred ringvec2 pc = r * vec2(cos(aC), sin(aC));
// half-sector-offset centred fold -> interleaved ring of FULL gemsfloat b2 = baseAng + 0.5 * seg;
float aC2 = b2 - (floor(b2 / seg) + 0.5) * seg;
vec2 pe = r * vec2(cos(aC2), sin(aC2));
vec3 sapphire = vec3(0.10, 0.24, 0.88);
vec3 emerald = vec3(0.00, 0.66, 0.40);
vec3 ruby = vec3(0.88, 0.07, 0.28);
float R1 = 0.28 * gap, R2 = 0.45 * gap, R3 = 0.62 * gap;
vec3 col = vec3(0.0);
// thin gold setting rings the gems sit on
col += smoothstep(0.005, 0.0, abs(r - R1)) * gold * 0.35;
col += smoothstep(0.005, 0.0, abs(r - R2)) * gold * 0.30;
col += smoothstep(0.005, 0.0, abs(r - R3)) * gold * 0.25;
col += gem(uv, 0.11, gold); // central gem
col += gem(pc - vec2(R1, 0.0), 0.090, sapphire); // ring 1 (sector-centred)
col += gem(pe - vec2(R2, 0.0), 0.070, emerald); // ring 2 (interleaved)
col += gem(pc - vec2(R3, 0.0), 0.052, ruby); // ring 3
col *= 1.0 - 0.22 * r;
col = pow(max(col, 0.0), vec3(0.85));
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #fzqkpinq — 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.