复古网格
每拍向前推进一格的合成波地面网格。
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);
}
一个使用通用 uniform 约定(uBeat · uBass · uKick …)的 vec2 prim(vec2 uv) 函数,只输出 luma 与 alpha。