From 5a35034fb3b046986a06837692bfa6c225f27878 Mon Sep 17 00:00:00 2001 From: Thomas Dinges Date: Tue, 11 Feb 2014 14:14:13 +0100 Subject: 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. --- intern/cycles/blender/blender_sync.cpp | 4 ++++ intern/cycles/render/film.cpp | 7 +++---- intern/cycles/render/film.h | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) (limited to 'intern') diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp index 4415940b359..d21ffdec0d1 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 0a1a88e6bfb..30ad86a8d4c 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 1e1c775aac3..cc7183bfd95 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; -- cgit v1.2.3