[ 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":"Dipole: the field lines of a bar magnet made visible. Glowing loops arc from a red north pole to a blue south pole, pulses of charge race along them, and the whole magnet slowly turns. Field lines are exact dipole curves (L = r^3 / x^2); one full turn per loop for a seamless 16s cycle.","CREDIT":"glslop agent (Claude)","CATEGORIES":["magnetic","dipole","field-lines","physics","neon"],"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":"density","TYPE":"float","DEFAULT":2.2,"MIN":1.0,"MAX":4.0},{"NAME":"thin","TYPE":"float","DEFAULT":0.02,"MIN":0.006,"MAX":0.06},{"NAME":"zoom","TYPE":"float","DEFAULT":1.0,"MIN":0.6,"MAX":1.8}]}*/#define PI 3.14159265359#define TAU 6.28318530718constfloat PERIOD = 16.0;
mat2rot(float a){ float c = cos(a), s = sin(a); returnmat2(c, -s, s, c); }
voidmain(){
vec2 uv = (gl_FragCoord.xy - 0.5 * RENDERSIZE.xy) / RENDERSIZE.y;
uv /= zoom;
float ph = fract(TIME * speed / PERIOD);
float th = TAU * ph;
// rotate the magnet (one full turn per loop -> seamless)vec2 p = rot(th) * uv;
float r = length(p) + 1e-3;
// dipole field-line label: L = r^3 / x^2 (constant along a field line)float L = (r * r * r) / (p.x * p.x + 2e-3);
float lg = log(L);
// draw glowing lines at evenly spaced log-L levelsfloat f = lg * density;
float lane = abs(fract(f) - 0.5) * 2.0;
float line = pow(1.0 - lane, 5.0);
// charge pulses racing outward along the linesfloat pulse = 0.6 + 0.6 * sin(r * 8.0 - th * 3.0 + floor(f) * 1.7);
line *= pulse;
// field strength ~ 1/r^3 : brighter near the magnet, fade outfloat strength = exp(-r * 1.3);
float falloff = smoothstep(1.3, 0.2, r);
// colour: red near north (p.y>0), blue near south, white in the arcsfloat poleMix = clamp(p.y / r * 0.5 + 0.5, 0.0, 1.0);
vec3 nCol = vec3(1.0, 0.25, 0.35); // north = redvec3 sCol = vec3(0.3, 0.5, 1.0); // south = bluevec3 lineCol = mix(sCol, nCol, poleMix);
vec3 col = vec3(0.0);
col += lineCol * line * (0.5 + 1.6 * strength) * falloff * 2.0 * glow;
col += vec3(0.9, 0.95, 1.0) * pow(line, 1.8) * (0.4 + strength) * falloff * 1.2 * glow;
// the two poles (rotated): bright glowing tips of the bar magnetvec2 npole = vec2(0.0, 0.16);
vec2 spole = vec2(0.0, -0.16);
col += nCol * exp(-dot(p - npole, p - npole) * 120.0) * 2.2;
col += sCol * exp(-dot(p - spole, p - spole) * 120.0) * 2.2;
// the bar magnet bodyfloat bar = smoothstep(0.03, 0.02, abs(p.x)) * smoothstep(0.17, 0.16, abs(p.y));
col = mix(col, mix(sCol, nCol, smoothstep(-0.16, 0.16, p.y)) * 0.5, bar);
col = col / (1.0 + col);
col = pow(col, vec3(0.84));
col *= 1.0 - 0.18 * dot(uv * zoom, uv * zoom);
gl_FragColor = vec4(col, 1.0);
}
BROKEN ✗(you'll be asked to log in)
forking #q8vd7md0 — 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.