[Bf-blender-cvs] [dec2431d362] cycles_procedural_api: avoid infinite loops in the viewport when synchronizing the Integrator
Kévin Dietrich
noreply at git.blender.org
Thu Nov 5 18:57:49 CET 2020
Commit: dec2431d3622c99b4ec84e6ab453d9bef2252d93
Author: Kévin Dietrich
Date: Wed Oct 28 12:53:52 2020 +0100
Branches: cycles_procedural_api
https://developer.blender.org/rBdec2431d3622c99b4ec84e6ab453d9bef2252d93
avoid infinite loops in the viewport when synchronizing the Integrator
===================================================================
M intern/cycles/blender/blender_sync.cpp
===================================================================
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 931bbb509b1..7df57392fb3 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -299,9 +299,6 @@ void BlenderSync::sync_integrator()
integrator->set_seed(seed);
- integrator->set_sampling_pattern((SamplingPattern)get_enum(
- cscene, "sampling_pattern", SAMPLING_NUM_PATTERNS, SAMPLING_PATTERN_SOBOL));
-
integrator->set_sample_clamp_direct(get_float(cscene, "sample_clamp_direct"));
integrator->set_sample_clamp_indirect(get_float(cscene, "sample_clamp_indirect"));
if (!preview) {
@@ -320,16 +317,22 @@ void BlenderSync::sync_integrator()
integrator->set_sample_all_lights_indirect(get_boolean(cscene, "sample_all_lights_indirect"));
integrator->set_light_sampling_threshold(get_float(cscene, "light_sampling_threshold"));
+ SamplingPattern sampling_pattern = (SamplingPattern)get_enum(
+ cscene, "sampling_pattern", SAMPLING_NUM_PATTERNS, SAMPLING_PATTERN_SOBOL);
+
+ int adaptive_min_samples = INT_MAX;
+
if (RNA_boolean_get(&cscene, "use_adaptive_sampling")) {
- integrator->set_sampling_pattern(SAMPLING_PATTERN_PMJ);
- integrator->set_adaptive_min_samples(get_int(cscene, "adaptive_min_samples"));
+ sampling_pattern = SAMPLING_PATTERN_PMJ;
+ adaptive_min_samples = get_int(cscene, "adaptive_min_samples");
integrator->set_adaptive_threshold(get_float(cscene, "adaptive_threshold"));
}
else {
- integrator->set_adaptive_min_samples(INT_MAX);
integrator->set_adaptive_threshold(0.0f);
}
+ integrator->set_sampling_pattern(sampling_pattern);
+
int diffuse_samples = get_int(cscene, "diffuse_samples");
int glossy_samples = get_int(cscene, "glossy_samples");
int transmission_samples = get_int(cscene, "transmission_samples");
@@ -346,8 +349,7 @@ void BlenderSync::sync_integrator()
integrator->set_mesh_light_samples(mesh_light_samples * mesh_light_samples);
integrator->set_subsurface_samples(subsurface_samples * subsurface_samples);
integrator->set_volume_samples(volume_samples * volume_samples);
- integrator->set_adaptive_min_samples(min(
- integrator->get_adaptive_min_samples() * integrator->get_adaptive_min_samples(), INT_MAX));
+ adaptive_min_samples = min(adaptive_min_samples * adaptive_min_samples, INT_MAX);
}
else {
integrator->set_diffuse_samples(diffuse_samples);
@@ -359,6 +361,8 @@ void BlenderSync::sync_integrator()
integrator->set_volume_samples(volume_samples);
}
+ integrator->set_adaptive_min_samples(adaptive_min_samples);
+
if (b_scene.render().use_simplify()) {
if (preview) {
integrator->set_ao_bounces(get_int(cscene, "ao_bounces"));
More information about the Bf-blender-cvs
mailing list