Commit: 50c129760d0a32802a8b83a1d977a80c42210c00
Author: Brecht Van Lommel
Date:   Thu Nov 2 15:05:57 2017 +0100
Branches: master
https://developer.blender.org/rB50c129760d0a32802a8b83a1d977a80c42210c00

Fix Cycles showing empty tiles while they are being denoised.

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

M       intern/cycles/blender/blender_session.cpp
M       source/blender/render/intern/source/external_engine.c

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

diff --git a/intern/cycles/blender/blender_session.cpp 
b/intern/cycles/blender/blender_session.cpp
index 73383ad5080..d9301125641 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -330,20 +330,20 @@ void 
BlenderSession::do_write_update_render_tile(RenderTile& rtile, bool do_upda
        BL::RenderLayer b_rlay = *b_single_rlay;
 
        if(do_update_only) {
-               /* update only needed */
+               /* Sample would be zero at initial tile update, which is only 
needed
+                * to tag tile form blender side as IN PROGRESS for proper 
highlight
+                * no buffers should be sent to blender yet. For denoise we also
+                * keep showing the noisy buffers until denoise is done. */
+               bool merge = (rtile.sample != 0) && (rtile.task != 
RenderTile::DENOISE);
 
-               if(rtile.sample != 0) {
-                       /* sample would be zero at initial tile update, which 
is only needed
-                        * to tag tile form blender side as IN PROGRESS for 
proper highlight
-                        * no buffers should be sent to blender yet
-                        */
+               if(merge) {
                        update_render_result(b_rr, b_rlay, rtile);
                }
 
-               end_render_result(b_engine, b_rr, true, highlight, false);
+               end_render_result(b_engine, b_rr, true, highlight, merge);
        }
        else {
-               /* write result */
+               /* Write final render result. */
                write_render_result(b_rr, b_rlay, rtile);
                end_render_result(b_engine, b_rr, false, false, true);
        }
diff --git a/source/blender/render/intern/source/external_engine.c 
b/source/blender/render/intern/source/external_engine.c
index b1cd23d0827..8764abf9674 100644
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@ -273,7 +273,7 @@ void RE_engine_end_result(RenderEngine *engine, 
RenderResult *result, int cancel
                RenderPart *pa = get_part_from_result(re, result);
 
                if (pa) {
-                       pa->status = (merge_results)? PART_STATUS_MERGED: 
PART_STATUS_RENDERED;
+                       pa->status = (!cancel && merge_results)? 
PART_STATUS_MERGED: PART_STATUS_RENDERED;
                }
                else if (re->result->do_exr_tile) {
                        /* if written result does not match any tile and we are 
using save

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

Reply via email to