Commit: 5a35034fb3b046986a06837692bfa6c225f27878
Author: Thomas Dinges
Date:   Tue Feb 11 14:14:13 2014 +0100
https://developer.blender.org/rB5a35034fb3b046986a06837692bfa6c225f27878

Fix Cycles Light Passes being always enabled, own regression in Clamp commit 
yesterday.

KernelIntegrator just doesn't have valid data at this point, so we need to go 
one level deeper.

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

M       intern/cycles/blender/blender_sync.cpp
M       intern/cycles/render/film.cpp
M       intern/cycles/render/film.h

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

diff --git a/intern/cycles/blender/blender_sync.cpp 
b/intern/cycles/blender/blender_sync.cpp
index 4415940..d21ffde 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -240,6 +240,10 @@ void BlenderSync::sync_film()
 
        Film *film = scene->film;
        Film prevfilm = *film;
+       
+       /* Clamping */
+       Integrator *integrator = scene->integrator;
+       film->use_sample_clamp = (integrator->sample_clamp_direct != 0.0f || 
integrator->sample_clamp_indirect != 0.0f);
 
        film->exposure = get_float(cscene, "film_exposure");
        film->filter_type = (FilterType)RNA_enum_get(&cscene, "filter_type");
diff --git a/intern/cycles/render/film.cpp b/intern/cycles/render/film.cpp
index 0a1a88e..30ad86a 100644
--- a/intern/cycles/render/film.cpp
+++ b/intern/cycles/render/film.cpp
@@ -272,6 +272,7 @@ Film::Film()
        mist_falloff = 1.0f;
 
        use_light_visibility = false;
+       use_sample_clamp = false;
 
        need_update = true;
 }
@@ -288,15 +289,12 @@ void Film::device_update(Device *device, DeviceScene 
*dscene, Scene *scene)
        device_free(device, dscene, scene);
 
        KernelFilm *kfilm = &dscene->data.film;
-       KernelIntegrator *kintegrator = &dscene->data.integrator;
-       
-       bool use_clamping = (kintegrator->sample_clamp_direct != FLT_MAX) || 
(kintegrator->sample_clamp_indirect != FLT_MAX);
 
        /* update __data */
        kfilm->exposure = exposure;
        kfilm->pass_flag = 0;
        kfilm->pass_stride = 0;
-       kfilm->use_light_pass = use_light_visibility || use_clamping;
+       kfilm->use_light_pass = use_light_visibility || use_sample_clamp;
 
        foreach(Pass& pass, passes) {
                kfilm->pass_flag |= pass.type;
@@ -431,6 +429,7 @@ bool Film::modified(const Film& film)
        return !(exposure == film.exposure
                && Pass::equals(passes, film.passes)
                && pass_alpha_threshold == film.pass_alpha_threshold
+               && use_sample_clamp == film.use_sample_clamp
                && filter_type == film.filter_type
                && filter_width == film.filter_width
                && mist_start == film.mist_start
diff --git a/intern/cycles/render/film.h b/intern/cycles/render/film.h
index 1e1c775..cc7183b 100644
--- a/intern/cycles/render/film.h
+++ b/intern/cycles/render/film.h
@@ -61,6 +61,7 @@ public:
        float mist_falloff;
 
        bool use_light_visibility;
+       bool use_sample_clamp;
 
        bool need_update;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to