perf(render): share identical material texture images
Docs Deploy / Build and Deploy MkDocs (push) Successful in 39s
Docs Deploy / Build and Deploy MkDocs (push) Successful in 39s
This commit is contained in:
4 files changed
+127
-76
No files matched your search
+13
-2
@@ -1151,6 +1151,17 @@ WEAR и MAT0 до объединения геометрии. Индексы GPU
|
||||
`u16`. Terrain передаёт в shader базовый, detail и overlay stages, lightmap и
|
||||
animation phase; object batches сохраняют их legacy blend/depth/alpha state.
|
||||
|
||||
При первоначальной загрузке одинаковые текстуры разных material slots
|
||||
используют один GPU image. Ключ включает размеры, RGBA8 и всю авторскую
|
||||
mip-цепочку: совпадения только базового изображения недостаточно. Хеш ускоряет
|
||||
поиск, а полное сравнение данных исключает ошибочное объединение при коллизии.
|
||||
Слоты сохраняют собственные descriptors, UV и параметры материала. При первой
|
||||
смене общей текстуры renderer создаёт отдельный image только для изменяемого
|
||||
слота; следующие фазы обновляют его на месте. Поэтому анимация одного материала
|
||||
не меняет соседний. Строка `render_texture_upload` показывает число слотов,
|
||||
начальных GPU images и отделений при обновлении. CPU-копии исходных пикселей
|
||||
в материалах эта оптимизация не объединяет.
|
||||
|
||||
Рельеф образует неизменяемое начало общего vertex buffer. Control-анимация,
|
||||
FX и окружение обновляют следующие вершины, а новые индексы нужны только
|
||||
геометрии проекционных теней в конце index buffer. Поэтому кадр записывает
|
||||
@@ -1160,8 +1171,8 @@ FX и окружение обновляют следующие вершины,
|
||||
|
||||
Перед записью общих ресурсов renderer ждёт fences всех отправленных кадров.
|
||||
Одного fence текущего кадрового слота недостаточно: другой кадр ещё может
|
||||
читать ту же память. Ожидание всего устройства остаётся на пересоздании
|
||||
swapchain, диагностическом readback и завершении работы. Загрузка изменённых
|
||||
читать ту же память. Ожидание всего устройства пока остаётся на пересоздании
|
||||
swapchain и набора pipelines, диагностическом readback и завершении работы. Загрузка изменённых
|
||||
текстур пока использует отдельную синхронную transfer-команду. Строка
|
||||
`render_geometry_upload` показывает записанные vertex/index bytes и объём,
|
||||
который потребовался бы при полной перезаливке, без начальной загрузки.
|
||||
|
||||
Reference in new issue
Block a user