[Bf-blender-cvs] [d5019b3838c] cycles-x: Fix PMJ pattern automatically enabling adaptive sampling

Brecht Van Lommel noreply at git.blender.org
Wed Aug 4 20:51:19 CEST 2021


Commit: d5019b3838c38742a6f056023604edfa16414675
Author: Brecht Van Lommel
Date:   Wed Aug 4 17:22:32 2021 +0200
Branches: cycles-x
https://developer.blender.org/rBd5019b3838c38742a6f056023604edfa16414675

Fix PMJ pattern automatically enabling adaptive sampling

It should only be the other way around.

===================================================================

M	intern/cycles/blender/blender_sync.cpp
M	intern/cycles/render/integrator.cpp

===================================================================

diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 1dabf6240eb..54cfd90b77c 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -335,15 +335,11 @@ void BlenderSync::sync_integrator(BL::ViewLayer &b_view_layer, bool background)
 
   integrator->set_light_sampling_threshold(get_float(cscene, "light_sampling_threshold"));
 
-  const bool use_adaptive_sampling = RNA_boolean_get(&cscene, "use_adaptive_sampling");
-
   SamplingPattern sampling_pattern = (SamplingPattern)get_enum(
       cscene, "sampling_pattern", SAMPLING_NUM_PATTERNS, SAMPLING_PATTERN_SOBOL);
-  if (use_adaptive_sampling) {
-    sampling_pattern = SAMPLING_PATTERN_PMJ;
-  }
   integrator->set_sampling_pattern(sampling_pattern);
 
+  const bool use_adaptive_sampling = RNA_boolean_get(&cscene, "use_adaptive_sampling");
   integrator->set_use_adaptive_sampling(use_adaptive_sampling);
   integrator->set_adaptive_threshold(get_float(cscene, "adaptive_threshold"));
 
diff --git a/intern/cycles/render/integrator.cpp b/intern/cycles/render/integrator.cpp
index f5345057baa..03599ef81f3 100644
--- a/intern/cycles/render/integrator.cpp
+++ b/intern/cycles/render/integrator.cpp
@@ -181,7 +181,8 @@ void Integrator::device_update(Device *device, DeviceScene *dscene, Scene *scene
                                            FLT_MAX :
                                            sample_clamp_indirect * 3.0f;
 
-  kintegrator->sampling_pattern = sampling_pattern;
+  kintegrator->sampling_pattern = (use_adaptive_sampling) ? SAMPLING_PATTERN_PMJ :
+                                                            sampling_pattern;
 
   if (light_sampling_threshold > 0.0f) {
     kintegrator->light_inv_rr_threshold = 1.0f / light_sampling_threshold;
@@ -198,7 +199,7 @@ void Integrator::device_update(Device *device, DeviceScene *dscene, Scene *scene
   dimensions = min(dimensions, SOBOL_MAX_DIMENSIONS);
 
   if (need_update_lut) {
-    if (sampling_pattern == SAMPLING_PATTERN_SOBOL) {
+    if (kintegrator->sampling_pattern == SAMPLING_PATTERN_SOBOL) {
       uint *directions = dscene->sample_pattern_lut.alloc(SOBOL_BITS * dimensions);
 
       sobol_generate_direction_vectors((uint(*)[SOBOL_BITS])directions, dimensions);
@@ -263,7 +264,7 @@ AdaptiveSampling Integrator::get_adaptive_sampling() const
 {
   AdaptiveSampling adaptive_sampling;
 
-  adaptive_sampling.use = (get_sampling_pattern() == SAMPLING_PATTERN_PMJ);
+  adaptive_sampling.use = use_adaptive_sampling;
 
   if (!adaptive_sampling.use) {
     return adaptive_sampling;



More information about the Bf-blender-cvs mailing list