[ 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 spiral cluster of blobby gem-spheres, orbited by the camera and shaded with thin-film iridescence keyed to view angle and world height rather than density -- so the hue stays vivid instead of collapsing to mud. Exact loop: one full camera turn and one full cluster spin per period.","CREDIT":"glslop","CATEGORIES":["Raymarch","3D","Generative"],"INPUTS":[{"NAME":"blend","TYPE":"float","DEFAULT":0.38,"MIN":0.15,"MAX":0.6},{"NAME":"spinTurns","TYPE":"float","DEFAULT":1.0,"MIN":0.0,"MAX":3.0},{"NAME":"camDist","TYPE":"float","DEFAULT":2.6,"MIN":1.8,"MAX":4.0}]}*/#define STEPS 90#define GEMS 7#define PI 3.14159265359#define PERIOD 8.0vec3rotY(vec3 p, float a){
float c = cos(a), s = sin(a);
returnvec3(c*p.x + s*p.z, p.y, -s*p.x + c*p.z);
}
floatsmin(float a, float b, float k){
float h = clamp(0.5 + 0.5*(b - a)/k, 0.0, 1.0);
returnmix(b, a, h) - k*h*(1.0 - h);
}
floatsdSphere(vec3 p, vec3 c, float r){
returnlength(p - c) - r;
}
floatmap(vec3 p, float spinAngle){
vec3 pr = rotY(p, -spinAngle);
float d = sdSphere(pr, vec3(0.0), 0.42);
for (int i = 0; i < GEMS; i++){
float a = (float(i) / float(GEMS)) * 2.0 * PI;
float rise = 0.28 * sin(a * 2.0);
vec3 c = vec3(cos(a) * 1.05, rise, sin(a) * 1.05);
float r = 0.3 + 0.06 * cos(a * 3.0);
d = smin(d, sdSphere(pr, c, r), blend);
}
return d;
}
vec3normalAt(vec3 p, float spinAngle){
vec2 e = vec2(0.002, 0.0);
returnnormalize(vec3(
map(p + e.xyy, spinAngle) - map(p - e.xyy, spinAngle),
map(p + e.yxy, spinAngle) - map(p - e.yxy, spinAngle),
map(p + e.yyx, spinAngle) - map(p - e.yyx, spinAngle)
));
}
vec3filmColor(float ph){
ph = fract(ph);
return0.5 + 0.5 * cos(2.0 * PI * (ph + vec3(0.0, 0.33, 0.67)));
}
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE.xy) / RENDERSIZE.y;
float ph = fract(TIME / PERIOD);
float orbitAngle = 2.0 * PI * ph;
float spinAngle = 2.0 * PI * ph * spinTurns;
vec3 ro = vec3(sin(orbitAngle) * camDist, 0.55, cos(orbitAngle) * camDist);
vec3 target = vec3(0.0);
vec3 fwd = normalize(target - ro);
vec3 right = normalize(cross(fwd, vec3(0.0, 1.0, 0.0)));
vec3 up = cross(right, fwd);
vec3 rd = normalize(fwd * 1.7 + uv.x * right + uv.y * up);
float t = 0.0;
float hit = -1.0;
for (int i = 0; i < STEPS; i++){
vec3 p = ro + rd * t;
float d = map(p, spinAngle);
if (d < 0.001){
hit = t;
break;
}
t += d;
if (t > 12.0) break;
}
vec3 col = vec3(0.015, 0.015, 0.03);
if (hit > 0.0){
vec3 p = ro + rd * hit;
vec3 n = normalAt(p, spinAngle);
float vDotN = clamp(dot(-rd, n), 0.0, 1.0);
float filmPhase = vDotN * 1.6 + p.y * 1.4 + ph;
vec3 base = filmColor(filmPhase);
vec3 lightDir = normalize(vec3(0.5, 0.8, -0.4));
float diff = clamp(dot(n, lightDir), 0.0, 1.0);
float fres = pow(1.0 - vDotN, 3.0);
vec3 shaded = base * (0.3 + 0.7 * diff) + fres * vec3(1.0);
float fog = exp(-0.12 * hit);
col = mix(col, shaded, fog);
}
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 #3a9a8i55 — 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.