Joshua Shay Kricheli NeuroSymbolic AI
v2 v1

Release · v3.14.2

GPU-accelerated weather snow via PixiJS v8 +…

perf(v3): GPU-accelerated weather snow via PixiJS v8 + reduced 2D DPR

perf v3.14.2 July 7, 2026 Joshua Shay Kricheli 1fbed79

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