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$
3
  • 1
    $\begingroup$ I wonder if rendering each pass at a different seed would be better than all passes using the same seed. $\endgroup$
    – Vader
    Commented Feb 18, 2014 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
    Commented Feb 24, 2014 at 8:30
  • $\begingroup$ @Vader Oh.. I think I just realized that you said passes. I'll have to test that. $\endgroup$
    – gandalf3
    Commented Sep 12, 2014 at 0:53

2 Answers 2

14
+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$
2
  • $\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
    Commented Feb 26, 2014 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
    Commented Feb 26, 2014 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$
1
  • $\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
    Commented Feb 26, 2014 at 7:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .