[ 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":"Digital rain: columns of procedurally-generated dot-matrix glyphs cascade down a black screen, each stream led by a bright white character with a long trail fading from phosphor green to black. The glyphs flicker and mutate as they fall. Every column falls an integer number of screen-heights per cycle so the downpour loops seamlessly.","CREDIT":"glslop agent (Claude)","CATEGORIES":["matrix","digital-rain","text","glyphs","retro"],"INPUTS":[{"NAME":"speed","TYPE":"float","DEFAULT":1.0,"MIN":0.0,"MAX":3.0},{"NAME":"cols","TYPE":"float","DEFAULT":26.0,"MIN":12.0,"MAX":48.0},{"NAME":"trail","TYPE":"float","DEFAULT":0.55,"MIN":0.2,"MAX":0.9},{"NAME":"hue","TYPE":"float","DEFAULT":0.34,"MIN":0.0,"MAX":1.0}]}*/#define PI 3.14159265359#define TAU 6.28318530718constfloat PERIOD = 16.0;
floath11(float x){ returnfract(sin(x*127.1) * 43758.5453); }
floath21(vec2 p){ returnfract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453); }
floath31(vec3 p){ returnfract(sin(dot(p, vec3(127.1, 311.7, 74.7))) * 43758.5453); }
voidmain(){
vec2 res = RENDERSIZE.xy;
float cw = res.x / cols;
vec2 cpx = vec2(cw, cw*1.5);
vec2 cell = floor(gl_FragCoord.xy / cpx);
vec2 sub = fract(gl_FragCoord.xy / cpx);
float ph = fract(TIME * speed / PERIOD);
float c = cell.x;
// falling stream for this columnfloat spd = 1.0 + floor(h11(c) * 3.0); // integer screen-heights / loopfloat phase = h11(c + 9.3);
float rp = fract(ph*spd + phase);
float yN = gl_FragCoord.y / res.y;
float yHead = 1.0 - rp; // head falls top -> bottomfloat dAbove = fract(yN - yHead); // 0 at head, grows up the trailfloat trailLen = trail * (0.7 + 0.5*h11(c + 4.0));
float bright = pow(smoothstep(trailLen, 0.0, dAbove), 1.3) * (0.7 + 0.6*h11(c+2.1));
float headness = smoothstep(0.07, 0.0, dAbove);
// flickering dot-matrix glyph (5x7)float gRate = floor(3.0 + h11(c + 1.7) * 7.0); // integer mutations / loopfloat gPhase = floor(ph*gRate + h21(cell)*3.0);
vec2 gi = floor(sub * vec2(5.0, 7.0));
vec2 gf = fract(sub * vec2(5.0, 7.0));
float dotmask = step(0.15, gf.x)*step(gf.x, 0.85)*step(0.10, gf.y)*step(gf.y, 0.90);
float onbit = step(0.5, h31(vec3(cell, dot(gi, vec2(1.0, 5.0)) + gPhase*31.0)));
float margin = step(0.05, sub.x)*step(sub.x, 0.95)*step(0.03, sub.y)*step(sub.y, 0.97);
float glyph = dotmask * onbit * margin;
vec3 green = 0.5 + 0.5*cos(TAU*(hue + vec3(0.0, 0.08, 0.02))); // phosphor green base
green = vec3(0.16, 1.0, 0.42) * (0.5 + green); // bias toward greenvec3 white = vec3(0.85, 1.0, 0.92);
vec3 col = mix(green, white, headness) * bright * glyph * 1.7;
col += white * headness * bright * glyph * 1.2; // hot white head glyphs
col += green * glyph * 0.06; // faint resident glyphs
col += white * pow(headness, 1.5) * bright * 0.5; // head bloom halo
col += green * bright * 0.05; // column ambience// subtle scanlines + vignette for CRT feel
col *= 0.85 + 0.15*sin(gl_FragCoord.y * 3.14159 / 1.5);
vec2 vv = (2.0*gl_FragCoord.xy - res) / res.y;
col *= 1.0 - 0.18*dot(vv, vv);
col = col / (1.0 + col);
col = pow(col, vec3(0.85));
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #k6tmw8uz — 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.