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

9.2 KiB
Raw Blame History

WoW dungeon texture and lighting review — 2026-10-06

The October 7 continuation supersedes the Utgarde Pinnacle and Shadowfang visual identities in this historical pass and adds the rendered native-terrain pilot and source-lighting investigation.

Coverage and player access

Three GPT-6 Luna agents at extra-high reasoning reviewed texture imports, lighting inheritance, and shared graphics access. WoW and RoM both use ProductionDungeon, prepareDungeonMaterial, applyDungeonMeshGraphics, and the renderer-scoped KTX2 loader. The Options panel exposes render resolution, 1×/4×/16× filtering, Off/Standard/High shadows, and ambient fill for both sources. High follows the camera and enables imported environment/creature shadow casters; Standard retains the lighter explicit scene-object caster policy. Original client lighting/lightmaps are not reconstructed by these controls.

The isolated asset review loaded all 54 WoW source environments and the default Cellblock Rush slice, using shipped GLB/KTX2 data and production material, filtering, asset-resolution, and directional-light helpers. All 55 entries loaded without runtime errors; every inspected texture received the supported 16× filtering level, and High light targets followed the camera. The run generated 271 captures and ten review sheets under artifacts/playtest/wow-environment-quality/. Entrance, reverse-entrance, midpoint and final boss positions are asset QA; they do not establish traversal, combat, collision, or full room-by-room coverage.

Lighting correction

materializeBiteSizedLayout previously inherited presentation from its fallback baseline even when a randomized/custom selection used a different dungeon. It now uses the selected source's complete presentation, including local point lights, when that baseline belongs elsewhere. Matching baselines retain their deliberate tuning. Explicit contentSourceDungeonId takes precedence over the ID-based fallback. The existing six WoW palettes and reviewed Stockade lighting remain the full-source policy.

Texture and geometry safeguards

The WoW optimizer used the default automatic texture/simplification pass and an explicit 2048-pixel texture cap. It now disables both mesh simplification and automatic texture compression/resizing before the separate KTX2 encoder, matching the source-preservation boundary established for RoM. Meshopt and instancing remain enabled. A final packing pass after texture encoding retains EXT_meshopt_compression, which the texture CLI otherwise removes. An actual CLI fixture retains a 4096×8 image and 1,152 atlas triangles; its simplification control demonstrates topology loss.

scripts/dungeon-pipeline/audit-wow-visual-quality.mjs compares shipped visuals with canonical staged conversion inputs. Its report records image dimensions, codec/role/sampler inventory, source-to-shipped UV metrics, and textured versus untextured material coverage. The authored Wailing Caverns runtime visual is separate from its generated campaign package and must be audited at src/assets/game/dungeons/wailing-caverns/wailing-caverns-visual.glb.

Shadowfang Keep was the substantial source-to-shipped topology regression: 397,882 textured triangles versus 465,796 in the conversion input, with 445 additional UV-degenerate and 616 additional rank-collapsed triangles. Its bounded repair restores 465,649 measured textured triangles and reduces those added defects to 23 and one, respectively. Remaining differences include packing/quantization tolerances and source-authored UV issues. All 287 texture payloads and dimensions are retained. The final repair is 8,566,408 bytes versus 15,987,464 before (about 46% smaller), with the same 103 GPU-instancing nodes. The source-pinned recipe simplifies only untextured ADT_Terrain and ADT_Liquid_B2 fallback primitives, enforcing a 380,000-triangle ceiling. It retains 370,077 such triangles versus 360,207 previously; every textured primitive accessor and source image hash remains unchanged before optimization. Normal Shadowfang regeneration uses this same preprocessor. Collision and navigation are outside this visual fix.

The installed local visual and regenerated descriptors agree on SHA-256 2c562fb61596a536d728385c4f2bdfdc3230f4f84ef40875b9a568e18a82ef9d. All 26 collision GLBs and navigation retained identical hashes across the publication step. The asset review then reloaded that installed visual.

The fully restored source candidate remains a diagnostic artifact: although smaller after packing, it restored unnecessary untextured terrain and increased the sampled rendered triangle count nearly fourfold. The accepted bounded version draws only 7.5–9.8% more triangles than before at the reviewed entrance, Springvale and Arugal viewpoints, with unchanged draw calls (188/131/208) and about 60 FPS in 3-second Edge samples. This is a capped desktop asset-renderer sample, not evidence for actors, physics, sustained gameplay or mobile headroom. The comparison lives under artifacts/playtest/wow-environment-quality/shadowfang-performance/.

Remaining visual limits

The audit resolves all 54 actual runtime visuals, including authored Wailing Caverns, with 8,099 KTX2 image entries and no fallback images. Canonical pre-optimization inputs are available for 53 environments; Wailing lacks that matching recovery input. All 7,980 source-matched image dimensions are retained, with no downsized image or 2048-cap hit. These measurements compare conversion inputs, not the raw client image pixels.

The source comparison found no fleet-wide texture downsize. The current WoW base-color inventory uses ETC1S KTX2; RoM's selective UASTC exceptions are source-specific and have not been indiscriminately applied to WoW. Preserving dimensions does not establish lossless compression or restore native detail that was absent from a conversion input.

Zul'Farrak, Ahn'kahet, Pit of Saron, and parts of the Caverns of Time captures show broad flat or incomplete-looking terrain. Zul'Farrak's source and shipped images retain all 382 dimensions, with matching textured-triangle counts. Both contain 1,374,820 untextured triangles, dominated by ADT_Terrain and ADT_Liquid_B2 materials. This is a pre-existing conversion/terrain-material gap rather than a texture-resolution failure in the optimizer. Some boss viewpoints face nearby geometry or show empty space, so those captures cannot certify the surrounding room. Preserve the earlier findings in dungeon-pipeline/WOW_ENVIRONMENT_REVIEW.md.

Verification and reproduction

The combined focused scene, graphics, lighting, water and bite-sized suite passed 118 tests. The pipeline fixtures passed five checks covering source dimension/topology preservation, safe material coverage, selective fallback simplification and descriptor preflight. The water loader includes a type-only clarification of GLTFLoader's primitive association index, which the installed GLTFReference declaration omits.

The normal Options smoke used a frozen copy of the last available production bundle. It entered Cellblock Rush, observed Bazil Thredd's intro, selected 200% resolution, 16× filtering and High shadows/fill, and carried the settings into Forsaken Abbey. Canvas scales were 1.5 by default and 2.0 for both High entries, with no page errors. Evidence and exact bundle identities are in artifacts/playtest/graphics-options/run-wow-access-2026-10-06/. That bundle is not proof of this task's new source lighting correction.

The final freshly built bundle was then frozen and checked separately in artifacts/playtest/graphics-options/run-wow-current-build-2026-10-06/. Its entry is index-BvFyaleo.js, built at 2026-10-06T17:39:29.274Z. It also selected Bazil Thredd, verified the four quality controls and carried 200% resolution into Forsaken Abbey with zero page errors. Root inspected the Options, WoW High and RoM High captures; textured surfaces and actor silhouettes are visible. This is an entry/settings smoke rather than encounter validation.

The final normal production build passes TypeScript, Vite, precompression and release-bundle verification. Texture/performance prebuild audits pass, including 106 visuals, 12,892 KTX2 images, zero fallback textures, and no performance-audit regressions. The release candidate hygiene check passes including untracked files. Earlier concurrent source errors were resolved before this final build. This pass does not deploy a production build.

node scripts/dungeon-pipeline/audit-wow-visual-quality.mjs
node --test scripts/dungeon-pipeline/optimize-environment.test.mjs scripts/dungeon-pipeline/audit-wow-visual-quality.test.mjs scripts/dungeon-pipeline/build-shadowfang-selective-visual.test.mjs scripts/dungeon-pipeline/apply-wow-visual-optimization.test.mjs
node scripts/dungeon-pipeline/serve-environment-preview.mjs
node scripts/playtest-wow-environments.cjs
node scripts/dungeon-pipeline/make-environment-review-sheets.mjs
node scripts/playtest-wow-visual-performance.cjs
node scripts/playtest-graphics-options.cjs --output-dir artifacts/playtest/graphics-options/<new-run>
npm run release:check

The preview server disables file watching so unrelated native build outputs cannot terminate it. --resume continues incomplete asset captures; specifying dungeon IDs refreshes those entries while preserving the other results.