Cycles: experimental correlated multi-jittered sampling pattern that can be used
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Fri, 7 Jun 2013 16:06:22 +0000 (16:06 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Fri, 7 Jun 2013 16:06:22 +0000 (16:06 +0000)
commitb20a7e01d046b95a79663da1a8072358709a5a8b
tree7772c50756a7d5a3352fd25eadbe8d41aa776615
parentd835d2f4e65ae3bf8e22f8d3d60e7e6ea7a6b4ca
Cycles: experimental correlated multi-jittered sampling pattern that can be used
instead of sobol. So far one doesn't seem to be consistently better or worse than
the other for the same number of samples but more testing is needed.

The random number generator itself is slower than sobol for most number of samples,
except 16, 64, 256, .. because they can be computed faster. This can probably be
optimized, but we can do that when/if this actually turns out to be useful.

Paper this implementation is based on:
http://graphics.pixar.com/library/MultiJitteredSampling/

Also includes some refactoring of RNG code, fixing a Sobol correlation issue with
the first BSDF and < 16 samples, skipping some unneeded RNG calls and using a
simpler unit square to unit disk function.
13 files changed:
intern/cycles/blender/addon/properties.py
intern/cycles/blender/addon/ui.py
intern/cycles/blender/blender_sync.cpp
intern/cycles/kernel/CMakeLists.txt
intern/cycles/kernel/kernel_jitter.h [new file with mode: 0644]
intern/cycles/kernel/kernel_montecarlo.h
intern/cycles/kernel/kernel_path.h
intern/cycles/kernel/kernel_random.h
intern/cycles/kernel/kernel_types.h
intern/cycles/render/integrator.cpp
intern/cycles/render/integrator.h
intern/cycles/render/session.cpp
intern/cycles/util/util_types.h