9.2 KiB
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.