만화경 파편
돌아가는 12겹 만화경 파편. 저역에 길어진다.
GLSL 소스
// 12-fold kaleidoscope shards. One turn every 16 beats (seamless). Lows set the length, highs the width.
vec2 prim(vec2 uv) {
vec2 p = asp(uv);
float n = floor(uParams.x);
float a = atan(p.y, p.x) + uBeat * TAU / 16.0;
float seg = TAU / n;
a = abs(mod(a, seg) - seg * 0.5);
float r = length(p);
vec2 q = vec2(cos(a), sin(a)) * r;
float len = 0.25 + uBass * 0.22 + uKick * 0.05;
float inner = 0.05 + uMid * 0.06;
float wid = (0.05 + uHigh * 0.05) * uParams.y;
float tri = step(inner, q.x) * step(q.x, len) * step(q.y, wid * (1.0 - (q.x - inner) / max(len - inner, 0.01)));
float l = tri * (0.5 + 0.5 * (1.0 - q.x / max(len, 0.01)));
return vec2(l, tri);
}
공통 유니폼 계약(uBeat · uBass · uKick …)을 받는 vec2 prim(vec2 uv) 하나입니다. 출력은 luma 와 alpha 뿐입니다.