Download

How to make rendering deterministic?

Hello there,
I stumbled upon the rendering non-reproducibility. For example, I opened an example first-person game project, created the camera and programmed some trajectory in Movie Sequencer. Now if I render the movie two times, to my surprise, I get slightly different frames. Most pixels are the same, but there are some different pixels scattered more on less randomly across the scene and some are localized on particular objects. I attached a picture showing this, tha purple-shaded area is identical on both frames and glowing points are different.
I anticipated some reproducibility issues with advanced things like particle systems or tree leaves waving, but here we see just a single box drawed slightly different each time I render the movie, while other similar boxes are static. What’s the reason for it? Is there a way to make rendering completely deterministic in this case? What about richer scenes involved animated actors, like aforementioned trees?
different_pixels_rot_4.26.2_crop

Hi, I don’t think you can render multiple images with the exact same results since everything is literally real-time in UE.

Unless you have every lighting sources and objects set to static?

Or maybe using 3rd party pre-compute render plugins like v-ray?

@zefreestijl, of course UE has real-time capabilities, but here we’are speaking about movie sequencer. I think it has it’s own time flow, I mean, it can render much more than one frame per real second or less, depending on preset and hardware capabilities. And even there’re some dynamic objects and lighting, I expect it to be reproducible, since all rendering reduces to evaluating some time-dependent formulas at some fixed time moments k*dt, where dt is 1/(frame rate) and k is positive integer. Correct me if I’m wrong.

I suspect there might by some sources of non-reproducibility like randomized algorithms with unset seeds, some intricate interplay between shaders and code running on CPU and so on. But the picture I see, there most pixels are reproduced and some vary from run to run puzzles me a lot. I would appreciate any explanation of this behavior.

Here is another example, now from builtin architecture project (rendered using UE-4.25.4, the former was from UE-4.26.2). Again, most of pixels, even those laying on waving leaves, are rendered reproducible, but some aren’t. Why is that? different_pixels_4.25.4