One JSON,
one video.
Write a scene as data. The engine renders it frame by frame, byte-identical every run, at any canvas.
Write a scene as data. The engine renders it frame by frame, byte-identical every run, at any canvas.
There is no rule asking you to avoid a wall clock. A frame is seeked, not played, so anything that runs on real time is refused at boot, by name, before a pixel is drawn. Two things follow from that, and both are worth more than the guarantee itself.
renderFrame(n) is pure in n, so frame 412 comes out the same whether it renders first or last. That is what lets one film shard across parallel tabs, and what makes two renders of the same scene diff-able.
Pin keywords, a 12-column grid and percentages resolve to pixels per canvas. Compose in those and one source renders 16:9, 9:16, 1:1 and 4:5 in a single pass. Hand-place absolute pixels instead and you have tuned it to one ratio.
You do not pour data into a layout someone else composed. You compose the film from primitives, the way you would write anything else. 559 effects ship today, 255 of them with a rendered preview. Below is one frame from each family that has one.














