aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-07-18 18:15:18 +0300
committerValentin Popov <valentin@popov.link>2026-07-18 18:15:18 +0300
commit273bd9e477fc5a3a87a38b20e53c46187c666def (patch)
tree5bce8cc350fc14a18c69e42b08afdca2110b20ed /docs
parent5c1ccae393379758a35ea54a0b6b9ab3184ad442 (diff)
downloadfparkan-273bd9e477fc5a3a87a38b20e53c46187c666def.tar.xz
fparkan-273bd9e477fc5a3a87a38b20e53c46187c666def.zip
feat(tools): capture live terrain shade cache
Diffstat (limited to 'docs')
-rw-r--r--docs/tomes/05-render.md20
1 files changed, 20 insertions, 0 deletions
diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md
index 5eef3ed..e0970c7 100644
--- a/docs/tomes/05-render.md
+++ b/docs/tomes/05-render.md
@@ -1735,6 +1735,26 @@ recovered lookup routine. Therefore a future runtime implementation must treat
cache availability as contextual and cannot dereference or prebuild the cache
solely from constructor state.
+`tools/capture-terrain-shade-cache.ps1` now makes the same evidence repeatable
+without debugger attachment. It discovers `Terrain.dll` with Toolhelp, opens
+only `PROCESS_QUERY_INFORMATION | PROCESS_VM_READ`, searches readable
+32-bit-process regions for the already proven cache vtable, and excludes the
+Terrain image itself because relocations there also contain that pointer value.
+It reports only addresses and count metadata; it does not alter the process or
+save game resources. On the unattended GOG AutoDemo process 5632 on 2026-07-18
+it found the live cache at `0x035C64B4`, with entry table `0x17284590` and
+exclusive count `3462`. Two adjacent passive captures retained the cache
+address/table/count but returned result views `0x0274BD89` and `0x008A60DC`.
+That changing result view is direct evidence that it is transient lookup
+state, not a persistent cache identity or a WEAR row. The observation narrows
+the next terrain task to profiling the cache's generated entries and their
+consumer; it still does not establish a Land1 blend equation.
+
+```powershell
+powershell -NoProfile -ExecutionPolicy Bypass -File `
+ tools\capture-terrain-shade-cache.ps1 -ProcessId <iron_3d-pid>
+```
+
The static Vulkan bridge now carries each contiguous face run as a separate
draw range keyed by the original packed `material_tag`; it neither reorders
triangles nor collapses the high byte. For the first usable visual layer, the