Cluster LOD 1a: ingest -- clusterize + DAG build, attribute/weight-aware, disk cache #744

Closed
opened 2026-10-13 01:57:39 +00:00 by sky_line · 2 comments
Owner

Part of #642. Wave 1. Depends on the wave-0 contract.

  • Split LOD0 of each mesh face into clusters; build the DAG (group neighbours, simplify with the group border locked, re-split) on worker threads, with monotonic errors and nested bounds.
  • Clusters never cross material / face boundaries; weld-boundary vertices (#641) and layer-contact regions (#611) locked.
  • Attribute- and skin-weight-aware simplification (see #618); per-cluster joint-stretch bound for animated error.
  • Pack into fixed-size pages, coarse to fine; on-disk cache keyed by mesh asset + face + builder version, with a byte cap and LRU (pattern of #274).
  • Budgeted so a crowded arrival never stalls the frame; stats for build time, queue, cache hit rate and size.

Rules for this work (all sub-tickets):

  • Behind RenderVKClusterLOD (default off). With it off, the existing rigged LOD controller (#561 / #613) and every current path are untouched.
  • Newest path first, chosen by extension presence; every slower path is an additive fallback, forceable on the newest card via RenderVKClusterForceTier.
  • Failures never crash: a missing page / failed allocation falls back to the coarser parent cut; no unbounded growth (fixed pools, byte budgets, live/cap/peak stats).
Part of #642. **Wave 1.** Depends on the wave-0 contract. - Split LOD0 of each mesh face into clusters; build the DAG (group neighbours, simplify with the group border locked, re-split) on worker threads, with monotonic errors and nested bounds. - Clusters never cross material / face boundaries; weld-boundary vertices (#641) and layer-contact regions (#611) locked. - Attribute- and skin-weight-aware simplification (see #618); per-cluster joint-stretch bound for animated error. - Pack into fixed-size pages, coarse to fine; on-disk cache keyed by mesh asset + face + builder version, with a byte cap and LRU (pattern of #274). - Budgeted so a crowded arrival never stalls the frame; stats for build time, queue, cache hit rate and size. **Rules for this work (all sub-tickets):** - Behind `RenderVKClusterLOD` (default off). With it off, the existing rigged LOD controller (#561 / #613) and every current path are untouched. - Newest path first, chosen by extension presence; every slower path is an additive fallback, forceable on the newest card via `RenderVKClusterForceTier`. - Failures never crash: a missing page / failed allocation falls back to the coarser parent cut; no unbounded growth (fixed pools, byte budgets, live/cap/peak stats).
sky_line added this to the Slipstream project 2026-10-13 01:57:39 +00:00
Author
Owner

Agent working on this (wave 1, on the wave-0 contract from #743).

Agent working on this (wave 1, on the wave-0 contract from #743).
Author
Owner

Fixed in 1.4.1 (34ada93191). Reopen if you still see it.

Fixed in 1.4.1 (34ada93191). Reopen if you still see it.
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#744
No description provided.