Release · v3.14.2
GPU-accelerated weather snow via PixiJS v8 +…
perf(v3): GPU-accelerated weather snow via PixiJS v8 + reduced 2D DPR
Details
Replace the raw-WebGL / CPU custom snow renderer in snow-gl.ts with a PixiJS v8 ParticleContainer (WebGPU where available, WebGL2 otherwise), loaded lazily from esm.sh as an ESM module via a dynamic import() (kept a plain global script — no static import/export). The per-flake curl-noise wind + gravity + flutter + recycle physics is preserved; it now drives each Particle's position/alpha instead of hand-building quad vertices. All of the existing lifecycle is kept: weather on/off toggle, snowy-condition gating, theme recolour (per-particle tint), prefers-reduced-motion static frame, resize reseed, tab-visibility pause and the fade in/out. If the import or app.init fails (no WebGPU and no WebGL), it hides #snow-gl and the 2D snow layer in seasonal-background covers it, exactly as the old WebGL-unavailable path did. Also folds in the 2D-layer DPR fix (supersedes #77): seasonal-background now caps its canvas resolution at 1.5 (1.25 on >=3x DPR, 1 on weak devices) via seasonRenderDpr(), down from a flat min(dpr, 2), and trims particle density by 0.65 on weak devices. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YB1axhX3kbHCFJbX7LhfH8
Files changed (2)
| frontend/client/ts/effects/seasonal-background.ts | +20 | −1 |
| frontend/client/ts/effects/snow-gl.ts | +185 | −145 |