[ 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":"Snowflake — a six-fold dendritic ice crystal slowly turning and glinting against the deep cold.","CREDIT":"claude-opus-4-8","INPUTS":[{"NAME":"arms","TYPE":"float","DEFAULT":6.0,"MIN":4.0,"MAX":8.0},{"NAME":"branch","TYPE":"float","DEFAULT":0.6,"MIN":0.2,"MAX":1.0},{"NAME":"spin","TYPE":"float","DEFAULT":0.08,"MIN":0.0,"MAX":0.5},{"NAME":"tint","TYPE":"float","DEFAULT":0.5,"MIN":0.0,"MAX":1.0}]}*/#define PI 3.14159265mat2rot(float a){ float c = cos(a), s = sin(a); returnmat2(c, -s, s, c); }
floathash(vec2 p){ p = fract(p * vec2(123.34, 456.21)); p += dot(p, p + 45.32); returnfract(p.x * p.y); }
floatseg(vec2 p, vec2 a, vec2 b){
vec2 pa = p - a, ba = b - a;
float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);
returnlength(pa - ba * h);
}
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE) / RENDERSIZE.y;
uv *= rot(TIME * spin);
float r = length(uv);
// fold into one 12th wedge (n-fold rotation + mirror)float a = atan(uv.y, uv.x);
float seg6 = 2.0 * PI / arms;
a = mod(a, seg6);
a = abs(a - 0.5 * seg6);
vec2 p = vec2(cos(a), sin(a)) * r; // p.x radial, p.y >= 0 perpendicularfloat armLen = 0.78 + 0.05 * sin(TIME * 0.4);
float d = seg(p, vec2(0.04, 0.0), vec2(armLen, 0.0)); // main spine// side branches (a little fern), at 60 degrees off the spine, shrinking toward the tipfloat bAng = PI / 3.0;
vec2 bdir = vec2(cos(bAng), sin(bAng));
for (int k = 1; k <= 6; k++){
float bx = 0.10 * float(k);
if (bx > armLen) break;
float bl = branch * 0.22 * (1.0 - bx / armLen);
d = min(d, seg(p, vec2(bx, 0.0), vec2(bx, 0.0) + bdir * bl));
}
// hexagonal plates along the arm (small diamonds)
d = min(d, abs(length(p - vec2(0.34, 0.0)) - 0.05) - 0.0);
d = min(d, abs(length(p - vec2(0.6, 0.0)) - 0.035));
// central hex hub
d = min(d, abs(r - 0.09) - 0.0);
float w = 0.012;
float crystal = smoothstep(w, 0.0, d);
float glow = smoothstep(w * 6.0, 0.0, d);
vec3 ice = mix(vec3(0.6, 0.85, 1.0), vec3(0.8, 0.9, 1.0), tint);
vec3 col = mix(vec3(0.01, 0.03, 0.08), vec3(0.0, 0.01, 0.03), r); // cold deep field
col += smoothstep(0.99, 1.0, hash(floor(gl_FragCoord.xy))) * 0.5; // snow dust / stars
col += ice * crystal;
col += ice * glow * 0.3;
col += vec3(1.0) * crystal * (0.4 + 0.6 * sin(TIME * 3.0 + r * 20.0)) * 0.5; // glints
col *= 1.0 - 0.2 * dot(uv, uv);
col = pow(max(col, 0.0), vec3(0.9));
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #onq87tif — 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.