diff options
-rw-r--r-- | intern/cycles/blender/blender_session.cpp | 16 | ||||
-rw-r--r-- | source/blender/render/intern/source/external_engine.c | 2 |
2 files changed, 9 insertions, 9 deletions
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 |