Files
OpenFrontIO/src/client/graphics
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-12 20:56:17 -08:00
2025-12-29 09:03:46 -08:00