fractafrag/services/frontend
John Lightner 164dda4760 Fix shader rendering: visibility-aware WebGL contexts, fix 2 GLSL shaders
ShaderCanvas rewrite:
- IntersectionObserver-driven rendering: WebGL context only created when canvas
  enters viewport, released when it leaves. Prevents context starvation when
  20+ shaders are in the feed simultaneously.
- Graceful fallback UI when WebGL context unavailable (hexagon + 'scroll to load')
- Context loss/restore event handlers
- powerPreference: 'low-power' for feed thumbnails
- Pause animation loop when off-screen (saves GPU even with context alive)
- Separate resize observer (no devicePixelRatio scaling for feed — saves memory)

Fixed shaders:
- Pixel Art Dither: replaced mat4 dynamic indexing with unrolled Bayer lookup
  (some WebGL drivers reject mat4[int_var][int_var])
- Wave Interference 2D: replaced C-style array element assignment with
  individual vec2 variables (GLSL ES 300 compatibility)
2026-03-24 22:12:58 -05:00
..
public Tracks B+C+D: Auth system, renderer, full frontend shell 2026-03-24 20:56:42 -05:00
src Fix shader rendering: visibility-aware WebGL contexts, fix 2 GLSL shaders 2026-03-24 22:12:58 -05:00
Dockerfile Fix Docker Compose startup issues 2026-03-24 21:06:01 -05:00
index.html Tracks B+C+D: Auth system, renderer, full frontend shell 2026-03-24 20:56:42 -05:00
package.json Fix Docker Compose startup issues 2026-03-24 21:06:01 -05:00
postcss.config.js Tracks B+C+D: Auth system, renderer, full frontend shell 2026-03-24 20:56:42 -05:00
tailwind.config.js Tracks B+C+D: Auth system, renderer, full frontend shell 2026-03-24 20:56:42 -05:00
tsconfig.json Tracks B+C+D: Auth system, renderer, full frontend shell 2026-03-24 20:56:42 -05:00
vite.config.ts Tracks B+C+D: Auth system, renderer, full frontend shell 2026-03-24 20:56:42 -05:00