forked from bartvdbraak/blender
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.
This commit is contained in:
parent
4bf4c4111e
commit
5a35034fb3
@ -240,6 +240,10 @@ void BlenderSync::sync_film()
|
|||||||
|
|
||||||
Film *film = scene->film;
|
Film *film = scene->film;
|
||||||
Film prevfilm = *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->exposure = get_float(cscene, "film_exposure");
|
||||||
film->filter_type = (FilterType)RNA_enum_get(&cscene, "filter_type");
|
film->filter_type = (FilterType)RNA_enum_get(&cscene, "filter_type");
|
||||||
|
@ -272,6 +272,7 @@ Film::Film()
|
|||||||
mist_falloff = 1.0f;
|
mist_falloff = 1.0f;
|
||||||
|
|
||||||
use_light_visibility = false;
|
use_light_visibility = false;
|
||||||
|
use_sample_clamp = false;
|
||||||
|
|
||||||
need_update = true;
|
need_update = true;
|
||||||
}
|
}
|
||||||
@ -288,15 +289,12 @@ void Film::device_update(Device *device, DeviceScene *dscene, Scene *scene)
|
|||||||
device_free(device, dscene, scene);
|
device_free(device, dscene, scene);
|
||||||
|
|
||||||
KernelFilm *kfilm = &dscene->data.film;
|
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 */
|
/* update __data */
|
||||||
kfilm->exposure = exposure;
|
kfilm->exposure = exposure;
|
||||||
kfilm->pass_flag = 0;
|
kfilm->pass_flag = 0;
|
||||||
kfilm->pass_stride = 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) {
|
foreach(Pass& pass, passes) {
|
||||||
kfilm->pass_flag |= pass.type;
|
kfilm->pass_flag |= pass.type;
|
||||||
@ -431,6 +429,7 @@ bool Film::modified(const Film& film)
|
|||||||
return !(exposure == film.exposure
|
return !(exposure == film.exposure
|
||||||
&& Pass::equals(passes, film.passes)
|
&& Pass::equals(passes, film.passes)
|
||||||
&& pass_alpha_threshold == film.pass_alpha_threshold
|
&& pass_alpha_threshold == film.pass_alpha_threshold
|
||||||
|
&& use_sample_clamp == film.use_sample_clamp
|
||||||
&& filter_type == film.filter_type
|
&& filter_type == film.filter_type
|
||||||
&& filter_width == film.filter_width
|
&& filter_width == film.filter_width
|
||||||
&& mist_start == film.mist_start
|
&& mist_start == film.mist_start
|
||||||
|
@ -61,6 +61,7 @@ public:
|
|||||||
float mist_falloff;
|
float mist_falloff;
|
||||||
|
|
||||||
bool use_light_visibility;
|
bool use_light_visibility;
|
||||||
|
bool use_sample_clamp;
|
||||||
|
|
||||||
bool need_update;
|
bool need_update;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user