Commit: c73206acc5c6b5a53e55666a6553ee14930b1ca1
Author: Lukas Stockner
Date:   Fri Jun 9 23:02:56 2017 +0200
Branches: master
https://developer.blender.org/rBc73206acc5c6b5a53e55666a6553ee14930b1ca1

Cycles: Fix denoising passes being written when they're not actually generated

===================================================================

M       intern/cycles/blender/addon/engine.py
M       intern/cycles/blender/addon/properties.py
M       intern/cycles/blender/blender_session.cpp
M       intern/cycles/blender/blender_sync.cpp
M       intern/cycles/blender/blender_sync.h

===================================================================

diff --git a/intern/cycles/blender/addon/engine.py 
b/intern/cycles/blender/addon/engine.py
index b5149b5082e..3018fd5b316 100644
--- a/intern/cycles/blender/addon/engine.py
+++ b/intern/cycles/blender/addon/engine.py
@@ -239,7 +239,8 @@ def register_passes(engine, scene, srl):
     if crl.pass_debug_bvh_intersections:       engine.register_pass(scene, 
srl, "Debug BVH Intersections",       1, "X", 'VALUE')
     if crl.pass_debug_ray_bounces:             engine.register_pass(scene, 
srl, "Debug Ray Bounces",             1, "X", 'VALUE')
 
-    if crl.use_denoising and crl.denoising_store_passes:
+    cscene = scene.cycles
+    if crl.use_denoising and crl.denoising_store_passes and not 
cscene.use_progressive_refine:
         engine.register_pass(scene, srl, "Denoising Normal",          3, 
"XYZ", 'VECTOR')
         engine.register_pass(scene, srl, "Denoising Normal Variance", 3, 
"XYZ", 'VECTOR')
         engine.register_pass(scene, srl, "Denoising Albedo",          3, 
"RGB", 'COLOR')
diff --git a/intern/cycles/blender/addon/properties.py 
b/intern/cycles/blender/addon/properties.py
index 8bb25aba13c..127e3bd7861 100644
--- a/intern/cycles/blender/addon/properties.py
+++ b/intern/cycles/blender/addon/properties.py
@@ -1209,6 +1209,7 @@ class CyclesRenderLayerSettings(bpy.types.PropertyGroup):
                 name="Use Denoising",
                 description="Denoise the rendered image",
                 default=False,
+                update=update_render_passes,
                 )
         cls.denoising_diffuse_direct = BoolProperty(
                 name="Diffuse Direct",
diff --git a/intern/cycles/blender/blender_session.cpp 
b/intern/cycles/blender/blender_session.cpp
index c6a59577507..2b5dd5eadea 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -399,14 +399,7 @@ void BlenderSession::render()
                BL::RenderLayer b_rlay = *b_single_rlay;
 
                /* add passes */
-               array<Pass> passes;
-               if(session_params.device.advanced_shading) {
-                       passes = sync->sync_render_passes(b_rlay, 
*b_layer_iter);
-               }
-               else {
-                       Pass::add(PASS_COMBINED, passes);
-               }
-
+               array<Pass> passes = sync->sync_render_passes(b_rlay, 
*b_layer_iter, session_params);
                buffer_params.passes = passes;
 
                PointerRNA crl = RNA_pointer_get(&b_layer_iter->ptr, "cycles");
diff --git a/intern/cycles/blender/blender_sync.cpp 
b/intern/cycles/blender/blender_sync.cpp
index 41723599874..3a00384458a 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -553,11 +553,16 @@ int BlenderSync::get_denoising_pass(BL::RenderPass& 
b_pass)
 }
 
 array<Pass> BlenderSync::sync_render_passes(BL::RenderLayer& b_rlay,
-                                            BL::SceneRenderLayer& b_srlay)
+                                            BL::SceneRenderLayer& b_srlay,
+                                            const SessionParams 
&session_params)
 {
        array<Pass> passes;
        Pass::add(PASS_COMBINED, passes);
 
+       if(!session_params.device.advanced_shading) {
+               return passes;
+       }
+
        /* loop over passes */
        BL::RenderLayer::passes_iterator b_pass_iter;
 
@@ -572,7 +577,9 @@ array<Pass> 
BlenderSync::sync_render_passes(BL::RenderLayer& b_rlay,
        }
 
        PointerRNA crp = RNA_pointer_get(&b_srlay.ptr, "cycles");
-       if(get_boolean(crp, "denoising_store_passes")) {
+       if(get_boolean(crp, "denoising_store_passes") &&
+          get_boolean(crp, "use_denoising") &&
+          !session_params.progressive_refine) {
                b_engine.add_pass("Denoising Normal",          3, "XYZ", 
b_srlay.name().c_str());
                b_engine.add_pass("Denoising Normal Variance", 3, "XYZ", 
b_srlay.name().c_str());
                b_engine.add_pass("Denoising Albedo",          3, "RGB", 
b_srlay.name().c_str());
diff --git a/intern/cycles/blender/blender_sync.h 
b/intern/cycles/blender/blender_sync.h
index 0950285d976..4ec46424b5a 100644
--- a/intern/cycles/blender/blender_sync.h
+++ b/intern/cycles/blender/blender_sync.h
@@ -68,7 +68,8 @@ public:
                       const char *layer = 0);
        void sync_render_layers(BL::SpaceView3D& b_v3d, const char *layer);
        array<Pass> sync_render_passes(BL::RenderLayer& b_rlay,
-                                      BL::SceneRenderLayer& b_srlay);
+                                      BL::SceneRenderLayer& b_srlay,
+                                      const SessionParams &session_params);
        void sync_integrator();
        void sync_camera(BL::RenderSettings& b_render,
                         BL::Object& b_override,

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to