[ 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":"Endless flight through a gyroid lattice — shaded shell surfaces with glowing fresnel rims and floating light-orbs in the gaps.","CREDIT":"claude-opus-4-8","INPUTS":[{"NAME":"speed","TYPE":"float","DEFAULT":0.6,"MIN":0.0,"MAX":2.0},{"NAME":"density","TYPE":"float","DEFAULT":3.0,"MIN":1.5,"MAX":8.0},{"NAME":"glow","TYPE":"float","DEFAULT":0.8,"MIN":0.1,"MAX":1.6},{"NAME":"orbs","TYPE":"float","DEFAULT":0.9,"MIN":0.0,"MAX":2.0},{"NAME":"tint","TYPE":"float","DEFAULT":0.5,"MIN":0.0,"MAX":1.0}]}*/mat2rot(float a){ float c = cos(a), s = sin(a); returnmat2(c, -s, s, c); }
floatgyroid(vec3 p){ returndot(sin(p), cos(p.yzx)); }
// signed-ish field: negative inside the thin gyroid shells, positive in the gapsfloatmap(vec3 p){
returnabs(gyroid(p * density)) / density - 0.045;
}
vec3normal(vec3 p){
vec2 e = vec2(0.012, 0.0);
returnnormalize(vec3(
map(p + e.xyy) - map(p - e.xyy),
map(p + e.yxy) - map(p - e.yxy),
map(p + e.yyx) - map(p - e.yyx)));
}
vec3palette(float t){
return0.5 + 0.5 * cos(6.28318 * (t + vec3(0.0, 0.28, 0.55) + tint));
}
// glow from light-orbs parked off-axis, one per z-slab, accumulated to depth tmaxvec3orbGlow(vec3 ro, vec3 rd, float tmax){
vec3 acc = vec3(0.0);
float t = 0.2;
for (int i = 0; i < 60; i++){
if (t > tmax) break;
vec3 p = ro + rd * t;
float slab = 4.0;
float zc = floor(p.z / slab);
vec2 oc = 1.25 * vec2(sin(zc * 2.1 + 1.0), cos(zc * 1.7));
vec3 oc3 = vec3(oc, (zc + 0.5) * slab);
float od2 = dot(p - oc3, p - oc3);
acc += palette(zc * 0.2 + 0.6) * (0.06 / (0.05 + od2 * od2 * 35.0)) * exp(-t * 0.12);
t += 0.16;
}
return acc;
}
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE) / RENDERSIZE.y;
vec3 ro = vec3(0.0, 0.0, TIME * speed);
vec3 rd = normalize(vec3(uv, 1.25));
rd.xy *= rot(0.25 * sin(TIME * 0.25));
rd.xz *= rot(0.20 * cos(TIME * 0.20));
// small fixed steps to catch the first thin shell (map() isn't a true SDF)float t = 0.25, hitT = -1.0;
for (int i = 0; i < 150; i++){
if (map(ro + rd * t) < 0.0){ hitT = t; break; }
t += 0.075;
}
vec3 col;
if (hitT > 0.0){
vec3 p = ro + rd * hitT;
vec3 n = normal(p);
vec3 ld = normalize(vec3(0.5, 0.7, -0.5));
float diff = 0.35 + 0.65 * max(0.0, dot(n, ld));
float fres = pow(1.0 - abs(dot(n, rd)), 3.0);
vec3 base = palette(0.14 * p.z + 0.05 * p.y + 0.05 * TIME);
col = base * diff;
col += fres * palette(0.14 * p.z + 0.5) * 1.4 * glow; // glowing rim
col *= exp(-hitT * 0.11); // depth fade
} else {
col = vec3(0.0);
}
col += orbGlow(ro, rd, hitT > 0.0 ? hitT : 24.0) * orbs; // orbs shine through the gaps
col = col / (1.0 + col);
col = pow(max(col, 0.0), vec3(0.82));
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #ku04c853 — 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.