[ 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":"Neon dot-lattice corridor: a tiled Menger tunnel flown through with wandering banking, depositing edge-hot neon dots along the invisible folds while surfaces glow with laser-line shading. Seamless 16s loop.","CREDIT":"glslop agent (Claude)","CATEGORIES":["fractal","raymarch","neon","kifs","tunnel"],"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":"sway","TYPE":"float","DEFAULT":0.6,"MIN":0.0,"MAX":1.5},{"NAME":"zoom","TYPE":"float","DEFAULT":1.0,"MIN":0.5,"MAX":2.0},{"NAME":"lens","TYPE":"float","DEFAULT":0.55,"MIN":0.3,"MAX":1.0},{"NAME":"iterCount","TYPE":"long","DEFAULT":4,"MIN":2,"MAX":8}]}*/#define PI 3.14159265359#define TAU 6.28318530718constfloat PERIOD = 16.0;
constint MAXI = 8;
constint STEPS = 140;
mat2rot(float a){ float c = cos(a), s = sin(a); returnmat2(c, -s, s, c); }
vec3pal(float t){
return0.5 + 0.5 * cos(TAU * (t + vec3(0.55, 0.40, 0.18)));
}
// Menger KIFS tiled infinitely along z (corridor axis).// d -> surface distance ; trap -> color accumulator ;// lineT2 -> squared dist to nearest fold axis (laser line) ;// edge -> peaks where the cell sits on a bar EDGE (dot lattice).floatmap(vec3 p, mat2 Rroll, outfloat trap, outfloat lineT2, outfloat edge){
vec3 z = p;
z.xy = Rroll * z.xy;
z.z = mod(z.z + 1.0, 2.0) - 1.0; // tile period 2 along the shaftfloat scale = 3.0;
trap = 1.0e9; lineT2 = 1.0e9; edge = 0.0;
for (int i = 0; i < MAXI; i++){
if (i >= iterCount) break;
z = abs(z);
if (z.x < z.y) z.xy = z.yx;
if (z.x < z.z) z.xz = z.zx;
if (z.y < z.z) z.yz = z.zy;
z = z * scale - vec3(2.0);
if (z.z < -1.0) z.z += 2.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)));
}
vec3 q = abs(z);
float c1 = max(q.x, max(q.y, q.z));
float c3 = min(q.x, min(q.y, q.z));
float mid = q.x + q.y + q.z - c1 - c3;
edge = smoothstep(0.86, 0.99, mid);
returnlength(max(q - vec3(1.0), 0.0)) * pow(scale, -float(iterCount));
}
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE.xy) / RENDERSIZE.y;
float ph = fract(TIME * speed / PERIOD);
float th = TAU * ph;
float flyZ = 2.0 * ph; // advance exactly one tile per loop -> seamlessmat2 Rroll = rot(0.35 * sway * sin(th));
// corridor camera: straight down the shaft with wandering sway (Parent 1's// shaft + Parent 2's meander).vec3 ro = vec3(0.45 * sway * sin(th) + 0.18 * sway * sin(3.0 * th),
0.30 * sway * sin(2.0 * th),
flyZ);
vec3 ta = ro + vec3(0.12 * sway * cos(th),
0.08 * sway * cos(2.0 * th),
1.0);
vec3 fwd = normalize(ta - ro);
vec3 rgt = normalize(cross(vec3(0.0, 1.0, 0.0), fwd));
vec3 upv = cross(fwd, rgt);
float roll = 0.22 * sway * sin(th);
// fisheye lens (Parent 2): ray angle grows with screen radius.float rr = length(uv);
float theta = rr * lens * PI;
vec2 dir2 = rr > 1.0e-5 ? uv / rr : vec2(0.0, 1.0);
vec3 baseRd = dir2.x * rgt + dir2.y * upv;
vec3 rd = normalize(cos(theta) * fwd + sin(theta) * (baseRd));
// barrel roll on the lateral basis
rd = normalize((baseRd.x * cos(roll) - baseRd.y * sin(roll)) * rgt +
(baseRd.x * sin(roll) + baseRd.y * cos(roll)) * upv +
cos(theta) * fwd);
// ---- fly-THROUGH with surface deposit: accumulate edge-dots AND shade the// first solid hit with laser-line lighting. Blends Parent 1 surfaces with// Parent 2 dot-lattice glow. ----float t = 0.02;
float tcap = 14.0;
float trans = 1.0;
vec3 col = vec3(0.0);
float trap, lineT2, edge;
float prevD = 1.0e9;
float 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, ed;
float d = map(p, Rroll, tr, l2, ed);
// surface hit (Parent 1)if (!hit && d < 0.0006 * t){ hit = true; trapHit = tr; lineHit2 = l2; te = t; }
// edge-dot deposit on zero-crossing of the (invisible) shell (Parent 2)if (prevD < 0.0 && d >= 0.0 && trans > 0.001){
vec3 body = pal(hue + 0.6 * sqrt(tr) + 0.10 * (t + flyZ));
float dotGlow = pow(ed, 2.0);
col += trans * body * dotGlow * glow * 1.4;
trans *= 1.0 - 0.7 * dotGlow;
}
if (!hit) t += max(d, 0.002) * 0.7; else t += 0.02;
prevD = d;
if (t > tcap) break;
}
if (hit){
vec3 p = ro + rd * te;
vec2 k = vec2(1.0, -1.0);
float e = 0.0014, tr, l2, ed;
vec3 n = normalize(
k.xyy * map(p + k.xyy * e, Rroll, tr, l2, ed) +
k.yyx * map(p + k.yyx * e, Rroll, tr, l2, ed) +
k.yxy * map(p + k.yxy * e, Rroll, tr, l2, ed) +
k.xxx * map(p + k.xxx * e, Rroll, tr, l2, ed));
vec3 body = pal(hue + 0.6 * sqrt(trapHit) + 0.10 * (te + flyZ));
vec3 lig = normalize(vec3(0.3, 0.6, 0.74));
float dif = max(dot(n, lig), 0.0);
float fres = pow(1.0 - max(dot(n, -rd), 0.0), 2.0);
float laser = 1.0 / (1.0 + 120.0 * lineHit2);
laser = pow(laser, 1.5);
vec3 laserCol = mix(vec3(0.85, 0.96, 1.0), body + 0.3, 0.4);
col += trans * (body * 0.05 + dif * body * 0.18 + fres * laserCol * glow * 0.6 + laser * laserCol * glow * 1.2);
}
col = col / (1.0 + col); // soft tonemap
col = pow(col, vec3(0.85));
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #80nq157o — 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.