diff options
author | Sybren A. Stüvel <sybren@stuvel.eu> | 2017-10-29 19:31:55 +0300 |
---|---|---|
committer | Sybren A. Stüvel <sybren@stuvel.eu> | 2017-10-29 19:31:55 +0300 |
commit | 34859b285aff14b022c9b175fa2babfff7c63314 (patch) | |
tree | a07bfadfa50a516af32ee9ef6fdc0c68302c55fb /intern | |
parent | 405980b1facff4a76e3661a412eab1d072d0236f (diff) | |
parent | 6099b2620d645f4129c42af2272cb6bd8538fc7a (diff) |
Merge branch 'master' into blender2.8
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/kernel/kernel_random.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/intern/cycles/kernel/kernel_random.h b/intern/cycles/kernel/kernel_random.h index e7a6134b8eb..7a96806edac 100644 --- a/intern/cycles/kernel/kernel_random.h +++ b/intern/cycles/kernel/kernel_random.h @@ -31,10 +31,17 @@ CCL_NAMESPACE_BEGIN #ifdef __SOBOL__ +/* Skip initial numbers that for some dimensions have clear patterns that + * don't cover the entire sample space. Ideally we would have a better + * progressive pattern that doesn't suffer from this problem, because even + * with this offset some dimensions are quite poor. + */ +#define SOBOL_SKIP 64 + ccl_device uint sobol_dimension(KernelGlobals *kg, int index, int dimension) { uint result = 0; - uint i = index; + uint i = index + SOBOL_SKIP; for(uint j = 0; i; i >>= 1, j++) { if(i & 1) { result ^= kernel_tex_fetch(__sobol_directions, 32*dimension + j); |