[ 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":"Coral bloom — Turing-pattern labyrinth rendered as fleshy 3D relief, slowly growing in sunset tones.","CREDIT":"claude-opus-4-8","INPUTS":[{"NAME":"scale","TYPE":"float","DEFAULT":5.2,"MIN":1.5,"MAX":9.0},{"NAME":"morph","TYPE":"float","DEFAULT":0.5,"MIN":0.0,"MAX":2.0},{"NAME":"relief","TYPE":"float","DEFAULT":1.0,"MIN":0.2,"MAX":2.0},{"NAME":"warm","TYPE":"float","DEFAULT":0.5,"MIN":0.0,"MAX":1.0}]}*/floathash(vec2 p){ p = fract(p * vec2(123.34, 456.21)); p += dot(p, p + 45.32); returnfract(p.x * p.y); }
floatnoise(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, 0.0)), c = hash(i + vec2(0.0, 1.0)), d = hash(i + vec2(1.0, 1.0));
returnmix(mix(a, b, f.x), mix(c, d, f.x), f.y);
}
floatfbm(vec2 p){ float s = 0.0, a = 0.5; for (int i = 0; i < 4; i++){ s += a * noise(p); p = p * 2.0 + 7.0; a *= 0.5; } return s; }
// smooth band-passed field -> clean Turing labyrinth height (rounded coral lobes)floatH(vec2 p){
returnnoise(p) - noise(p * 1.7 + 9.0);
}
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE) / RENDERSIZE.y;
vec2 p = uv * scale + vec2(0.0, TIME * 0.04 * morph);
p += 0.25 * vec2(sin(TIME * 0.09 * morph), cos(TIME * 0.07 * morph)); // slow growthfloat f = H(p);
// 3D relief from the height gradient + fine coral micro-bumpsvec2 e = vec2(0.02, 0.0);
float micro = (noise(p * 7.0) - 0.5) * 0.12;
float fx = (H(p + e.xy) - H(p - e.xy)) + (noise((p + e.xy) * 7.0) - noise((p - e.xy) * 7.0)) * 0.18;
float fy = (H(p + e.yx) - H(p - e.yx)) + (noise((p + e.yx) * 7.0) - noise((p - e.yx) * 7.0)) * 0.18;
vec3 n = normalize(vec3(-fx * relief * 2.2, -fy * relief * 2.2, 0.06));
vec3 ld = normalize(vec3(0.5, 0.65, 0.7));
float diff = 0.35 + 0.75 * max(0.0, dot(n, ld));
float spec = pow(max(0.0, dot(reflect(-ld, n), vec3(0.0, 0.0, 1.0))), 24.0);
float lobe = smoothstep(-0.05, 0.03, f + micro); // crisp fleshy lobes (wider coverage)float groove = smoothstep(0.025, -0.015, abs(f)); // valleys between lobesvec3 deep = vec3(0.20, 0.05, 0.16); // warm purple subsurfacevec3 red = vec3(0.80, 0.17, 0.15);
vec3 orange= vec3(0.98, 0.48, 0.22);
vec3 peach = vec3(1.0, 0.85, 0.6);
vec3 col = mix(deep, red, lobe);
col = mix(col, orange, smoothstep(-0.02, 0.12, f) * lobe);
col += deep * 0.4 * groove; // faint subsurface glow in the channels
col = mix(col, peach, spec); // glossy highlights on lobe crests
col *= diff;
col *= 1.0 - 0.32 * groove; // darken the grooves (gently)
col *= 1.0 - 0.38 * dot(uv, uv);
col = pow(max(col, 0.0), vec3(0.9));
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #wyaddnv4 — 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.