Commit 770c9bf
committed
fix(world): stop the camera teleporting and the frame budget losing frames (#152)
Eight confirmed audit findings on scene transitions and the `world` view —
the one mechanism meant to read as a single continuous shot, and the one
where every defect below is plainly visible on screen.
- A transition longer than the scene it leaves silently deleted frames from
the *entering* scene. The outgoing scene cannot spend more frames than it
has, but the budget was computed as if it could, and the overrun was
taken out of the next scene. Now clamped to the outgoing scene's own
frame count, with the accounting asserted frame by frame.
- `camera_pan_duration` longer than a scene teleported the camera:
measured jump of 245.33px between two consecutive frames, now 21.33px.
- The outgoing scene's background held at full strength through the whole
pan, then vanished in one frame — an avg-luma step of 109.0 between two
frames, now at most 4.82.
- The scene cross-fade drove the *whole* frame to 50% opacity at every pan
midpoint (both scenes at 0.5, nothing behind them). Mid-pan opacity is
now 0.670 instead of sitting on that floor.
- `persist: true` snapped opacity back to 1.0 while the scene was still
fading out — a 0.326 discontinuity, now 0.034.
- A view-to-view transition duplicated the junction frame on both sides.
`ViewTransition` progress is now an open interval, matching what
`SlideTransition` already guaranteed.
- `scene.freeze_at` was read by no world code path at all.
- `scene.effects` (post-effects) were dropped on world frames and on view
transition frames.
Every figure above is a before/after measurement from the tests added here,
not an estimate.
Tests: 144 pass on this branch alone.1 parent 18d9a65 commit 770c9bf
4 files changed
Lines changed: 1130 additions & 99 deletions
0 commit comments