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
path: root/intern
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@stuvel.eu>2017-10-29 19:31:55 +0300
committerSybren A. Stüvel <sybren@stuvel.eu>2017-10-29 19:31:55 +0300
commit34859b285aff14b022c9b175fa2babfff7c63314 (patch)
treea07bfadfa50a516af32ee9ef6fdc0c68302c55fb /intern
parent405980b1facff4a76e3661a412eab1d072d0236f (diff)
parent6099b2620d645f4129c42af2272cb6bd8538fc7a (diff)
Merge branch 'master' into blender2.8
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/kernel/kernel_random.h9
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);