Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2021-11-12 20:26:30 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-11-12 22:03:46 +0300
commitef0b8d6306e5e1cddf1d7a2087e5589adcf74172 (patch)
tree1fb8369fc17afa6f06f82b0ca14cf1209ca7e2c5 /intern/cycles/scene
parent9d0d4b8601dfb9de335dd7af32562cbfb94238a6 (diff)
Fix T92002: no Cycles combined baking support for filter settings
Diffstat (limited to 'intern/cycles/scene')
-rw-r--r--intern/cycles/scene/integrator.cpp29
-rw-r--r--intern/cycles/scene/integrator.h7
2 files changed, 36 insertions, 0 deletions
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)