All posts
·The GenMotion Teamengineeringrendering

Why deterministic rendering matters for video

If your preview and your export can disagree, you can never fully trust what you see. Here's how a single frame clock fixes that.

There's a frustrating failure mode in a lot of motion tooling: the preview looks right, you export, and the file is subtly different. A transition lands a few frames late. An animation that depended on a timer drifts. You re-export and pray.

GenMotion is built so that can't happen.

Motion as a function of frame

In GenMotion, every animation is a pure function of the current frame. There are no wall-clock timers, no Math.random() reaching for entropy, no race between the browser's refresh rate and your animation. Frame 240 always looks exactly the same, whether it's rendered in your browser today or on a worker next week.

tsx
const frame = useCurrentFrame();const opacity = interpolate(frame, [0, 30], [0, 1]);

Because the value depends only on frame, replays are bit-for-bit identical.

One runtime, two surfaces

The in-browser player and the headless renderer share the same motion runtime. The preview isn't an approximation of the output — it is the output, played live. So:

  • Scrubbing to a frame shows precisely what will render.
  • Exports never surprise you.
  • You can nail timing on a specific beat with confidence.

Why it's worth the constraint

Determinism asks for a little discipline — no reaching for the system clock, no un-seeded randomness. In exchange you get a guarantee that's rare in creative tools: what you see is what you ship.

That guarantee is the foundation everything else at GenMotion is built on.

Ready to make your own?

Start free

Frequently asked questions

Deterministic rendering means every frame is a pure function of its frame number, with no wall-clock timers or unseeded randomness. The same frame always renders identically, so previews and exports can never disagree.

It guarantees that what you preview is what you ship — pixel-for-pixel and frame-for-frame — eliminating the common failure mode where an export differs subtly from the preview.

Yes. The in-browser player and the headless renderer share the same deterministic runtime, so the exported MP4 is identical to what you reviewed.