Rigged LOD by screen size + distance, vertex budget per card, decimated intermediate LODs; full detail returns up close (heavy sims only) #561

Closed
opened 2026-10-08 17:27:47 +00:00 by sky_line · 1 comment
Owner

Context (2026-10-08, PEAK Lounge, ~70 heavy human mesh avatars, RTX 5090): about 30 FPS, GPU-bound (~37 ms GPU).

  • Alpha-blended rigged meshes: 72.9M triangles per frame (pass 2 post_rig 8.5 ms).
  • Rigged pre-skin: 8.5 ms.
  • Static scene: 4.6M triangles in total.

The cull draws every rigged mesh at its finest resident LOD, however far away or small it is on screen. #559 (merged) adds LOD pressure when memory is short; this ticket is about quality-preserving rigged LOD for GPU time and VRAM.

Owner direction:

  • Pick rigged detail by screen size + distance. Use projected size of the avatar or mesh in pixels, with distance as a factor.
  • Limit how many vertices can load. Have a per-card vertex budget, and LOD down aggressively when a sim is extremely heavy.
  • Something fancy: a GPU decimation / "un-subdivide" step that keeps the same-ish LOD silhouette but shrinks its VRAM and vertex cost.
    • Options: meshoptimizer simplification at ingest, building our own intermediate LODs between the creator's LODs, or GPU cluster LOD.
    • Watch for skin weights, UV seams and normals.
  • Only kicks in on extremely heavy sims, per card. Thresholds come from the card's VRAM/GPU tier and measured frame cost; normal scenes keep full detail.
  • Bring full detail back as the camera gets closer, smoothly and without popping (hysteresis), so fidelity holds up close.

Also:

  • Treat alpha-blended rigged mesh (hair, clothing layers) as the main cost driver.
  • Consider alpha-to-mask for rigged mesh (auto-mask already exists for static) to move it off the expensive blend path.
  • Integrate with #559's tiers and pressure controller (one controller, not two).

Done when: at that venue the frame time drops a lot (target: pass 2 post_rig and pre-skin each well under half), with no visible loss on nearby avatars, no popping when you walk toward someone, and unchanged results in normal scenes.

**Context (2026-10-08, PEAK Lounge, ~70 heavy human mesh avatars, RTX 5090):** about 30 FPS, GPU-bound (~37 ms GPU). - Alpha-blended rigged meshes: **72.9M triangles per frame** (pass 2 `post_rig` 8.5 ms). - Rigged pre-skin: 8.5 ms. - Static scene: 4.6M triangles in total. The cull draws every rigged mesh at its **finest resident LOD**, however far away or small it is on screen. #559 (merged) adds LOD *pressure* when memory is short; this ticket is about **quality-preserving rigged LOD for GPU time and VRAM**. **Owner direction:** - **Pick rigged detail by screen size + distance.** Use projected size of the avatar or mesh in pixels, with distance as a factor. - **Limit how many vertices can load.** Have a per-card vertex budget, and LOD down aggressively when a sim is extremely heavy. - **Something fancy:** a GPU decimation / "un-subdivide" step that keeps the *same-ish* LOD silhouette but shrinks its VRAM and vertex cost. - Options: meshoptimizer simplification at ingest, building our own intermediate LODs between the creator's LODs, or GPU cluster LOD. - Watch for skin weights, UV seams and normals. - **Only kicks in on extremely heavy sims, per card.** Thresholds come from the card's VRAM/GPU tier and measured frame cost; normal scenes keep full detail. - **Bring full detail back as the camera gets closer**, smoothly and without popping (hysteresis), so fidelity holds up close. **Also:** - Treat alpha-blended rigged mesh (hair, clothing layers) as the main cost driver. - Consider alpha-to-mask for rigged mesh (auto-mask already exists for static) to move it off the expensive blend path. - Integrate with #559's tiers and pressure controller (one controller, not two). **Done when:** at that venue the frame time drops a lot (target: pass 2 post_rig and pre-skin each well under half), with no visible loss on nearby avatars, no popping when you walk toward someone, and unchanged results in normal scenes.
sky_line added this to the Slipstream project 2026-10-08 17:27:47 +00:00
Author
Owner

Shipped in a published release and tested; closing (testing-lane sweep 2026-10-11).

Shipped in a published release and tested; closing (testing-lane sweep 2026-10-11).
sky_line 2026-10-11 13:25: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#561
No description provided.