Files
OpenFrontIO/src/client
scamiv 202f59a410 Refactor territory rendering to use WebGPU
Replace Canvas 2D-based territory rendering with a WebGPU implementation
for improved performance and scalability.

Major changes:
- Remove TerrainLayer: territory and terrain now rendered together in WebGPU
- Add TerritoryWebGLRenderer: new WebGPU-based renderer (1162 lines)
  - GPU-authoritative state management with compute shaders
  - Separate uniform buffers for compute and render passes
  - Efficient incremental updates via scatter/gather compute passes
  - Full rebuild compute pass for palette/theme changes
- Add defense post management:
  - Track defended state in GameMap (bit 12 in tile state)
  - Update defended tiles when defense posts are added/removed/moved
  - Update defended state when tiles change ownership
- Extract hover detection into HoverInfo utility:
  - Centralized logic for player/unit/wilderness detection
  - Used by PlayerInfoOverlay for cleaner separation of concerns
- Canvas architecture changes:
  - Main canvas now transparent (alpha: true)
  - WebGPU canvas renders background and territory
  - Overlay canvas renders UI elements on top
- Performance optimizations:
  - Compute shaders run at simulation rate (tick), not frame rate
  - Incremental tile updates via pending tiles set
  - Palette signature tracking to avoid unnecessary rebuilds
  - Defense posts signature tracking for efficient updates

Files changed:
- 10 files changed, 1447 insertions(+), 752 deletions(-)
- New: TerritoryWebGLRenderer.ts, HoverInfo.ts
- Removed: TerrainLayer.ts
- Modified: TerritoryLayer.ts (simplified from 710 to 250 lines)
2026-01-16 02:50:00 +01:00
..
2026-01-15 12:57:46 -08:00
2026-01-11 14:52:03 -08:00
2026-01-09 20:26:34 -08:00
2025-12-18 19:41:29 -08:00
2026-01-06 19:34:02 -08:00
2025-10-23 15:02:13 -07:00
2026-01-14 16:56:50 -08:00
2026-01-11 14:52:03 -08:00
2025-09-09 14:37:06 -07:00
2026-01-14 16:56:50 -08:00
2026-01-11 14:52:03 -08:00
2026-01-11 14:52:03 -08:00
2026-01-11 14:52:03 -08:00
2026-01-11 14:52:03 -08:00
2026-01-09 20:26:34 -08:00