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/render/integrator.cpp')
-rw-r--r--intern/cycles/render/integrator.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/intern/cycles/render/integrator.cpp b/intern/cycles/render/integrator.cpp
index 9f8d5b50ccd..be8fd552e78 100644
--- a/intern/cycles/render/integrator.cpp
+++ b/intern/cycles/render/integrator.cpp
@@ -16,8 +16,10 @@
#include "device.h"
#include "integrator.h"
+#include "film.h"
#include "light.h"
#include "scene.h"
+#include "shader.h"
#include "sobol.h"
#include "util_foreach.h"
@@ -173,6 +175,14 @@ void Integrator::device_update(Device *device, DeviceScene *dscene, Scene *scene
device->tex_alloc("__sobol_directions", dscene->sobol_directions);
+ /* Clamping. */
+ bool use_sample_clamp = (sample_clamp_direct != 0.0f ||
+ sample_clamp_indirect != 0.0f);
+ if(use_sample_clamp != scene->film->use_sample_clamp) {
+ scene->film->use_sample_clamp = use_sample_clamp;
+ scene->film->tag_update(scene);
+ }
+
need_update = false;
}
@@ -217,8 +227,14 @@ bool Integrator::modified(const Integrator& integrator)
sample_all_lights_indirect == integrator.sample_all_lights_indirect);
}
-void Integrator::tag_update(Scene * /*scene*/)
+void Integrator::tag_update(Scene *scene)
{
+ foreach(Shader *shader, scene->shaders) {
+ if(shader->has_integrator_dependency) {
+ scene->shader_manager->need_update = true;
+ break;
+ }
+ }
need_update = true;
}