[ 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":"Signal Lost: a corrupted-video transmission. A neon broadcast test-pattern is torn apart by datamosh block-displacement, RGB channel shear, scanlines, dropout bands and posterized colour. The corruption stutters and rolls on integer cycles for a seamless 16s loop.","CREDIT":"glslop agent (Claude)","CATEGORIES":["glitch","datamosh","vhs","corruption","neon"],"INPUTS":[{"NAME":"speed","TYPE":"float","DEFAULT":1.0,"MIN":0.0,"MAX":3.0},{"NAME":"amount","TYPE":"float","DEFAULT":1.0,"MIN":0.0,"MAX":2.0},{"NAME":"hue","TYPE":"float","DEFAULT":0.0,"MIN":0.0,"MAX":1.0},{"NAME":"shear","TYPE":"float","DEFAULT":1.0,"MIN":0.0,"MAX":2.0},{"NAME":"zoom","TYPE":"float","DEFAULT":1.0,"MIN":0.6,"MAX":1.8}]}*/#define PI 3.14159265359#define TAU 6.28318530718constfloat PERIOD = 16.0;
vec3pal(float t){ return0.5 + 0.5 * cos(TAU * (t + vec3(0.0, 0.33, 0.66))); }
floathash(float x){ returnfract(sin(x * 127.13) * 43758.5453); }
floathash2(vec2 p){ returnfract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453); }
// the clean source image: a neon broadcast test patternvec3source(vec2 uv){
vec2 p = uv;
vec3 c = pal(hue + floor((p.x * 0.5 + 0.5) * 8.0) / 8.0); // vertical colour barsfloat r = length(p);
c = mix(c, vec3(1.0, 0.95, 0.2), smoothstep(0.012, 0.0, abs(r - 0.45))); // ring
c = mix(c, vec3(0.05), smoothstep(0.012, 0.0, abs(r - 0.22))); // inner ring
c = mix(c, vec3(1.0), smoothstep(0.02, 0.0, min(abs(p.x), abs(p.y)) - 0.0) * step(r, 0.5)); // crosshairfloat grid = step(0.92, max(sin(p.x * 40.0), sin(p.y * 40.0)));
c = mix(c, c * 1.6, grid * 0.3);
return c;
}
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE.xy) / RENDERSIZE.y;
uv /= zoom;
float ph = fract(TIME * speed / PERIOD);
float th = TAU * ph;
// discrete "frame" of the corruption (stutters; rolls back at the seam)float frame = floor(ph * 12.0);
float roll = ph; // vertical rollvec2 guv = uv;
guv.y = fract(guv.y * 0.5 + 0.5 + roll) * 2.0 - 1.0; // rolling sync// block-displacement tears: some horizontal bands jump sidewaysfloat band = floor(guv.y * 22.0);
float bseed = hash(band + frame * 31.0);
float tear = step(0.72, bseed) * (hash(band * 2.3 + frame) - 0.5) * 0.7 * amount;
guv.x += tear;
// occasional full dropout band -> noise staticfloat drop = step(0.93, hash(band * 1.7 + frame * 5.0));
// RGB channel shear (chromatic break-up), worse in torn bandsfloat ca = (0.006 + 0.05 * step(0.72, bseed)) * shear;
vec3 col;
col.r = source(guv + vec2(ca, 0.0)).r;
col.g = source(guv).g;
col.b = source(guv - vec2(ca, 0.0)).b;
// posterize colour (quantization artefact)
col = floor(col * 6.0) / 6.0;
// dropout staticfloat st = hash2(floor(guv * vec2(80.0, 50.0)) + frame);
col = mix(col, vec3(st), drop * amount);
// scanlines + bright sync line
col *= 0.75 + 0.25 * sin(gl_FragCoord.y * 2.2);
float sync = smoothstep(0.02, 0.0, abs(fract(guv.y * 0.5 + 0.5 + roll * 3.0) - 0.5));
col += sync * 0.25;
// value crush + slight bloom on hot colours
col = clamp(col, 0.0, 1.0);
col += pow(max(col - 0.6, 0.0), vec3(1.5)) * 0.6;
col *= 1.0 - 0.18 * dot(uv * zoom, uv * zoom);
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #nz07kra2 — 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.