aboutsummaryrefslogtreecommitdiff
path: root/docs/tomes
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-11-01 00:31:26 +0300
committerValentin Popov <valentin@popov.link>2026-11-01 00:31:26 +0300
commit15aadf7f47b608d4990d2c981e451a7af3ae2cee (patch)
tree499a0954af51201fe3ad966668fee540d9e8e091 /docs/tomes
parent3aa9493a02abd27f4f0c803f594047d37ff9058b (diff)
downloadfparkan-15aadf7f47b608d4990d2c981e451a7af3ae2cee.tar.xz
fparkan-15aadf7f47b608d4990d2c981e451a7af3ae2cee.zip
perf(render): prewarm pipeline variants with a Vulkan cache
Diffstat (limited to 'docs/tomes')
-rw-r--r--docs/tomes/05-render.md14
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 и объём,
который потребовался бы при полной перезаливке, без начальной загрузки.