Files
healer-man/docs/ROM_RESIDUAL_RENDERING_REVIEW_2026-10-06.md
T
2026-10-07 13:05:04 -04:00

198 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RoM residual rendering and Raksha route review — 2026-10-06
This follows the completed all-30 texture/lighting pass in
`ROM_ENVIRONMENT_REVIEW_2026-10-06.md`. The user requested continuation on the
remaining Origin root cards and Raksha camera/route defects. Evidence uses new
paths under `artifacts/playtest/rom-residual-review-20261006/`; the accepted v5
build, source assets, manifests and screenshots remain historical baselines.
Final status on 2026-10-07: Raksha's corrected source entrance/navigation package
and reviewed local build are installed. Ordinary entry/first-step walking and
camera checks pass. Origin's source-opaque dark root card and Raksha's disconnected
Shadoj route remain unresolved; this follow-up does not certify full clears.
## Starting evidence
- Origin's `elves_gaint_roots_village` material requests native alpha test 192,
but its raw DDS, prepared PNG and shipping KTX mips are fully opaque. The prior
exporter omits vertex color/alpha and face-culling data. A fresh source review
found `IRuMorphTarget::GetDiffuse()` and native shader multiplication by vertex
RGBA; the exact affected meshes and values require verification before a patch.
No black-keyed alpha or guessed blend semantics are authorized by this evidence.
- Raksha's authoritative source entrance `[1857,297,1161]` maps to local
`[-0.020312,21.013313,11.334656]`. Packaged navigation projected it to
`[0.021786,10.664467,17.560761]`, a 12.077449 m displacement. That large shift
requires source-floor and runtime attribution; it is not yet proof of the
camera or walking failure's complete cause.
- Shared camera obstruction currently combines physical sphere sweeps with a
dedicated wall/pillar sight ray. Raksha also mounts its navigation GLB as
physical ground, a workaround introduced before its WDB floor was verified.
Any correction must distinguish source geometry, derived navigation and
camera-only obstruction, while preserving ordinary right-drag input.
## Scope and validation
Luna subprocesses independently inspect native material streams, actual camera
framing and source/navigation/collision correspondence. Root owns shared runtime
changes and asset promotion. Source experiments remain staged until exact
identities, material semantics and preservation proofs are reviewed.
Ordinary UI/keyboard checks must verify Raksha entry and reachable movement,
Origin material rendering, and Stockade fallback where shared runtime changes
apply. Runtime stores remain read-only in gameplay proofs. The review does not
certify full clears, combat balance, or a bridge to Origin's disconnected
Falynum approach. Final focused checks, build and release hygiene follow the
actual implementation.
## Confirmed follow-up findings
The fresh, hash-matched `gaint_tree_a.ros` probe reports vertex format 9, no
`ruVERTEXFORMAT_DIFFUSE`, and no diffuse-color pointer on material 1's mesh.
There is no omitted vertex alpha on this exact root card. The native standard
shader defaults to one-sided `D3DCULL_CCW` without a material override, whereas
the GLB and runtime draw both sides. The exact-face A/B and reverse-side control
confirm that Three FrontSide matches its native winding. However, the dark face
visible from the recorded leg-18 walking location is front-facing and remains
under FrontSide. Culling therefore does not fix that panel. Its sole native
texture channel is diffuse, and DDS/PNG/KTX alpha remains fully opaque. No
vertex mask, extra opacity channel or color-key rule supports a transparency
patch. Origin remains unchanged; this residual appearance is unresolved.
The culling comparison is an isolated environment-preview diagnostic at a
recorded walking location, not a new ordinary gameplay run. Exact source,
served-asset and screenshot identities are recorded in
`origin/culling-ab/origin-roots-village-culling-conclusion.json` under this
review's evidence directory.
Raksha's bad runtime position has no visible floor below it. The visible deck
above it is at Y≈13.408, with physical collision at Y≈13.412; the camera stops
0.320 m below it, matching its radius/gap. At the authored XZ the visible and
physical source floors are at Y≈20.770/20.765. Ordinary right-drags confirm the
camera is responding correctly within the misplaced volume.
The native collision floor in chunk 003 (`01_1_mesh_0`) has interleaved POSITION
data (stride 8, offset 0). Recast's Three adapter copies the backing array and
steps by three floats, while the pipeline's inspection correctly uses attribute
getters. Generation therefore consumes different coordinates than its own
input report. The durable fix unpacks positions in memory before generation;
source collision and visual bytes remain unchanged. Corrected navigation and
entrance candidates require staging, route checks and ordinary gameplay review.
## Packaging gate
The corrected full bake restores the entry to
`[-0.020312,20.837463,11.334656]`, 0.17585 m from its Lua source point. Exact
Detour queries connect the first 2 m and 10 m forward; the route to Shadoj
remains partial. Its complete topology contains 137,575 polygons, 268,162 links
and 588,703 detail triangles, exceeding the runtime's existing limits of
50,000/100,000/200,000. A packaged-asset integration test caught this before a
new build was installed. The first local asset promotion was restored from its
exact backups; both promotion and rollback proofs remain in the evidence tree.
The full bake remains diagnostic evidence. Shipping selection must retain whole
actual Detour components tied to source entrance/population anchors, preserve
their exact directed links, and pass all runtime limits. It must not raise
budgets or connect disconnected islands. That smaller candidate and ordinary
gameplay validation are pending.
Source-anchor analysis confirms the source-to-local transform agrees with all
123 active combat/boss rows within 7.5e-7 m. Of 251 entrance/support/population
anchor records (including duplicates), only 29 are within the existing 4 m
population projection limit of the corrected full navigation. All accepted
faces point upward. The other 222 must remain unmatched; snapping them to remote
surfaces is not supported. The source entrance and Shadoj are within 0.176 m and
0.034 m respectively, but their components remain disconnected.
The workspace-wide prebuild reached the performance audit and failed on an
unrelated, concurrently modified Utgarde Pinnacle visual asset: 16,277 draw
calls with 14,695 unbatched savings against its existing 14,018 savings ceiling.
No RoM visual changed. The previously published immutable Utgarde asset passes
the same budget (16,277/14,018), as recorded in
`utgarde-frozen-release-budget-proof.json`. This pass will publish only the three
Raksha navigation/metadata files and preserve other manifest entries. The
workspace-wide audit failure must not be described as a complete prebuild pass.
## Reviewed source-anchored package
The fresh v2 bake uses the same path as normal environment regeneration:
`lib/source-navigation-anchors.mjs` transforms native recipe points with the
full inverse WDB placement; `recast-bake.mjs` queries actual Detour references
within explicit limits, rejects missing required anchors, then retains complete
weak components. Lua entry must be within 0.5 m and Shadoj within 0.25 m. Other
native anchors retain the existing 4 m limit. No runtime budget is raised.
V2 contains six complete components, 239 polygons, 514 actual directed links,
653 detail triangles and 1,492 spatial-index references. The exact query input
has 128 records (126 native support coordinates plus the two required guards):
16 are retained, 112 remain unmatched. This differs from the preliminary
251-record diagnostic, which duplicated population/support rows. Excluded areas
are not individually proven decorative; this is sparse source-anchor coverage,
not full-dungeon navigation.
Independent review matched every retained polygon, triangle coordinate and
directed link against the full bake. V1/v2 BIN chunks are identical; v2 preserves
source coordinates/evidence/required flags in JSON provenance. Required entry
and boss snaps are 0.17585/0.03368 m. Actual runtime graph checks pass for 2 m and
10 m forward routes; entry-to-Shadoj remains disconnected.
The reviewed navigation SHA is
`77b2b22bb89474bfe2bd9974d9f58cd680634d4f7feef6163723bb8f3afe6117`
(166,048 bytes). Shipping/canonical navigation and reports plus import metadata
were promoted with a separate exclusive backup. Visual and all seven collision
files are byte-identical to their baselines. Registry regeneration changes only
Raksha's navigation identity/counts and entrance/area center; source yaw remains.
The scoped content update changes three Raksha files and preserves all 21,602
other manifest entries, frozen as `content-151109efcb20cc00` with manifest SHA
`40d5c9e16d8045b8c240d57ca52017aaf95e423c44f96507aceb02285dca693c`.
Focused checks pass: 13 Node pipeline tests, 12 runtime tests, and ten Raksha
GLBs with zero validator errors/warnings (230 known tooling messages excluded).
TypeScript and the isolated production Vite build pass (11.26 s). Static
compression produces 258 files from 129 sources; release-bundle verification
passes with 126 chunks and 5,569 bootstrap objects/63,571,471 stored bytes. Build
index SHA is `8ca382b4ad8919ba100ee1e0ee6c7d64a30b87c7acfbf6d65fc8184eb10c9958`.
## Final gameplay and installation
The fresh ordinary Raksha entry is ready/grounded at
`[-0.020324,20.857564,11.334658]`. Scene rays hit the actual source deck near
Y=20.770, and then its collision-backed initial slope. Four WASD targets are
reached; all eight movement samples are grounded and browser errors are zero.
Movement completion is 8.554469 m; the later post-release settled screenshot
snapshot is 8.876903 m, also grounded. These are separate timestamps, not two
route runs. Standard/High use 150% resolution, 16× filtering and authored fill.
Held right-drag works without pointer lock, and no overhead obstruction is
reported within 40 m. Root reviewed the final entry/step screenshots. The blue
exterior background remains visible in side-facing views; broader scenery and
the route to Shadoj are not certified by this eight-metre check.
The same-build graphics fallback selects **Bazil Thredd** in Stockade Cellblock
Rush, validates default 150% and High 200%, plus the Forsaken Abbey comparison,
with zero errors. Root reviewed the High Stockade capture. The later complete
performance audit is green for 106 assets with 60 known exceptions and zero
regressions: the earlier transient unrelated Utgarde failure has cleared. This
does not retroactively turn the earlier prebuild invocation into a passing run.
The reviewed build is installed as local `dist`; all 5,967 files match it
byte-for-byte. The actual previous dist is preserved in the new exclusive
`pre-bounded-raksha-dist-backup` (prior index SHA
`76096ccd244c96b8163bd179858f3b25f53f29fc13c0a7a03a2edcf0da948a5e`).
Earlier asset/build backups remain intact. Local installation proof is
`local-build-install-proof.json`; live and frozen content manifests match at
the final check. No remote deployment or full-clear/balance certification is
implied.
Final evidence paths under this review directory:
- `raksha-route/source-anchored-v2/`: fresh bake, exact geometry/link/source
preservation and runtime graph fixtures.
- `raksha-final-gameplay/qa-report.md` and `frames/`: ordinary controls,
graphics settings, source-floor/camera rays and frozen build identity.
- `graphics-fallback-final/`: selected Stockade boss/settings and screenshots.
- `source-anchored-navigation-promotion-proof.json`,
`bounded-navigation-content-proof.json`, `local-build-install-proof.json`:
guarded asset/content/build installation identities and backups.
- `release-check-final.log`: final repository text hygiene, including untracked
files. The check passed across 81 changed paths after the final documentation
update.