aboutsummaryrefslogtreecommitdiff
path: root/docs/tomes
diff options
context:
space:
mode:
Diffstat (limited to 'docs/tomes')
-rw-r--r--docs/tomes/05-render.md22
1 files changed, 14 insertions, 8 deletions
diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md
index a508334..ccbc578 100644
--- a/docs/tomes/05-render.md
+++ b/docs/tomes/05-render.md
@@ -838,14 +838,20 @@ draw_indexed(item.batch.base_vertex,
от версии 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.
+Текущий static Vulkan viewer дедуплицирует состояния ranges при каждой сборке
+swapchain resources, создаёт один `vk::Pipeline` на уникальный `PipelineKey` и
+выбирает его непосредственно перед соответствующим `vkCmdDrawIndexed`.
+Кэш корректно уничтожается при recreate/teardown; setup failure откатывает уже
+созданные variants. Baseline оригинального MSH подтверждён с состоянием
+`opaque + depth disabled + cull disabled + alpha-test disabled`.
+
+`SourceAlpha` и front/back culling имеют Vulkan mapping в этом кэше. Запрос
+depth или alpha-test сейчас завершается явной ошибкой: renderer ещё не имеет
+depth attachment либо alpha-test shader variant, поэтому он не должен молча
+подменять state. Также не установлен источник значений для Batch20/MAT0: их
+поля нельзя объявлять blend/depth/cull mapping без dynamic capture или
+дополнительного дизассемблирования. Это частично реализованная compatibility
+boundary, а не заявление о готовой parity fixed-function state.
После последнего world pass renderer закрывает сцену и выводит back buffer.
World3D снимает `in_render`, восстанавливает временный viewport state и вызывает