mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-01 19:42:03 +00:00
Five blocks aimed at the gaps in the catalog rather than at what was easiest to build. We are thick in passes, wipes, kinetic type and lower thirds, and thin in hero objects, depth and texture. cosmic-orb, a nebula sphere behind a refracting glass limb. A hero object, a shape the catalog had almost none of; it carries a title card alone. Analytic rather than raymarched, so cost is flat per pixel. gallery-tunnel, a corridor of panels flying toward camera. The cheapest real depth win available, and the only one whose panels are content slots, so it carries a shot rather than decorating one. lt-neon-border, two arcs of light travelling a rounded panel and snapping corner to corner. We ship eleven lower thirds and none had a travelling light. weight-wave, a crest of thickness moving along a headline. Every other kinetic type move animates transform, opacity or a mask; this animates the letterforms themselves. Ships Recursive subset to the two axes it uses. Requires the sweep-fingerprint fix, since font axes were not part of the layout audit and a duplexed font removes the last trace of motion. halftone-field, a dot grid tracking a flowing noise field. The catalog had no texture register, and this runs under type without competing with it. All five are closed form: state at frame N is computed from N, never from frame N-1. That is what makes them seekable, and it is verified per block by hashing a direct seek against stepped playback and against an out-of-order scrub, with a control frame to rule out a vacuously static pass. Frames were rendered and looked at rather than inferred from a passing check, which is not a visual gate. Two framework defects surfaced while building these and are fixed in the blocks that hit them. A timeline onUpdate callback does not fire on seek, because GSAP suppresses events there by default, so a canvas driven that way freezes on frame 0; the repaint hangs off a property setter instead. And a CSS-sized image uploads a 1x1 texture, because the browser samples the laid-out size rather than the natural one.