perf(rendering): reconcile only changed attachments
This commit is contained in:
parent
6b56f4bef2
commit
b9cbf5e040
8 changed files with 246 additions and 14 deletions
|
|
@ -0,0 +1,45 @@
|
|||
# Slice H-a3 — equipped-child post-network reconciliation
|
||||
|
||||
## Preserved ordering
|
||||
|
||||
Retail live-object presentation still has two authority boundaries:
|
||||
|
||||
1. the complete parent-first attachment update after animation;
|
||||
2. post-network spatial reconciliation after accepted inbound mutations.
|
||||
|
||||
The second boundary was not deleted or delayed.
|
||||
|
||||
## Change
|
||||
|
||||
`EntityEffectPoseRegistry` now carries a monotonic change version for the
|
||||
current pose-owner lifetime. It advances only when root, indexed parts, part
|
||||
availability, or cell changes.
|
||||
|
||||
Each attached projection remembers the exact parent entity, pose version,
|
||||
draw/ancestor visibility, and parent cell used for its last composition.
|
||||
|
||||
- The animation-order pass remains a complete parent-first walk.
|
||||
- The post-network pass keeps transition retries but skips a child whose
|
||||
remembered parent presentation is unchanged.
|
||||
- A changed root recomposes its direct child; publishing that child's pose
|
||||
advances its version, so descendants update later in the same parent-first
|
||||
pass.
|
||||
- Hidden/NoDraw ancestry and cell changes participate even when the geometric
|
||||
pose itself is unchanged.
|
||||
- Pose failure still withdraws the same complete subtree.
|
||||
|
||||
The per-frame transition retry path no longer allocates dictionary `ToArray`
|
||||
snapshots. It copies key/value pairs into retained typed scratch lists, keeping
|
||||
the old snapshot-before-callback semantics.
|
||||
|
||||
## Gate
|
||||
|
||||
- Existing equip/unparent/reparent/rollback/pose-loss/teardown tests pass.
|
||||
- A root → child → grandchild test proves unchanged post-network reconcile
|
||||
performs zero compositions and a changed root performs exactly two in
|
||||
parent-first order.
|
||||
- 1,000 stable post-network reconciles allocate zero managed bytes on the
|
||||
calling thread.
|
||||
|
||||
Release gate: 3,783 App tests passed / 3 skipped; 8,267 complete-solution
|
||||
tests passed / 5 skipped.
|
||||
Loading…
Add table
Add a link
Reference in a new issue