Skin weights: 16 B -> 10 B per rigged vertex (8-bit joints + 3x16-bit weights, 4th implied) #582

Closed
opened 2026-10-09 01:49:14 +00:00 by sky_line · 1 comment
Owner

Rigged vertex weights are stored as 4 floats (16 B; LL encoding: integer part = joint index, fractional part = weight). In a heavy region the w share of geom is about 422 MB.

Format

  • 4 × u8 joint index.
  • 3 × u16 unorm weight; the 4th is 1 minus the sum.
  • 10 B per vertex.

This is lossless against the SL asset format (8-bit joint, 16-bit weight). Joint counts per skin are at most about 110. Identical source weights quantize identically, so seams between meshes are unaffected.

Scope

  • Every consumer of the weight stream:
    • CPU mirror (MirrorWeight)
    • VK packer
    • clean_preskin.comp
    • decimator (#561)
    • shadow-caster LOD matching
    • pick skinning
    • rigged BLAS inputs
    • system-avatar raw slots
  • Weight normalisation must match the current float path.

Done when

  • w in the mesh: / geom #573 log lines drops to about 62.5%.
  • Rigged avatars deform identically, including fingers, faces and body/head seams.
Rigged vertex weights are stored as 4 floats (16 B; LL encoding: integer part = joint index, fractional part = weight). In a heavy region the `w` share of `geom` is about 422 MB. ## Format - 4 × u8 joint index. - 3 × u16 unorm weight; the 4th is 1 minus the sum. - 10 B per vertex. This is lossless against the SL asset format (8-bit joint, 16-bit weight). Joint counts per skin are at most about 110. Identical source weights quantize identically, so seams between meshes are unaffected. ## Scope - Every consumer of the weight stream: - CPU mirror (`MirrorWeight`) - VK packer - `clean_preskin.comp` - decimator (#561) - shadow-caster LOD matching - pick skinning - rigged BLAS inputs - system-avatar raw slots - Weight normalisation must match the current float path. ## Done when - `w` in the `mesh:` / `geom #573` log lines drops to about 62.5%. - Rigged avatars deform identically, including fingers, faces and body/head seams.
sky_line added this to the Slipstream project 2026-10-09 01:49:14 +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:13 +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#582
No description provided.