docs(render): validate live camera capture ABI

This commit is contained in:
2026-07-18 18:30:45 +04:00
parent d9ccf7f64d
commit 99a6caf06a
+19
View File
@@ -1420,6 +1420,16 @@ byte-identical to the active Terrain outer camera's selector-0 block. This
proves ownership and the D3D7 boundary, while keeping the earlier proves ownership and the D3D7 boundary, while keeping the earlier
`CBufferingCamera` FOV=`1.04` as a distinct upstream interface value. `CBufferingCamera` FOV=`1.04` as a distinct upstream interface value.
The live GOG layout is now independently repeatable without invoking any game
method: `Terrain.dll + 0x7355c` contains the current camera interface pointer,
whose vtable relocates to `Terrain.dll` RVA `0x665b4`. Its selector-0 block
starts with one 32-bit internal tag at interface `+28`; the actual sixteen
row-major matrix words begin at `+32`. Captures for `RawCameraTransform` must
therefore contain those sixteen payload words, not the tag. A passive AutoDemo
sample produced a finite affine camera matrix and passed through the offline
Vulkan adapter as source-world geometry, rather than relying on a guessed
identity view.
The Vulkan static path now accepts this recovered camera as The Vulkan static path now accepts this recovered camera as
`VulkanStaticCamera`. It composes the row-major D3D7 result as `VulkanStaticCamera`. It composes the row-major D3D7 result as
`view * projection`, uploads its 64 bytes through a vertex-stage push constant, `view * projection`, uploads its 64 bytes through a vertex-stage push constant,
@@ -1479,6 +1489,15 @@ is the base of the `0x1A4` camera object (vtables at `+0` and `+4`), while
with its own vtable. This capture format deliberately preserves the former with its own vtable. This capture format deliberately preserves the former
base-object interpretation and does not invent camera ownership. base-object interpretation and does not invent camera ownership.
A three-frame GOG AutoDemo run with one such read-only capture selected the
`legacy-d3d7-capture` path, rendered all eight mission roots / 66 MSH
components plus terrain, reported 5,226 vertices inside the recovered clip
volume, produced a 7,372,800-byte readback with FNV-1a
`1737487240747766901`, and ended with zero Vulkan validation warnings and
errors. This validates the offline handoff for one captured instant; it does
not claim live camera tracking, material parity, or an original-frame pixel
comparison.
The first bounded launch showed that repeated fingerprinting, rather than The first bounded launch showed that repeated fingerprinting, rather than
Vulkan initialization, was the load-path bottleneck: each new MAT0/TEXM request Vulkan initialization, was the load-path bottleneck: each new MAT0/TEXM request
re-opened an already decoded archive and re-hashed its entire source file. re-opened an already decoded archive and re-hashed its entire source file.