diff options
| author | Valentin Popov <valentin@popov.link> | 2026-11-01 00:31:26 +0300 |
|---|---|---|
| committer | Valentin Popov <valentin@popov.link> | 2026-11-01 00:31:26 +0300 |
| commit | 15aadf7f47b608d4990d2c981e451a7af3ae2cee (patch) | |
| tree | 499a0954af51201fe3ad966668fee540d9e8e091 /docs | |
| parent | 3aa9493a02abd27f4f0c803f594047d37ff9058b (diff) | |
| download | fparkan-15aadf7f47b608d4990d2c981e451a7af3ae2cee.tar.xz fparkan-15aadf7f47b608d4990d2c981e451a7af3ae2cee.zip | |
perf(render): prewarm pipeline variants with a Vulkan cache
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/tomes/05-render.md | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md index c1563fc..cfd352a 100644 --- a/docs/tomes/05-render.md +++ b/docs/tomes/05-render.md @@ -1144,6 +1144,16 @@ lightmap state передаются в `VulkanStaticMaterial`, а shader посÐ получается ключ Vulkan pipeline. Alpha reference передаётся отдельно через push constant; он не требует нового pipeline. +Набор pipelines создаётся до первого draw. Для каждого исходного состояния +готовятся его авторский вариант, прозрачный вариант с сохранённым alpha-test +и пять категорий MAT0 с обеими политиками глубины. Cull и decal bias остаются +исходными; одинаковые ключи объединяются. Смена категории материала или +прозрачности диапазона выбирает готовый ключ, сохраняя descriptors, buffers и +framebuffers. Vulkan `VkPipelineCache` принадлежит renderer, используется всеми +созданиями pipelines и переживает пересоздание swapchain. На диск он пока не +сохраняется. Счётчик `render_pipeline_cache` показывает число созданных +pipelines, включая новые наборы после resize. + Рабочий путь `fparkan-game` загружает terrain и все выбранные mission roots (по умолчанию весь список объектов), разрешая локальные material slots через WEAR и MAT0 до объединения геометрии. Индексы GPU имеют тип `u32`: вся карта @@ -1171,8 +1181,8 @@ FX и окружение обновляют следующие вершины, Ð Перед записью общих ресурсов renderer ждёт fences всех отправленных кадров. Одного fence текущего кадрового слота недостаточно: другой кадр ещё может -читать ту же память. Ожидание всего устройства пока остаётся на пересоздании -swapchain и набора pipelines, диагностическом readback и завершении работы. Загрузка изменённых +читать ту же память. Ожидание всего устройства остаётся на пересоздании +swapchain, диагностическом readback и завершении работы. Загрузка изменённых текстур пока использует отдельную синхронную transfer-команду. Строка `render_geometry_upload` показывает записанные vertex/index bytes и объём, который потребовался бы при полной перезаливке, без начальной загрузки. |
