fractafrag/services
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
..
api Versioning, drafts, resizable editor, My Shaders, 200 seed shaders 2026-03-24 22:00:10 -05:00
frontend Fix shader rendering: visibility-aware WebGL contexts, fix 2 GLSL shaders 2026-03-24 22:12:58 -05:00
mcp M0: Foundation scaffold — Docker Compose, DB schema, FastAPI app, all service stubs 2026-03-24 20:45:08 -05:00
nginx/conf M0: Foundation scaffold — Docker Compose, DB schema, FastAPI app, all service stubs 2026-03-24 20:45:08 -05:00
renderer Fix Docker Compose startup issues 2026-03-24 21:06:01 -05:00