12
$\begingroup$

Why are stacked renders noisier than straight renders which have the same number of samples?

Using this technique for resuming noise based on the rate at which pixels change outlined on the wiki (further explained on BA), I have run some tests. I'm not sure I understood the entire measuring process correctly, so I hope I haven't measured anything wrong..

I rendered 7 images, all with different seeds. 5 at 10 samples, 1 at 50 and 1 at 40.

In the compositor I combined the 10 sample renders with a series of mix nodes with mix factors of .5, .33, .25, and .2:

enter image description here

As an interesting side note, the combined image has fewer fireflies than the straight render.

The setup of the "Noise Detect" node group is:

enter image description here

Now if I understood correctly, the brighter the pixel, the faster it changes (the more noisy).

The histogram for the straight render:

enter image description here

The histogram for the combined render:

enter image description here

And an overlay version. The straight render is orange (click for full size):

enter image description here

As you can see, except for occasional spikes (fireflies) the straight render is changing less, which means it's less noisy according to the above links.

Assuming my above tests are correct, what is the reason for this and is there a way to stack renders more efficiently?

Here is the blendfile used for testing.

$\endgroup$
  • 1
    $\begingroup$ I wonder if rendering each pass at a different seed would be better than all passes using the same seed. $\endgroup$ – Vader Feb 18 '14 at 18:14
  • $\begingroup$ @Vader That's more or less what I'm doing, except I'm only changing the seed every ten samples rather than every sample. $\endgroup$ – gandalf3 Feb 24 '14 at 8:30
  • $\begingroup$ @Vader Oh.. I think I just realized that you said passes. I'll have to test that. $\endgroup$ – gandalf3 Sep 12 '14 at 0:53
13
+50
$\begingroup$

Cycles uses Quasi Monte Carlo sampling:

http://en.wikipedia.org/wiki/Quasi-Monte_Carlo_method

That means it will try to evenly distribute samples so rendering converges faster. If you render multiple times with different seeds however then this even distribution is lost because it mixes different distributions without ensuring that the combined result is even too.

Since Blender 2.78 there is a sample offset command line option to avoid that problem, where you can set it so that each render uses a subset of samples from the same distribution.

$\endgroup$
  • $\begingroup$ Does this also explain the stacked render consistently having fewer fireflies? I'm not sure I understand how a more even distribution would create more fireflies.. $\endgroup$ – gandalf3 Feb 26 '14 at 8:21
  • 3
    $\begingroup$ The combined image has fewer fireflies because you are storing the intermediate results in PNG files. This means that bright values get clamped because PNG does not support high dynamic range. If you used EXR files this would not be the case. $\endgroup$ – brecht Feb 26 '14 at 16:09
3
$\begingroup$

You need to use more samples per seed - 10 samples (from the regular Path Tracing integrator) isn't really enough to sample all the materials and lights consistently. Try 100 or even more.

That said, stacking seeds will never really be as accurate as a straight render, but the more samples per seed you use, the more accurate it will be. I use this method purely as a resume-able render type of thing.

$\endgroup$
  • $\begingroup$ I realize that more samples are needed for a good result, but I used 10 samples because I wanted to have the same number of cumulative samples as the straight render (5 images * 10 samples each = 50 total samples). $\endgroup$ – gandalf3 Feb 26 '14 at 7:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.