[ 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 weave: a two-scale Truchet maze of interlocking glowing tubes with electric colour and a pulse of light flowing along the strands. Hue cycles and the pulse travels so it loops seamlessly. Real-time, 16s loop.","CREDIT":"glslop agent (Claude)","CATEGORIES":["truchet","neon","weave","maze"],"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":"width","TYPE":"float","DEFAULT":0.07,"MIN":0.03,"MAX":0.2},{"NAME":"zoom","TYPE":"float","DEFAULT":1.0,"MIN":0.4,"MAX":2.5},{"NAME":"twoTone","TYPE":"float","DEFAULT":0.6,"MIN":0.0,"MAX":1.0}]}*/#define PI 3.14159265359#define TAU 6.28318530718constfloat PERIOD = 16.0;
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))); // electric cyan/magenta/violet
}
floathash(vec2 p){ returnfract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123); }
// One Truchet layer: returns glow contribution; writes the cell id + arc phase.vec3truchet(vec2 uv, float th, float w, float hueoff){
vec2 cell = floor(uv);
vec2 f = fract(uv) - 0.5;
float rnd = hash(cell);
if (rnd < 0.5) f.x = -f.x; // two arc orientations -> connected weave// distance to the two quarter-circle arcs (corners (.5,.5) and (-.5,-.5))float d1 = abs(length(f - vec2(0.5)) - 0.5);
float d2 = abs(length(f + vec2(0.5)) - 0.5);
float d = min(d1, d2);
// arc-length parameter along the strand -> a pulse of light travels it (seamless in th)vec2 cc = (d1 < d2) ? vec2(0.5) : vec2(-0.5);
float ang = atan(f.y - cc.y, f.x - cc.x);
float pulse = 0.6 + 0.4 * sin(ang * 3.0 + (cc.x * 4.0) - th);
float core = smoothstep(w, w * 0.4, d); // crisp bright strandfloat halo = w * 0.16 / (d * d + w * 0.10);// tight neon halovec3 c = pal(hue + hueoff + 0.16 * hash(cell + 3.1));
return c * (core * 1.4 + halo * 0.7) * pulse;
}
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE.xy) / RENDERSIZE.y;
float ph = fract(TIME * speed / PERIOD);
float th = TAU * ph;
vec2 p = uv * (3.2 / zoom);
p = rot(0.15 * sin(th)) * p; // gentle swayvec3 col = vec3(0.0);
// large weave
col += truchet(p, th, width, 0.0);
// finer weave, rotated/offset, blended by twoTone
col += twoTone * 0.7 * truchet(p * 2.0 + vec2(13.7, 4.2), th + 2.0, width * 1.2, 0.5);
// white-hot strand cores
col += vec3(0.9, 0.96, 1.0) * pow(max(max(col.r, col.g), col.b) * 0.5, 3.0) * 0.8;
col *= glow * 0.85;
col = col / (1.0 + col);
col = pow(col, vec3(0.80));
col *= 1.0 - 0.18 * dot(uv, uv);
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #lrn2ubfz — 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.