From 1afe1698db5e9b3378f5087890c8177201a84789 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Sat, 18 Jul 2026 08:18:39 +0400 Subject: feat(render): add deterministic pipeline state keys --- docs/tomes/05-render.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'docs/tomes') diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md index 6804fa6..a508334 100644 --- a/docs/tomes/05-render.md +++ b/docs/tomes/05-render.md @@ -829,6 +829,24 @@ draw_indexed(item.batch.base_vertex, item.batch.index_count); ``` +## Текущий контракт pipeline key + +`fparkan-render` теперь переносит вместе с каждым backend-neutral draw +`LegacyPipelineState` и детерминированный `PipelineKey`. Ключ не хешируется: +он явно упаковывает blend mode, depth mode, cull mode и флаг alpha-test, поэтому +одинаковые snapshots дают одинаковый capture и будущий Vulkan cache не зависит +от версии Rust или процесса. Alpha reference намеренно не входит в key: это +dynamic material constant, а не структурный вариант graphics pipeline. + +Пока текущий статический Vulkan viewer создаёт только базовое состояние +`opaque + depth disabled + cull disabled + alpha-test disabled`; ключ уже +передаётся через render command и canonical capture, но Vulkan pipeline cache +ещё не выбирает variants по нему. Также не установлен источник значений для +Batch20/MAT0: их поля нельзя объявлять blend/depth/cull mapping без dynamic +capture или дополнительного дизассемблирования. Поэтому этот контракт — +подготовленная граница совместимости, а не заявление о готовой parity +fixed-function state. + После последнего world pass renderer закрывает сцену и выводит back buffer. World3D снимает `in_render`, восстанавливает временный viewport state и вызывает `on_end_render` у active objects. Только после этого допустимо освобождать -- cgit v1.2.3