Debug view: colour surfaces by texture mip / resolution, plus a hover texture inspector #685

Closed
opened 2026-10-11 14:29:07 +00:00 by sky_line · 1 comment
Owner

We need a quick way to answer "is this texture blurry because the asset is low-res, or because we're showing it below full resolution, and why?".

1. Debug view (a new RenderVKDebugView index)
Colour each surface by how far its base-colour texture's resident level is below the asset's full resolution, blended over the surface brightness like view 19:

  • green: full resolution resident
  • yellow: 1 mip below full
  • orange: 2 mips below
  • red: 3 or more below
  • blue / cyan tint: the asset itself is small (for example <= 256 px) and is resident at full resolution, i.e. "bad texture, not our fault"
  • dark: no texture

Optionally, a second mode colours by the requested level against the resident level (is the request satisfied, or still waiting / budget-limited), so a streaming lag shows up separately from a deliberate bias. Include the other maps (normal, ORM, emissive) through a selector setting if that's cheap.

2. Hover / pick inspector
For the face under the cursor (a debug floater, or a hover-text mode), show:

  • texture UUID and the asset's full dimensions
  • the decoded discard level, the GPU-resident mip, and the mip the GPU cull requested (demand)
  • the reason the resident level is below full:
    • demand (on-screen size, RenderVKTexDemandBias)
    • global pressure/budget bias (RenderVKTexPressureMaxBias, VRAM budget)
    • an upload or residency backlog
    • adaptive compression's reduced-residency choice
  • storage format (RGBA8 / BC1 / BC3 / BC7 / constant), the compression level chosen and why
  • the texel density at the face (texels per screen pixel)

Notes

  • Read the real Vulkan residency state; don't infer it from LL's legacy LLViewerFetchedTexture fields.
  • Debug overlays must follow the GPU-driven design (no per-face CPU draws).
  • Add both to the Develop menu, and document the colours in the setting comment as the other debug views do.

Related: #684, the umbrella ticket for wiring the dead GL-era debug tools.

We need a quick way to answer "is this texture blurry because the asset is low-res, or because we're showing it below full resolution, and why?". **1. Debug view (a new `RenderVKDebugView` index)** Colour each surface by how far its base-colour texture's **resident** level is below the asset's full resolution, blended over the surface brightness like view 19: - **green:** full resolution resident - **yellow:** 1 mip below full - **orange:** 2 mips below - **red:** 3 or more below - **blue / cyan tint:** the asset itself is small (for example <= 256 px) and is resident at full resolution, i.e. "bad texture, not our fault" - **dark:** no texture Optionally, a second mode colours by the *requested* level against the resident level (is the request satisfied, or still waiting / budget-limited), so a streaming lag shows up separately from a deliberate bias. Include the other maps (normal, ORM, emissive) through a selector setting if that's cheap. **2. Hover / pick inspector** For the face under the cursor (a debug floater, or a hover-text mode), show: - texture UUID and the asset's full dimensions - the decoded discard level, the GPU-resident mip, and the mip the GPU cull requested (demand) - the **reason** the resident level is below full: - demand (on-screen size, `RenderVKTexDemandBias`) - global pressure/budget bias (`RenderVKTexPressureMaxBias`, VRAM budget) - an upload or residency backlog - adaptive compression's reduced-residency choice - storage format (RGBA8 / BC1 / BC3 / BC7 / constant), the compression level chosen and why - the texel density at the face (texels per screen pixel) **Notes** - Read the real Vulkan residency state; don't infer it from LL's legacy `LLViewerFetchedTexture` fields. - Debug overlays must follow the GPU-driven design (no per-face CPU draws). - Add both to the Develop menu, and document the colours in the setting comment as the other debug views do. Related: #684, the umbrella ticket for wiring the dead GL-era debug tools.
sky_line added this to the Slipstream project 2026-10-11 14:29:07 +00:00
Author
Owner

Shipped in 1.3.0 Beta 5 (v1.3.0-beta.5). Closing.

Shipped in **1.3.0 Beta 5** (v1.3.0-beta.5). Closing.
sky_line 2026-10-11 16:06:10 +00:00
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#685
No description provided.