From ef0b8d6306e5e1cddf1d7a2087e5589adcf74172 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 12 Nov 2021 18:26:30 +0100 Subject: Fix T92002: no Cycles combined baking support for filter settings --- intern/cycles/scene/integrator.cpp | 29 +++++++++++++++++++++++++++++ intern/cycles/scene/integrator.h | 7 +++++++ 2 files changed, 36 insertions(+) (limited to 'intern/cycles/scene') diff --git a/intern/cycles/scene/integrator.cpp b/intern/cycles/scene/integrator.cpp index e9ff868c3fc..737db8b98d5 100644 --- a/intern/cycles/scene/integrator.cpp +++ b/intern/cycles/scene/integrator.cpp @@ -63,6 +63,14 @@ NODE_DEFINE(Integrator) SOCKET_BOOLEAN(caustics_reflective, "Reflective Caustics", true); SOCKET_BOOLEAN(caustics_refractive, "Refractive Caustics", true); SOCKET_FLOAT(filter_glossy, "Filter Glossy", 0.0f); + + SOCKET_BOOLEAN(use_direct_light, "Use Direct Light", true); + SOCKET_BOOLEAN(use_indirect_light, "Use Indirect Light", true); + SOCKET_BOOLEAN(use_diffuse, "Use Diffuse", true); + SOCKET_BOOLEAN(use_glossy, "Use Glossy", true); + SOCKET_BOOLEAN(use_transmission, "Use Transmission", true); + SOCKET_BOOLEAN(use_emission, "Use Emission", true); + SOCKET_INT(seed, "Seed", 0); SOCKET_FLOAT(sample_clamp_direct, "Sample Clamp Direct", 0.0f); SOCKET_FLOAT(sample_clamp_indirect, "Sample Clamp Indirect", 0.0f); @@ -184,6 +192,27 @@ void Integrator::device_update(Device *device, DeviceScene *dscene, Scene *scene kintegrator->caustics_refractive = caustics_refractive; kintegrator->filter_glossy = (filter_glossy == 0.0f) ? FLT_MAX : 1.0f / filter_glossy; + kintegrator->filter_closures = 0; + if (!use_direct_light) { + kintegrator->filter_closures |= FILTER_CLOSURE_DIRECT_LIGHT; + } + if (!use_indirect_light) { + kintegrator->min_bounce = 1; + kintegrator->max_bounce = 1; + } + if (!use_diffuse) { + kintegrator->filter_closures |= FILTER_CLOSURE_DIFFUSE; + } + if (!use_glossy) { + kintegrator->filter_closures |= FILTER_CLOSURE_GLOSSY; + } + if (!use_transmission) { + kintegrator->filter_closures |= FILTER_CLOSURE_TRANSMISSION; + } + if (!use_emission) { + kintegrator->filter_closures |= FILTER_CLOSURE_EMISSION; + } + kintegrator->seed = seed; kintegrator->sample_clamp_direct = (sample_clamp_direct == 0.0f) ? FLT_MAX : diff --git a/intern/cycles/scene/integrator.h b/intern/cycles/scene/integrator.h index 75764bcdedc..464d96ca01b 100644 --- a/intern/cycles/scene/integrator.h +++ b/intern/cycles/scene/integrator.h @@ -56,6 +56,13 @@ class Integrator : public Node { NODE_SOCKET_API(bool, caustics_refractive) NODE_SOCKET_API(float, filter_glossy) + NODE_SOCKET_API(bool, use_direct_light); + NODE_SOCKET_API(bool, use_indirect_light); + NODE_SOCKET_API(bool, use_diffuse); + NODE_SOCKET_API(bool, use_glossy); + NODE_SOCKET_API(bool, use_transmission); + NODE_SOCKET_API(bool, use_emission); + NODE_SOCKET_API(int, seed) NODE_SOCKET_API(float, sample_clamp_direct) -- cgit v1.2.3