[ 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":"Laser Mandelbox: a box-fold/sphere-fold KIFS field that slowly tumbles and resolves into glowing cathedral shapes, raymarched in near-black with bold hot laser lines etched along its folds. Electric neon, real-time, seamless 16s loop.","CREDIT":"glslop agent (Claude)","CATEGORIES":["fractal","raymarch","neon","mandelbox"],"INPUTS":[{"NAME":"speed","TYPE":"float","DEFAULT":1.0,"MIN":0.0,"MAX":3.0},{"NAME":"glow","TYPE":"float","DEFAULT":1.0,"MIN":0.3,"MAX":3.0},{"NAME":"hue","TYPE":"float","DEFAULT":0.0,"MIN":0.0,"MAX":1.0},{"NAME":"boxScale","TYPE":"float","DEFAULT":2.05,"MIN":-3.0,"MAX":3.0},{"NAME":"tumble","TYPE":"float","DEFAULT":0.5,"MIN":0.0,"MAX":1.5},{"NAME":"zoom","TYPE":"float","DEFAULT":1.0,"MIN":0.5,"MAX":2.0},{"NAME":"iterCount","TYPE":"long","DEFAULT":8,"MIN":4,"MAX":14}]}*/#define PI 3.14159265359#define TAU 6.28318530718constfloat PERIOD = 16.0; // seconds per seamless loopconstint MAXI = 14; // hard cap on KIFS iterations (>= iterCount MAX)constint STEPS = 100; // raymarch steps (kept low for real-time)mat2rot(float a){ float c = cos(a), s = sin(a); returnmat2(c, -s, s, c); }
// electric neon palette (cyan / magenta / violet, not a flat rainbow)vec3pal(float t){
return0.5 + 0.5 * cos(TAU * (t + vec3(0.55, 0.40, 0.18)));
}
// Mandelbox DE (Tglad box-fold + sphere-fold). Conservative -> clean march.// No sqrt in the loop (squared traps) for speed.// trap -> body color ; lineT2 -> squared dist to nearest axis (laser lines).floatmap(vec3 p, mat2 R1, mat2 R2, outfloat trap, outfloat lineT2){
float fs = 3.8; // shrink the fractal so it reads as an objectvec3 c = p * fs;
c.xz = R1 * c.xz; // rigid tumble of the whole fractal
c.xy = R2 * c.xy;
vec3 z = c;
float dr = 1.0;
trap = 1.0e9; lineT2 = 1.0e9;
for (int i = 0; i < MAXI; i++){
if (i >= iterCount) break;
z = clamp(z, -1.0, 1.0) * 2.0 - z; // box foldfloat r2 = dot(z, z); // sphere foldif (r2 < 0.25){ z *= 4.0; dr *= 4.0; } // 1/minR2, minR2 = 0.25elseif (r2 < 1.0){ float s = 1.0 / r2; z *= s; dr *= s; }
z = z * boxScale + c;
dr = dr * abs(boxScale) + 1.0;
trap = min(trap, dot(z, z));
lineT2 = min(lineT2, min(min(dot(z.xy, z.xy), dot(z.yz, z.yz)), dot(z.xz, z.xz)));
}
returnlength(z) / abs(dr) / fs; // undo the input scale
}
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE.xy) / RENDERSIZE.y;
// seamless loop: every angle is sin/cos of an integer multiple of th.// Gentle, eased motion so the fractal settles into readable shapes.float ph = fract(TIME * speed / PERIOD);
float th = TAU * ph;
mat2 R1 = rot(th); // one slow tumble / loopmat2 R2 = rot(0.4 + 0.18 * tumble * sin(th)); // gentle breathing fold// calm camera: mostly parked, slight eased driftfloat camDist = 8.0 * zoom;
float az = 0.18 * sin(th);
float el = 0.32 + 0.10 * sin(th);
vec3 ro = camDist * vec3(sin(az) * cos(el), sin(el), cos(az) * cos(el));
vec3 ta = vec3(0.0);
vec3 fwd = normalize(ta - ro);
vec3 rgt = normalize(cross(vec3(0.0, 1.0, 0.0), fwd));
vec3 upv = cross(fwd, rgt);
vec3 rd = normalize(uv.x * rgt + uv.y * upv + 1.6 * fwd);
// ---- surface raymarch ----float t = 0.05;
float tcap = camDist + 8.0;
float trap = 1.0e9, lineT2 = 1.0e9, trapHit = 1.0e9, lineHit2 = 1.0e9, te = 0.0;
bool hit = false;
for (int i = 0; i < STEPS; i++){
vec3 p = ro + rd * t;
float tr, l2;
float d = map(p, R1, R2, tr, l2);
if (d < 0.0005 * t){ hit = true; trapHit = tr; lineHit2 = l2; te = t; break; }
t += d * 0.85;
if (t > tcap) break;
}
vec3 col = vec3(0.0);
if (hit){
vec3 p = ro + rd * te;
// 4-tap tetrahedron normal (cheaper than 6-tap central difference)vec2 k = vec2(1.0, -1.0);
float e = 0.0013, tr, l2;
vec3 n = normalize(
k.xyy * map(p + k.xyy * e, R1, R2, tr, l2) +
k.yyx * map(p + k.yyx * e, R1, R2, tr, l2) +
k.yxy * map(p + k.yxy * e, R1, R2, tr, l2) +
k.xxx * map(p + k.xxx * e, R1, R2, tr, l2));
vec3 body = pal(hue + 0.55 * sqrt(trapHit) + 0.14 * te); // richer colour spreadvec3 lig = normalize(vec3(0.4, 0.8, 0.45));
float dif = max(dot(n, lig), 0.0);
float fres = pow(1.0 - max(dot(n, -rd), 0.0), 2.3);
// bold hot laser lines along the folds (lineHit2 is already squared)float laser = 1.0 / (1.0 + 110.0 * lineHit2);
laser = pow(laser, 1.6);
vec3 laserCol = mix(vec3(0.9, 0.97, 1.0), body + 0.4, 0.3);
col += body * 0.025; // near-black body
col += body * dif * 0.07; // faint shading
col += body * fres * 2.1 * glow; // rim glow -> pops the portal rings
col += laserCol * laser * 8.0 * glow; // the LASER lines dominate// depth fog -> far structure fades into black for clean 3D depth
col *= exp(-0.20 * max(te - camDist + 3.5, 0.0));
}
// tone map: hot cores blow to white, halos stay saturated
col *= 1.08;
col = col / (1.0 + col);
col = pow(col, vec3(0.76));
col *= 1.0 - 0.24 * dot(uv, uv); // vignettegl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #z1j2ng6a — 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.