[Bf-blender-cvs] [5a35034] master: Fix Cycles Light Passes being always enabled, own regression in Clamp commit yesterday.

Thomas Dinges noreply at git.blender.org
Tue Feb 11 14:15:05 CET 2014


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;




More information about the Bf-blender-cvs mailing list