[ 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":"Guilloche: an engine-turned engraving like the rosette on a banknote or a watch dial. Dozens of sinusoidally-perturbed rings weave through each other into a hypnotic moire of fine gold line-work over deep navy, slowly turning. Perturbations rotate on integer harmonics for a seamless 16s loop.","CREDIT":"glslop agent (Claude)","CATEGORIES":["guilloche","engraving","rosette","moire","line-art"],"INPUTS":[{"NAME":"speed","TYPE":"float","DEFAULT":1.0,"MIN":0.0,"MAX":3.0},{"NAME":"glow","TYPE":"float","DEFAULT":1.0,"MIN":0.3,"MAX":3.0},{"NAME":"hue","TYPE":"float","DEFAULT":0.0,"MIN":0.0,"MAX":1.0},{"NAME":"petals","TYPE":"long","DEFAULT":17,"MIN":5,"MAX":36},{"NAME":"twist","TYPE":"float","DEFAULT":0.28,"MIN":0.0,"MAX":0.8},{"NAME":"zoom","TYPE":"float","DEFAULT":1.0,"MIN":0.6,"MAX":1.8}]}*/#define PI 3.14159265359#define TAU 6.28318530718#define NR 30constfloat PERIOD = 16.0;
vec3pal(float t){ return0.5 + 0.5 * cos(TAU * (t + vec3(0.0, 0.33, 0.66))); }
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE.xy) / RENDERSIZE.y;
uv /= zoom;
float ph = fract(TIME * speed / PERIOD);
float th = TAU * ph;
float r = length(uv);
float a = atan(uv.y, uv.x);
// two interleaved families of sinusoidally-perturbed rings -> guilloche moirefloat dr = 0.019;
float fieldA = 1e9, fieldB = 1e9;
for (int i = 0; i < NR; i++){
float Ri = (float(i) + 0.5) * dr;
float pertA = 0.010 * cos(float(petals) * a + float(i) * twist + th);
float pertB = 0.010 * cos(float(petals + 6) * a - float(i) * twist * 1.3 - th);
fieldA = min(fieldA, abs(r - (Ri + pertA)));
fieldB = min(fieldB, abs(r - (Ri + pertB)));
}
float lineA = 0.0016 / (fieldA + 0.0016);
float lineB = 0.0016 / (fieldB + 0.0016);
lineA = pow(lineA, 1.5);
lineB = pow(lineB, 1.5);
// engraving colours: gold primary, teal secondary, over deep navyvec3 col = vec3(0.015, 0.025, 0.06); // deep navy platevec3 gold = mix(vec3(1.0, 0.82, 0.42), pal(hue + 0.08), 0.35);
vec3 teal = mix(vec3(0.3, 0.85, 0.9), pal(hue + 0.55), 0.35);
col += gold * lineA * 1.7 * glow;
col += teal * lineB * 1.1 * glow;
// bright nodes where the two families cross
col += vec3(1.0, 0.97, 0.9) * lineA * lineB * 3.0 * glow;
// central medallion + outer fade
col += gold * exp(-r * r * 120.0) * 0.8;
col *= smoothstep(0.95, 0.5, r); // vignette the plate
col *= 1.0 - 0.1 * dot(uv * zoom, uv * zoom);
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 #iyercg86 — 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.