155 lines
9.2 KiB
Markdown
155 lines
9.2 KiB
Markdown
# WoW dungeon texture and lighting review — 2026-10-06
|
||
|
||
The [October 7 continuation](WOW_ENVIRONMENT_QUALITY_CONTINUATION_2026-10-07.md) 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.
|
||
|
||
```text
|
||
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.
|