[ 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":"Nested orbit reliquary wreathed in blue ember smoke — torus hierarchy meets buoyant velocity ribbons.","CATEGORIES":["generative"],"INPUTS":[{"NAME":"speed","TYPE":"float","DEFAULT":1.3,"MIN":0.1,"MAX":3.0},{"NAME":"flowStrength","TYPE":"float","DEFAULT":1.4,"MIN":0.0,"MAX":3.0},{"NAME":"emberIntensity","TYPE":"float","DEFAULT":1.2,"MIN":0.0,"MAX":2.5},{"NAME":"smokeColor","TYPE":"color","DEFAULT":[0.18,0.42,0.68,1.0]},{"NAME":"orbitColor","TYPE":"color","DEFAULT":[0.85,0.22,0.08,1.0]},{"NAME":"accentColor","TYPE":"color","DEFAULT":[1.0,0.52,0.16,1.0]},{"NAME":"density","TYPE":"float","DEFAULT":0.65,"MIN":0.0,"MAX":1.0}]}*/#define PI 3.14159265359#define TAU 6.28318530718mat2rot(float a){ float c=cos(a), s=sin(a); returnmat2(c,-s,s,c); }
floathash21(vec2 p){
returnfract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);
}
floathash11(float p){
returnfract(sin(p * 78.233) * 43758.5453);
}
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 a = 0.5;
for(int i = 0; i < 5; i++){
v += a * noise2(p);
p *= 2.0;
a *= 0.5;
}
return v;
}
// Velocity field inspired by Parent 2's buoyant curlvec2velocityField(vec2 uv, float t){
vec2 p = uv - 0.5;
p.x *= RENDERSIZE.x / RENDERSIZE.y;
float r = length(p);
float angle = atan(p.y, p.x);
vec2 v = vec2(sin(TAU * uv.x * 2.0), -cos(TAU * uv.y * 2.0));
v += 0.5 * vec2(sin(TAU * (2.0 * uv.y + t * 0.08)),
cos(TAU * (2.0 * uv.x - t * 0.10)));
v += 0.35 * vec2(cos(angle * 3.0 - t * 0.22), sin(angle * 2.0 + t * 0.28));
v += vec2(0.0, 0.6 + 0.4 * smoothstep(0.0, 0.8, r));
return v;
}
// Harmonic shell inspired by Parent 1's nested torus structurefloatharmonicShell(vec2 p, float ph, float major, float tube, float carriers, float rate){
float a = atan(p.y, p.x);
float wave = a * carriers - TAU * ph * rate;
float amp = 0.15;
float ridge = cos(wave);
float r = length(p.xy) - (major + amp * ridge);
float d = abs(r) - tube * (1.0 - 0.15 + 0.15 * cos(wave + 0.8));
return d;
}
voidmain(){
vec2 uv = isf_FragNormCoord;
float t = TIME * speed;
vec2 aspect = vec2(RENDERSIZE.x / RENDERSIZE.y, 1.0);
vec2 p = (uv - 0.5) * aspect;
// Domain warp using velocity field — smoke flowing around orbitsvec2 vel = velocityField(uv, t) * flowStrength;
// Multiple layers of smoke ribbons flowing through the velocity fieldfloat smoke = 0.0;
float glow = 0.0;
for(int i = 0; i < 4; i++){
float fi = float(i);
float scale = 1.0 + fi * 0.5;
vec2 wUV = uv - vel * (0.004 + fi * 0.002) * (1.0 + density);
wUV = (wUV - 0.5) * aspect * scale;
// Apply orbital rotationfloat rotAng = t * 0.15 + fi * 0.5;
wUV = rot(rotAng) * wUV;
// Harmonic shell — nested torus cross-sectionsfloat major = 0.18 + fi * 0.09;
float tube = 0.012 + fi * 0.006;
float carriers = 3.0 + fi * 3.0;
float rate = 0.3 + fi * 0.15;
float shell = harmonicShell(wUV, t, major, tube, carriers, rate);
// Convert SDF to smoke densityfloat band = exp(-abs(shell) * 60.0);
smoke += band * (0.8 - fi * 0.12);
// Ember ignition along ridge peaksfloat a = atan(wUV.y, wUV.x);
float wave = a * carriers - TAU * t * rate;
float ign = pow(max(0.0, cos(wave - 0.4)), 16.0);
glow += ign * band * 2.0;
}
// Add turbulent smoke using fbm warped by velocityvec2 turbUV = uv + vel * 0.01;
turbUV = (turbUV - 0.5) * aspect * 3.0;
float turb = fbm(turbUV + t * 0.1);
turb += 0.5 * fbm(turbUV * 2.0 - t * 0.15);
smoke *= 0.5 + 0.5 * turb;
// Additional flowing ember particlesfloat embers = 0.0;
for(int i = 0; i < 8; i++){
float fi = float(i);
vec2 ePos = vec2(
0.5 + 0.3 * sin(t * 0.4 + fi * 1.7),
0.5 + 0.35 * cos(t * 0.3 + fi * 2.3)
);
ePos += vel * 0.003;
vec2 ed = (uv - ePos) * aspect;
float ed_len = length(ed);
embers += exp(-ed_len * 80.0) * (0.5 + 0.5 * sin(t * 3.0 + fi));
}
smoke = clamp(smoke, 0.0, 2.0);
glow = clamp(glow, 0.0, 3.0);
embers *= emberIntensity;
// Color composition: blend Parent 1's teal/orange orbit palette with Parent 2's blue smokevec3 smokeCol = smokeColor.rgb;
vec3 orbitCol = orbitColor.rgb;
vec3 accCol = accentColor.rgb;
vec3 col = vec3(0.0);
col += smokeCol * smoke * 0.7;
col += orbitCol * glow * 0.6;
col += accCol * embers * 1.5;
// Contrast push
col = pow(col, vec3(0.85));
col *= 1.3;
col = 1.0 - exp(-col * 1.8);
// Vignettefloat vig = smoothstep(1.2, 0.3, length(p));
col *= 0.5 + 0.5 * vig;
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #9j8qfk4g — 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.