[ 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":"Chrome Dreams: blobs of liquid mercury merge and split in a dark neon studio. Pure reflection plus oil-slick thin-film iridescence — no emission, all reflected light — so the metal smears the colored studio lights across its writhing surface. Blobs orbit on integer cycles for a seamless 16s loop.","CREDIT":"glslop agent (Claude)","CATEGORIES":["metaball","chrome","reflection","iridescent","liquid"],"INPUTS":[{"NAME":"speed","TYPE":"float","DEFAULT":1.0,"MIN":0.0,"MAX":3.0},{"NAME":"irid","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":"merge","TYPE":"float","DEFAULT":0.45,"MIN":0.2,"MAX":0.9},{"NAME":"zoom","TYPE":"float","DEFAULT":1.0,"MIN":0.6,"MAX":1.8}]}*/#define PI 3.14159265359#define TAU 6.28318530718#define NB 6constfloat 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.0, 0.33, 0.66))); }
float gTh, gMerge;
floatsmin(float a, float b, float k){
float h = clamp(0.5 + 0.5 * (b - a) / k, 0.0, 1.0);
returnmix(b, a, h) - k * h * (1.0 - h);
}
floatmap(vec3 p){
float d = length(p) - 0.55; // central core blobfor (int i = 0; i < NB; i++){
float fi = float(i);
float a = gTh * (1.0 + mod(fi, 2.0)) + fi * (TAU / float(NB));
float rr = 0.72 + 0.20 * sin(gTh * 2.0 + fi);
vec3 c = rr * vec3(cos(a) * cos(0.7 * fi), sin(a), cos(a) * sin(0.7 * fi));
d = smin(d, length(p - c) - (0.30 + 0.08 * sin(gTh + fi)), gMerge);
}
return d;
}
vec3calcNormal(vec3 p){
vec2 e = vec2(1.0, -1.0) * 0.001;
returnnormalize(
e.xyy * map(p + e.xyy) + e.yyx * map(p + e.yyx)
+ e.yxy * map(p + e.yxy) + e.xxx * map(p + e.xxx));
}
// dark studio with a few coloured neon strip-lights for the chrome to reflectvec3env(vec3 d, float hue){
vec3 c = mix(vec3(0.015, 0.02, 0.04), vec3(0.05, 0.03, 0.08), d.y * 0.5 + 0.5);
float az = atan(d.z, d.x);
// three broad colour bars at different elevations
c += pal(hue + 0.00) * smoothstep(0.25, 0.0, abs(d.y - 0.55)) * smoothstep(0.6, 1.0, sin(az * 2.0) * 0.5 + 0.5) * 1.4;
c += pal(hue + 0.45) * smoothstep(0.20, 0.0, abs(d.y + 0.10)) * 1.0;
c += pal(hue + 0.75) * smoothstep(0.18, 0.0, abs(d.y + 0.6)) * smoothstep(0.5, 1.0, cos(az * 3.0) * 0.5 + 0.5) * 1.2;
// a bright key highlight
c += vec3(1.0) * pow(max(dot(d, normalize(vec3(0.5, 0.7, 0.3))), 0.0), 40.0) * 2.0;
return c;
}
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE.xy) / RENDERSIZE.y;
float ph = fract(TIME * speed / PERIOD);
gTh = TAU * ph;
gMerge = merge;
vec3 ro = vec3(0.0, 0.0, 4.1 / zoom);
vec3 ta = vec3(0.0);
vec3 ww = normalize(ta - ro);
vec3 uu = normalize(cross(vec3(0.0, 1.0, 0.0), ww));
vec3 vv = cross(ww, uu);
vec3 rd = normalize(uv.x * uu + uv.y * vv + 1.6 * ww);
vec3 col = env(rd, hue); // background = the studio itselffloat t = 0.0;
bool hit = false;
for (int s = 0; s < 110; s++){
vec3 p = ro + rd * t;
float d = map(p);
if (d < 0.0007 * t){ hit = true; break; }
t += d * 0.85;
if (t > 9.0) break;
}
if (hit){
vec3 p = ro + rd * t;
vec3 nor = calcNormal(p);
float fres = pow(1.0 - max(dot(nor, -rd), 0.0), 5.0);
vec3 refl = reflect(rd, nor);
vec3 rc = env(refl, hue); // mirror reflection of the studio// thin-film iridescence: a colour wash keyed to angle + Fresnelvec3 film = pal(hue + 0.5 + 2.2 * fres + 0.3 * nor.y);
vec3 metal = mix(rc, rc * film * 1.6, irid * 0.6);
metal += film * fres * irid * 0.8;
col = mix(metal, vec3(1.0), fres * 0.15); // edge glare
}
col = col / (1.0 + col);
col = pow(col, vec3(0.85));
col *= 1.0 - 0.16 * dot(uv, uv);
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #b9fqcjts — 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.