vaweGitHub

When determinism actually matters.

Byte-identical rendering is a real, checkable property. It is also not the reason to pick a rendering engine most of the time. Here is what changes when it is, and what stays the same when it is not.

It matters when nobody looks at every frame.

An agent approves a draft and expects the final render to show the same moments, not a re-render that might drift. A thousand personalized ad variants from one template need the shared background to be identical across all of them, or the "shared" part is a lie. A render split across parallel machines to finish faster only produces one correct video if frame 4000 rendered on machine B matches frame 4000 rendered on machine A. In all three cases, nobody is scrubbing a timeline to catch a difference by eye, so the guarantee has to be structural.

It matters for catching a regression, not just producing a video.

A render pipeline that changes over time (a new effect, a font update, a library bump) can diff two renders of the same input and treat any pixel difference as a bug report. That only works if "the same input" is actually guaranteed to produce the same bytes absent a real change: without it, every diff is noise, and the team stops trusting the check within a month. This is the same reason software tests are deterministic before they are useful; video is not exempt from it just because it looks like an art form.

It matters less when a human is the last step.

A single creative edit that a person opens, watches, and approves by eye gets nothing from byte-identical replay: the human is already the check. Live compositing and broadcast have no "render it again" step to be identical to. And a generative pixel model producing variation on purpose is solving a different problem than reproduction: asking it to be deterministic would remove the reason to use it. None of this is a weakness in those tools, it is a different job.

The property has to be built in, not assumed.

Determinism is not a side effect of using a headless browser; a real clock, an unseeded random call, or a mid-render network fetch breaks it immediately, which is why an engine that wants the guarantee documents the specific rules it enforces rather than asserting the outcome. HyperFrames publishes its own rule set for exactly this reason (integer-math frame time, no system timers, no unseeded randomness, no mid-render fetches), which is the same shape of commitment Vawe makes for its own engine, independently arrived at because the failure modes are the same failure modes for anyone rendering frames outside real time.

hyperframes.heygen.com/concepts/determinism · read 2026-09-19

How Vawe enforces it.

A virtual clock the page runs under, and a test that renders every fixture twice and compares the frames.