レトログリッド
1 拍ごとに 1 マス近づくシンセウェイヴの床グリッド。
GLSL ソース
// Perspective grid approaching under the horizon (synthwave). Horizontal lines advance one row per beat — seamless over 4 beats.
vec2 prim(vec2 uv) {
float hz = uParams.y;
if (uv.y > hz) return vec2(0.0);
float z = 1.0 / max(hz - uv.y, 0.002);
float rr = fract(z * 0.12 + uBeat);
float xx = (uv.x - 0.5) * uResolution.x / uResolution.y * z * 0.25 * uParams.x / 8.0;
float rc = fract(xx);
float w = 0.05 + uBass * 0.08;
float rowLine = 1.0 - smoothstep(0.0, w, min(rr, 1.0 - rr));
float colLine = 1.0 - smoothstep(0.0, w * 0.8, min(rc, 1.0 - rc));
float l = max(rowLine, colLine) * (0.15 + 0.85 * smoothstep(0.0, 0.35, hz - uv.y));
return vec2(l, l);
}
共通ユニフォーム契約(uBeat · uBass · uKick …)を受け取る vec2 prim(vec2 uv) 関数ひとつです。出力は luma と alpha だけです。