perf(render): retain static mesh prefixes between frames
Docs Deploy / Build and Deploy MkDocs (push) Successful in 36s

This commit is contained in:
Valentin Popov committed 2026-11-01 01:09:36 +04:00
1 parent 8fab4b44b8
commit 5890416fd7
5 files changed
+177 -71

No files matched your search

+15
View File
@@ -1151,6 +1151,21 @@ WEAR и MAT0 до объединения геометрии. Индексы GPU
`u16`. Terrain передаёт в shader базовый, detail и overlay stages, lightmap и
animation phase; object batches сохраняют их legacy blend/depth/alpha state.
Рельеф образует неизменяемое начало общего vertex buffer. Control-анимация,
FX и окружение обновляют следующие вершины, а новые индексы нужны только
геометрии проекционных теней в конце index buffer. Поэтому кадр записывает
лишь эти изменяемые части. При росте буфера новая память получает все данные,
включая неизменяемое начало; уменьшение числа теней не уменьшает выделенную
ёмкость. Это сохраняет номера вершин, диапазоны отрисовки и порядок проходов.
Перед записью общих ресурсов renderer ждёт fences всех отправленных кадров.
Одного fence текущего кадрового слота недостаточно: другой кадр ещё может
читать ту же память. Ожидание всего устройства остаётся на пересоздании
swapchain, диагностическом readback и завершении работы. Загрузка изменённых
текстур пока использует отдельную синхронную transfer-команду. Строка
`render_geometry_upload` показывает записанные vertex/index bytes и объём,
который потребовался бы при полной перезаливке, без начальной загрузки.
После загрузки world path создаёт интерактивную free-flight камеру (`WASD`,
`E/Q`, `Shift`, `Ctrl`, RMB relative-look), обновляет listener и на каждом
кадре собирает environment frame. Для каждого отрисовываемого строения