[ 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 seen through rippling liquid glass: a field of thin neon ribbons refracted by a procedural wave surface, bent and smeared by the surface gradient, split into red/green/blue by chromatic dispersion, with hot caustic glints riding the wave crests. The wave field orbits a closed path so the molten distortion loops seamlessly.","CREDIT":"glslop agent (Claude)","CATEGORIES":["refraction","distortion","caustics","glass","2d"],"INPUTS":[{"NAME":"speed","TYPE":"float","DEFAULT":1.0,"MIN":0.0,"MAX":3.0},{"NAME":"refract","TYPE":"float","DEFAULT":0.045,"MIN":0.0,"MAX":0.2},{"NAME":"ripple","TYPE":"float","DEFAULT":2.2,"MIN":1.0,"MAX":6.0},{"NAME":"hue","TYPE":"float","DEFAULT":0.6,"MIN":0.0,"MAX":1.0},{"NAME":"chroma","TYPE":"float","DEFAULT":1.0,"MIN":0.0,"MAX":2.0}]}*/#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(vec2 p){ returnfract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453); }
floatvnoise(vec2 p){
vec2 i = floor(p), f = fract(p);
f = f*f*(3.0 - 2.0*f);
float a = hash(i), b = hash(i+vec2(1,0)), c = hash(i+vec2(0,1)), d = hash(i+vec2(1,1));
returnmix(mix(a,b,f.x), mix(c,d,f.x), f.y);
}
// glowing neon grid on a dark field -> refraction reads as bending linesvec3bg(vec2 p){
vec2 q = p*5.0;
float dx = abs(fract(q.x + 0.5) - 0.5);
float dy = abs(fract(q.y + 0.5) - 0.5);
float lx = 0.012 / (dx*dx + 0.012); // glowing vertical linesfloat ly = 0.012 / (dy*dy + 0.012); // glowing horizontal linesfloat node = lx * ly; // bright cell cornersfloat hs = hue + 0.05*q.x + 0.04*q.y; // hue drifts across the gridvec3 col = vec3(0.015, 0.01, 0.04); // dark base
col += pal(hs) * lx * 0.9;
col += pal(hs + 0.3) * ly * 0.9;
col += vec3(1.0, 0.95, 1.0) * pow(node, 0.7) * 0.5; // hot intersectionsreturn col;
}
// wave height field (orbiting offset -> seamless loop)floatwaveH(vec2 p, float th){
vec2 o1 = 0.35*vec2(cos(th), sin(th));
vec2 o2 = 0.30*vec2(cos(2.0*th + 1.0), sin(2.0*th + 1.0));
float h = vnoise(p*ripple + o1*ripple);
h += 0.5*vnoise(p*ripple*2.1 - o2*ripple);
h += 0.18*sin(p.x*ripple*3.3 + th*2.0) * cos(p.y*ripple*2.7 - th*2.0);
return h;
}
voidmain(){
vec2 uv = (2.0*gl_FragCoord.xy - RENDERSIZE.xy) / RENDERSIZE.y;
float ph = fract(TIME * speed / PERIOD);
float th = TAU * ph;
// gradient of the wave surface -> refraction directionvec2 e = vec2(0.005, 0.0);
float hx = waveH(uv + e.xy, th) - waveH(uv - e.xy, th);
float hy = waveH(uv + e.yx, th) - waveH(uv - e.yx, th);
vec2 grad = vec2(hx, hy) / (2.0*e.x);
vec2 disp = refract * grad;
// chromatic dispersion: sample the backdrop with per-channel offsetsfloat cd = 0.10 * chroma;
vec3 col;
col.r = bg(uv + disp*(1.0 + cd)).r;
col.g = bg(uv + disp).g;
col.b = bg(uv + disp*(1.0 - cd)).b;
// caustic glints on the wave crests (steep gradient = bright, tight + hot)float crest = length(grad);
float glint = smoothstep(2.2, 4.5, crest);
col += vec3(1.0, 0.97, 0.9) * pow(glint, 2.0) * 0.6;
// a faint glassy sheen following the surface heightfloat sheen = waveH(uv, th);
col *= 0.85 + 0.25*smoothstep(0.2, 1.6, sheen);
col *= 1.0 - 0.14*dot(uv, uv);
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 #c9gpf01e — 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.