LL perf (Avatar/animation): updateVisualParams walks every parameter, and morphs run for invisible body parts #329

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

From the LL-origin inefficiency audit (finding A4). File/line references are from commit 0229f8872c; re-locate them before working.

updateVisualParams walks every parameter, and morphs run for invisible body parts

  • Callers: physics, LLEmote (every frame while active, plus a getVisualParam("Express_Closed_Mouth") string lookup, llemote.cpp:107-116), hand blending, lip sync.
  • The walk: getVisualParamWeight("male") does a string copy, lowercase and string-table hash (llcharacter.cpp:339-348), then a full mVisualParamIndexMap walk (:470-487).
  • Wasted morphs: LLPolyMorphTarget::apply morphs system-body verts even when the BOM layer is invisible under a mesh body (llpolymorph.cpp:569-652) and bumps mMorphGen, which triggers a re-upload.
  • Fix: dirty-param list; cache param pointers; skip vertex morphs for invisible parts but keep volume morphs.
  • Likely. M.

Verify the cost (profile or timer) before and after changing it.

From the LL-origin inefficiency audit (finding A4). File/line references are from commit 0229f8872c; re-locate them before working. **`updateVisualParams` walks every parameter, and morphs run for invisible body parts** - **Callers:** physics, `LLEmote` (every frame while active, plus a `getVisualParam("Express_Closed_Mouth")` string lookup, `llemote.cpp:107-116`), hand blending, lip sync. - **The walk:** `getVisualParamWeight("male")` does a string copy, lowercase and string-table hash (`llcharacter.cpp:339-348`), then a full `mVisualParamIndexMap` walk (`:470-487`). - **Wasted morphs:** `LLPolyMorphTarget::apply` morphs system-body verts even when the BOM layer is invisible under a mesh body (`llpolymorph.cpp:569-652`) and bumps `mMorphGen`, which triggers a re-upload. - **Fix:** dirty-param list; cache param pointers; skip vertex morphs for invisible parts but keep volume morphs. - Likely. M. Verify the cost (profile or timer) before and after changing it.
sky_line added this to the Slipstream project 2026-10-06 15:04: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:24:54 +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#329
No description provided.