6.6 KiB
6.6 KiB
Renderer Truth Table
Эта страница нужна для одной вещи: не позволять путям smoke, planning и capture выглядеть как «почти готовый renderer». Каждый путь доказывает разный класс свойств, и acceptance не должен смешивать их.
Краткая матрица
| Path | Native window / swapchain | Draws pixels | Uses original assets | Acceptance class | Что доказывает | Чего не доказывает |
|---|---|---|---|---|---|---|
fparkan-vulkan-smoke / VulkanSmokeRenderer |
Yes | Yes | Static MSH plus sampled TEXM | covered-gpu for Stage 0 smoke and explicit MSH/TEXM/descriptor bridge IDs |
Loader, instance, surface, swapchain, submit/present, validation-clean triangle path; original MSH indexed draw; TEXM RGBA8 staging upload; per-batch WEAR/MAT0 diffuse descriptors and fragment sampling | MAT0 phase animation, lightmaps, legacy blend/depth/cull states, terrain, camera/node transforms, gameplay rendering |
VulkanPlanningBackend |
No | No | Optional CPU-side IDs only | covered-planning |
Deterministic command validation, canonical capture, frame submission planning | Любой live GPU draw, pixel parity, validation-clean asset frame |
RecordingBackend |
No | No | Optional CPU-side IDs only | covered-planning |
Stable command capture for backend-neutral tests | Native window, Vulkan, GPU resource lifetime, pixels |
NullBackend |
No | No | Optional CPU-side IDs only | Usually covered for validation-only rows |
Command stream framing and bounds validation | Capture stability, GPU execution, pixels |
VulkanAssetRenderer |
Yes | Yes | Yes | covered-gpu |
Static original asset rendering: MSH/Texm/WEAR/MAT0/terrain through Vulkan | Animation/FX parity unless explicitly wired |
fparkan-game --backend static-vulkan |
Yes, GOG Autodemo.00 |
Yes, full static AutoDemo preview | Eight mission objects, 66 MSH components, original diffuse TEXM and Land2 terrain base layer | covered-gpu for the bounded static-scene bridge |
Diagnostic XY framing with recovered translation/scale/Z Euler placement, fallback node hierarchy, optional captured legacy camera, 32-bit GPU indices, diffuse descriptors, terrain base draws and synchronized teardown telemetry | Material phases, Land1 blend/microtexture/lightmaps, animated keys, FX, camera control and gameplay parity |
Future rendered fparkan-game mode |
Yes | Yes | Yes | covered-gpu plus original-evidence IDs |
Mission-driven render snapshot execution and pixel capture | Original-runtime parity for animation/FX/x87 without dedicated captures |
Rules
- IDs со смыслом
VK,GPU,DRAW,PIXEL,VALIDATIONилиRENDEREDна Stage 3+ не могут закрываться черезNullBackend,RecordingBackendилиVulkanPlanningBackend. covered-planningозначает command planning/capture evidence. Этот статус никогда не считается доказательством draw пикселей.covered-stubзарезервирован для явно помеченныхSTUBacceptance rows и не считается compatibility closure для FX lifecycle.covered-gpuтребует live native handles, реальный draw path и связанный renderer artifact: report, capture или approved pixel.
Current repository status
- Реальный Vulkan в репозитории имеет smoke triangle path и узкий static asset bridge.
VulkanStaticDrawRangeсохраняет исходныйBatch20.material_index; когда smoke запускается с--wear-root,--wear-archive,--wear-nameбез override, он дедуплицирует selectors, проходит каждый черезWEAR → MAT0 → Textures.lib, создаёт по одному image/descriptor set и бинит set непосредственно перед соответствующим indexed draw. Direct TEXM и--material-index— намеренно однотекстурные compatibility modes. Fresh GOGfortif.rlb::FR_L_MTP.mshподтверждает 237 batch draws, но его selectors все0, поэтому live report содержит один bindingMTP_01.0; unit contract подтверждает точное сопоставление двух разных selectors с разными descriptor sets. Это не доказывает material phase animation, lightmaps, alpha/depth/cull state, terrain, camera/node transforms или pixel approval. - Lightmap остаётся отдельным, не реализованным contract: оригинальный
World3D.dllэкспортирует самостоятельныйSetLightMapLibнаряду сSetTexturesLibиSetMaterialLib; WEAR содержит независимый блокLIGHTMAPS. Текущая документация не подтверждает связь этих slots сBatch20.material_indexили их UV/channel semantics, поэтому viewer не подменяет lightmap diffuse texture и не добавляет недоказанное binding. apps/fparkan-gameпо умолчанию выдаётrender-planningJSON report поверх synthetic window descriptor иVulkanPlanningBackend. Opt-in--backend static-vulkanсоздаёт nativewinitwindow. Для GOGMISSIONS/Autodemo.00/data.tmaон уже рендерит весь статический набор из восьми mission objects и 66 MSH components с diagnostic XY camera (or an optional captured legacy camera), доказаннымRz * Ry * Rxplacement transform, fallback node hierarchy и Land2 base terrain. Последний validation-clean текущий трёхкадровый запуск после применения placement transform в XY path имел 71 material descriptor,clip_visible_vertices=75543и readback hash5444013368935681345. Этоcovered-gpuдля ограниченного static-scene bridge, но не pixel parity и не доказательство material phase, Land1 blend, microtexture, lightmap, dynamic animation, FX, live camera selection или gameplay rendering.apps/fparkan-viewerсейчас inspection-only CLI и не открывает live Vulkan asset viewer.- Следующий реальный milestone для rendered acceptance:
VulkanAssetRendererс upload/draw/capture path для хотя бы одной оригинальной модели и одного terrain slice.