[ 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":"Kaleidoscopic domain-warped plasma with pulsing rings and film grain, animated continuously","CATEGORIES":["generative"],"INPUTS":[]}*/precisionhighpfloat;
#define TAU 6.28318530718floathash21(vec2 p) {
p = fract(p * vec2(234.34, 435.345));
p += dot(p, p + 34.23);
returnfract(p.x * p.y);
}
floatnoise2(vec2 p) {
vec2 i = floor(p);
vec2 f = fract(p);
f = f * f * (3.0 - 2.0 * f);
float a = hash21(i);
float b = hash21(i + vec2(1.0, 0.0));
float c = hash21(i + vec2(0.0, 1.0));
float d = hash21(i + vec2(1.0, 1.0));
returnmix(mix(a, b, f.x), mix(c, d, f.x), f.y);
}
floatfbm(vec2 p) {
float v = 0.0;
float amp = 0.5;
for (int i = 0; i < 5; i++) {
v += amp * noise2(p);
p = p * 2.03 + vec2(1.7, 9.2);
amp *= 0.5;
}
return v;
}
vec3palette(float t) {
return0.5 + 0.5 * cos(TAU * (t + vec3(0.0, 0.33, 0.67)));
}
voidmain() {
vec2 uv = isf_FragNormCoord;
vec2 p = (uv - 0.5) * vec2(RENDERSIZE.x / RENDERSIZE.y, 1.0);
float t = TIME * 0.15;
// kaleidoscope foldfloat k = 6.0;
float ang = atan(p.y, p.x);
float rad = length(p);
ang = mod(ang + t * 0.2, TAU / k);
ang = abs(ang - (TAU / k) * 0.5);
p = vec2(cos(ang), sin(ang)) * rad;
p *= 2.0;
// double domain warpvec2 q = vec2(fbm(p * 1.5 + vec2(0.0, t)),
fbm(p * 1.5 + vec2(5.2, -t)));
vec2 r = vec2(fbm(p * 1.5 + 4.0 * q + vec2(1.7, 9.2) + t * 0.6),
fbm(p * 1.5 + 4.0 * q + vec2(8.3, 2.8) - t * 0.4));
float f = fbm(p * 1.5 + 4.0 * r);
vec3 col = palette(f + 0.5 * q.x + 0.25 * r.y + 0.1 * t);
col = mix(col, vec3(0.05, 0.02, 0.1), smoothstep(0.9, 1.4, rad * 2.0));
// pulsing rings
col += 0.15 * sin(20.0 * rad - TIME * 2.0) * vec3(0.2, 0.4, 0.9);
// grainfloat g = hash21(uv * RENDERSIZE + fract(TIME) * 100.0);
col += (g - 0.5) * 0.05;
// vignettefloat d = dot(uv - 0.5, uv - 0.5);
col *= 1.0 - 0.8 * d;
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #v81q73ov — 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.