Filter body-overlay rows on TBC Anniversary#573
Open
kandrwmrtn wants to merge 1 commit into
Open
Conversation
On the wow_anniversary (TBC Classic Anniversary, build 2.5.5.67852) client, ItemDisplayInfoMaterialRes ships rows that don't match how the items render in-game: 1. Many helms, shoulders, weapons, and cape items have body section overlay rows (apparent legacy hood/cowl/scabbard data) that the bake layers onto the character composite. These slots render entirely as attached M2 models in-game, so the overlays produce visible chest/leg bleed-through that doesn't exist in the actual game client. 2. Many belts, boots, gloves, and other accessory items have set-mate sharing rows that point at the matching chest piece's BLP rather than a piece-specific texture. The bake faithfully draws the shared BLP onto the canvas, overpainting the chest item's bake with a near-identical-but-not-quite chest texture. The most visible case is Belt of the Guardian (item 30034), where the belt's only ItemDisplayInfoMaterialRes row is section 4 (TorsoLower) pointing at plate_a_01black_chest_tl_u.blp; with no actual belt-strip art referenced anywhere in the modern MaterialRes data, the bake produces "chest texture in belt region" instead of the belt visual. The legacy filename-prefix lookup that the real client appears to use to fill in the missing belt/glove/etc. textures isn't implemented in wow.export, so we can't reconstruct the correct overlays for these items. Filter the spurious rows instead: M2-only slots skip the body-overlay loop entirely, and each remaining slot is restricted to the body sections it actually paints in-game. Gated by Product === 'wow_anniversary' to scope the change to where it was empirically validated. Other Classic flavors very likely have the same legacy data shape, but I don't have a repro on hand to confirm; broadening the gate is a one-line change once someone does. See Kruithne#426 for the existing "belt/skirt/pants show default skin" report this addresses. Repro and validation: TBC Anniversary client, Blood Elf male, Crystalforge Battlegear paladin set + Belt of the Guardian. Before: Crystalforge Faceguard equip alone produces plate_a_01crusader_* chest/leg loads in the runtime log and visible chest art on the body; Belt of the Guardian alone produces a chest BLP painted onto the torso with no visible belt strip. After: helm equip touches only head M2 attachments; belt equip contributes nothing to the body composite (chest item renders unobstructed; belt strip is not reconstructed -- see the open issue).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
On the wow_anniversary (TBC Classic Anniversary, build 2.5.5.67852) client, ItemDisplayInfoMaterialRes ships rows that don't match how the items render in-game:
Many helms, shoulders, weapons, and cape items have body section overlay rows (apparent legacy hood/cowl/scabbard data) that the bake layers onto the character composite. These slots render entirely as attached M2 models in-game, so the overlays produce visible chest/leg bleed-through that doesn't exist in the actual game client.
Many belts, boots, gloves, and other accessory items have set-mate sharing rows that point at the matching chest piece's BLP rather than a piece-specific texture. The bake faithfully draws the shared BLP onto the canvas, overpainting the chest item's bake with a near-identical-but-not-quite chest texture. The most visible case is Belt of the Guardian (item 30034), where the belt's only ItemDisplayInfoMaterialRes row is section 4 (TorsoLower) pointing at plate_a_01black_chest_tl_u.blp; with no actual belt-strip art referenced anywhere in the modern MaterialRes data, the bake produces "chest texture in belt region" instead of the belt visual.
The legacy filename-prefix lookup that the real client appears to use to fill in the missing belt/glove/etc. textures isn't implemented in wow.export, so we can't reconstruct the correct overlays for these items. Filter the spurious rows instead: M2-only slots skip the body-overlay loop entirely, and each remaining slot is restricted to the body sections it actually paints in-game.
Gated by Product === 'wow_anniversary' to scope the change to where it was empirically validated. Other Classic flavors very likely have the same legacy data shape, but I don't have a repro on hand to confirm; broadening the gate is a one-line change once someone does.
Repro and validation: TBC Anniversary client, Blood Elf male, Crystalforge Battlegear paladin set + Belt of the Guardian. Before: Crystalforge Faceguard equip alone produces plate_a_01crusader_* chest/leg loads in the runtime log and visible chest art on the body; Belt of the Guardian alone produces a chest BLP painted onto the torso with no visible belt strip. After: helm equip touches only head M2 attachments; belt equip contributes nothing to the body composite (chest item renders unobstructed; belt strip is not reconstructed -- see the open issue).