aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/tomes/05-render.md19
1 files changed, 19 insertions, 0 deletions
diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md
index 7bdabf4..82ed843 100644
--- a/docs/tomes/05-render.md
+++ b/docs/tomes/05-render.md
@@ -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
`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
`VulkanStaticCamera`. It composes the row-major D3D7 result as
`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
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
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.