Fix water descriptor pool leak and add water rendering diagnostics

- Add VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT to water material
  descriptor pool so individual sets can be freed when tiles are unloaded
- Free descriptor sets in destroyWaterMesh() instead of leaking them
- Add terrain manager unloadAll() during logout to properly clear stale
  tiles, water surfaces, and queues between sessions
- Add diagnostic logging for water surface loading, material allocation
  failures, and render skip reasons to investigate missing water
This commit is contained in:
Kelsi 2026-02-25 13:26:08 -08:00
parent 94e4a0bdb3
commit 872b10fe68
4 changed files with 38 additions and 5 deletions

View file

@ -705,7 +705,15 @@ bool TerrainManager::advanceFinalization(FinalizingTile& ft) {
// Load water immediately after terrain (same frame) — water is now
// deduplicated to ~1-2 merged surfaces per tile, so this is fast.
if (waterRenderer) {
size_t beforeSurfaces = waterRenderer->getSurfaceCount();
waterRenderer->loadFromTerrain(pending->terrain, true, x, y);
size_t afterSurfaces = waterRenderer->getSurfaceCount();
if (afterSurfaces > beforeSurfaces) {
LOG_INFO("Water: tile [", x, ",", y, "] added ", afterSurfaces - beforeSurfaces,
" surfaces (total: ", afterSurfaces, ")");
}
} else {
LOG_WARNING("Water: waterRenderer is null during tile [", x, ",", y, "] finalization!");
}
// Ensure M2 renderer has asset manager