PBR + BOM: other avatars show the IMG_USE_BAKED_* placeholder text instead of their bake #192

Closed
opened 2026-09-30 01:14:28 +00:00 by sky_line · 0 comments
Owner

Seen on: BladeTheProtector (Lightning) -- screenshot in-world 2026-09-29: body / head / legs / tail / wings show the Bakes-on-Mesh placeholder text ("IMG_USE_BAKED_LEFTARM", "..._UPPER", etc.) instead of the avatar's baked skin.

Why it shows now: before 1063b62646 (#145) other avatars' rigged textures were stuck at the 64 px floor, so the placeholder text blurred into flat grey. Now they load sharp and the text is readable.

Likely cause: the VK ingest substitutes the avatar's current bake only for legacy faces whose texture-entry ID is an IMG_USE_BAKED_* sentinel (llcleaningest.cpp ~1169 / ~1878, getBakedTextureForMagicId). His faces are PBR (RenderVKDumpAvatar: mat=PBR), where the base-colour texture comes from the glTF material (and possibly the TE's GLTF override). Nothing on that path checks isBakedImageId, so the sentinel asset itself is uploaded and sampled.

To do: in the PBR material resolution (LLCleanMaterialStore / uploadRealMaterialTextures, and wherever glTF overrides are applied), map IMG_USE_BAKED_* base-colour (and emissive?) textures to the wearer's bake like LL does for PBR BOM (LLFetchedGLTFMaterial / LLVOAvatar baked-texture lookups), keyed so a rebake refreshes it (the ingest signature already mixes the bake id + discard for legacy). Then re-dump with RenderVKDumpAvatar to confirm the map resolves to the bake.

Related: #145.

**Seen on:** BladeTheProtector (Lightning) -- screenshot in-world 2026-09-29: body / head / legs / tail / wings show the Bakes-on-Mesh **placeholder text** ("IMG_USE_BAKED_LEFTARM", "..._UPPER", etc.) instead of the avatar's baked skin. **Why it shows now:** before 1063b62646 (#145) other avatars' rigged textures were stuck at the 64 px floor, so the placeholder text blurred into flat grey. Now they load sharp and the text is readable. **Likely cause:** the VK ingest substitutes the avatar's current bake only for **legacy** faces whose texture-entry ID is an `IMG_USE_BAKED_*` sentinel (`llcleaningest.cpp` ~1169 / ~1878, `getBakedTextureForMagicId`). His faces are **PBR** (RenderVKDumpAvatar: mat=PBR), where the base-colour texture comes from the glTF material (and possibly the TE's GLTF override). Nothing on that path checks `isBakedImageId`, so the sentinel asset itself is uploaded and sampled. **To do:** in the PBR material resolution (LLCleanMaterialStore / uploadRealMaterialTextures, and wherever glTF overrides are applied), map `IMG_USE_BAKED_*` base-colour (and emissive?) textures to the wearer's bake like LL does for PBR BOM (LLFetchedGLTFMaterial / LLVOAvatar baked-texture lookups), keyed so a rebake refreshes it (the ingest signature already mixes the bake id + discard for legacy). Then re-dump with RenderVKDumpAvatar to confirm the map resolves to the bake. Related: #145.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sky_line/Slipstream#192
No description provided.