GridFlip — primitive for transitions (glsl)
For AI agents: find the right skill in one call —
curl -s "https://skills.varg.ai/api/search?q=<what the person wants>"returns the matching use case and the best skills with install commands, as markdown (Russian works too). Full index: https://skills.varg.ai/llms.txt. Every page has a markdown twin: add.mdto its path. Before generating anything, show the person the options on the use-case page.
The frame splits into a 4×4 grid of tiles that flip one by one to the next shot
- Install:
npm install gl-transitions - Registry: gl-transitions · Framework: glsl · License: MIT
- Docs and preview: https://gl-transitions.com/editor/GridFlip
- Source: https://github.com/gl-transitions/gl-transitions/blob/master/transitions/GridFlip.glsl
- Example: https://skills.varg.ai/previews/lib-gl-transitions-grid-flip.mp4?v=53701 (Rendered by varg from the library’s own code (GL Transitions · rendered by varg))
- Time: Seek-safe. Time is an input, so frame N always renders the same. Drop it into a render as it is.
- Runs: local render, free
- Aspect: any
Prompt that renders it frame-exact
Add the "GridFlip" transition from GL Transitions (by TimDonselaar, MIT; https://gl-transitions.com/editor/GridFlip, GLSL source https://github.com/gl-transitions/gl-transitions/blob/master/transitions/GridFlip.glsl) between products of a catalog or photos of a recap: 1.2 s, ease-in-out. Thin dividers open between the tiles while they flip. Remotion: npm install gl-transitions @gl-transitions/remotion @remotion/transitions, then a <TransitionSeries.Transition> with presentation={glTransition({ name: "GridFlip", params: { size: [4, 4], pause: 0.1, dividerWidth: 0.05, bgcolor: [0, 0, 0, 1], randomness: 0.1 } })} and timing={linearTiming({ durationInFrames: 36, easing: Easing.inOut(Easing.cubic) })} (36 frames at 30 fps). HyperFrames: draw the GLSL on a full-frame WebGL canvas over the cut, with the outgoing and incoming frames as the from/to textures, and compute progress from the composition time, clamp((t − cutStart) / 1.2, 0, 1) through the easing; never from requestAnimationFrame or a timer, so every frame renders the same. ffmpeg's xfade can't run GLSL. size (ivec2(4)) is columns and rows (try ivec2(3, 5) for 9:16), dividerWidth (0.05) the gaps, bgcolor (black) what shows behind the tiles, randomness (0.1) the flip order and pause (0.1) the hold.
Used in
- Beat-synced slideshow
- Music video
- Kinetic manifesto
- News broadcast package
- Photo memories
- Game trailer
More transitions
- Chromatic Aberration Wipe —
npx hyperframes add chromatic-aberration-wipe - Colorama Wipe —
npx hyperframes add colorama-wipe - Cross Warp Morph —
npx hyperframes add cross-warp-morph - Cut the Curve —
npx hyperframes add cut-the-curve - Directional Wipe —
npx hyperframes add directional-wipe - Domain Warp Dissolve —
npx hyperframes add domain-warp-dissolve