diff options
Diffstat (limited to 'intern/cycles/blender/blender_sync.cpp')
-rw-r--r-- | intern/cycles/blender/blender_sync.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index 511061db08a..f806569c389 100644 --- a/intern/cycles/blender/blender_sync.cpp +++ b/intern/cycles/blender/blender_sync.cpp @@ -304,6 +304,13 @@ void BlenderSync::sync_integrator() integrator->method = (Integrator::Method)get_enum( cscene, "progressive", Integrator::NUM_METHODS, Integrator::PATH); + integrator->use_light_tree = get_boolean(cscene, "use_light_tree"); + if (get_enum(cscene, "progressive") == 0) { + integrator->splitting_threshold = get_float(cscene, "splitting_threshold"); + } + else { // Not using branched path tracing + integrator->splitting_threshold = 0.0f; + } integrator->sample_all_lights_direct = get_boolean(cscene, "sample_all_lights_direct"); integrator->sample_all_lights_indirect = get_boolean(cscene, "sample_all_lights_indirect"); integrator->light_sampling_threshold = get_float(cscene, "light_sampling_threshold"); @@ -359,8 +366,13 @@ void BlenderSync::sync_integrator() integrator->ao_bounces = 0; } - if (integrator->modified(previntegrator)) + if (integrator->modified(previntegrator)) { integrator->tag_update(scene); + } + if (integrator->use_light_tree != previntegrator.use_light_tree || + integrator->splitting_threshold != previntegrator.splitting_threshold) { + scene->light_manager->tag_update(scene); + } } /* Film */ |