Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/cycles/kernel/kernel_random.h')
-rw-r--r--intern/cycles/kernel/kernel_random.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/intern/cycles/kernel/kernel_random.h b/intern/cycles/kernel/kernel_random.h
index df876e6f726..ba97ab3e3b6 100644
--- a/intern/cycles/kernel/kernel_random.h
+++ b/intern/cycles/kernel/kernel_random.h
@@ -22,6 +22,11 @@ typedef uint RNG;
#ifdef __SOBOL__
+/* skip initial numbers that are not as well distributed, especially the
+ first sequence is just 0 everywhere, which can be problematic for e.g.
+ path termination */
+#define SOBOL_SKIP 64
+
/* High Dimensional Sobol */
/* van der corput radical inverse */
@@ -103,7 +108,7 @@ __device_inline float path_rng(KernelGlobals *kg, RNG *rng, int sample, int dime
return r;
#else
/* compute sobol sequence value using direction vectors */
- uint result = sobol_dimension(kg, sample, dimension);
+ uint result = sobol_dimension(kg, sample + SOBOL_SKIP, dimension);
float r = (float)result * (1.0f/(float)0xFFFFFFFF);
/* Cranly-Patterson rotation using rng seed */