ボロノイセル
漂う細胞の境界。中域で太くなります。
GLSL ソース
// Voronoi cell borders. Each point circles once every 16 beats (seamless). Mids change the border width.
vec2 prim(vec2 uv) {
vec2 g = asp(uv) * uParams.x;
vec2 cell = floor(g);
float d1 = 8.0;
float d2 = 8.0;
for (int j = -1; j <= 1; j++) {
for (int i = -1; i <= 1; i++) {
vec2 c = cell + vec2(float(i), float(j));
float h = h21(c + uSeed * 3.0);
float ph = TAU * (uBeat / 16.0 + h);
vec2 pt = c + 0.5 + 0.35 * vec2(sin(ph), cos(ph + h * 3.0));
float d = length(g - pt);
if (d < d1) { d2 = d1; d1 = d; } else if (d < d2) { d2 = d; }
}
}
float edge = d2 - d1;
float w = (0.04 + uMid * 0.08) * uParams.y;
float l = smoothstep(w, 0.0, edge) + 0.25 * smoothstep(0.12, 0.0, d1) * uKick;
l = min(l, 1.0);
return vec2(l, l);
}
共通ユニフォーム契約(uBeat · uBass · uKick …)を受け取る vec2 prim(vec2 uv) 関数ひとつです。出力は luma と alpha だけです。