[Bf-blender-cvs] [00b10f9c3f2] master: Fix T63359: no render preview when save buffers is on

Brecht Van Lommel noreply at git.blender.org
Tue Jun 18 14:01:25 CEST 2019


Commit: 00b10f9c3f24afdd3307631209906ff79298f508
Author: Brecht Van Lommel
Date:   Tue Jun 18 12:47:16 2019 +0200
Branches: master
https://developer.blender.org/rB00b10f9c3f24afdd3307631209906ff79298f508

Fix T63359: no render preview when save buffers is on

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

M	source/blender/editors/render/render_internal.c
M	source/blender/render/intern/source/external_engine.c
M	source/blender/render/intern/source/render_result.c

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

diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c
index 8f84d84f01d..352593a15ad 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -137,10 +137,7 @@ static void image_buffer_rect_update(RenderJob *rj,
   ColorManagedViewSettings *view_settings;
   ColorManagedDisplaySettings *display_settings;
 
-  /* Exception for exr tiles -- display buffer conversion happens here,
-   * NOT in the color management pipeline.
-   */
-  if (ibuf->userflags & IB_DISPLAY_BUFFER_INVALID && rr->do_exr_tile == false) {
+  if (ibuf->userflags & IB_DISPLAY_BUFFER_INVALID) {
     /* The whole image buffer it so be color managed again anyway. */
     return;
   }
@@ -631,7 +628,7 @@ static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrec
      * this case GLSL doesn't have original float buffer to
      * operate with.
      */
-    if (rr->do_exr_tile || !rj->supports_glsl_draw || ibuf->channels == 1 ||
+    if (!rj->supports_glsl_draw || ibuf->channels == 1 ||
         ED_draw_imbuf_method(ibuf) != IMAGE_DRAW_METHOD_GLSL) {
       image_buffer_rect_update(rj, rr, ibuf, &rj->iuser, renrect, viewname);
     }
diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c
index 83d857211d0..0292a807131 100644
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@ -288,6 +288,7 @@ void RE_engine_end_result(
     if (re->result->do_exr_tile) {
       if (!cancel && merge_results) {
         render_result_exr_file_merge(re->result, result, re->viewname);
+        render_result_merge(re->result, result);
       }
     }
     else if (!(re->test_break(re->tbh) && (re->r.scemode & R_BUTS_PREVIEW))) {
diff --git a/source/blender/render/intern/source/render_result.c b/source/blender/render/intern/source/render_result.c
index 8a95cc6397f..cf9bfe99474 100644
--- a/source/blender/render/intern/source/render_result.c
+++ b/source/blender/render/intern/source/render_result.c
@@ -240,7 +240,10 @@ static RenderPass *render_layer_add_pass(RenderResult *rr,
                           false);
     }
   }
-  else {
+
+  /* Always allocate combined for display, in case of save buffers
+   * other passes are not allocated and only saved to the EXR file. */
+  if (rl->exrhandle == NULL || STREQ(rpass->name, RE_PASSNAME_COMBINED)) {
     float *rect;
     int x;
 
@@ -853,10 +856,14 @@ void render_result_merge(RenderResult *rr, RenderResult *rrpart)
   for (rl = rr->layers.first; rl; rl = rl->next) {
     rlp = RE_GetRenderLayer(rrpart, rl->name);
     if (rlp) {
-      /* passes are allocated in sync */
+      /* Passes are allocated in sync. */
       for (rpass = rl->passes.first, rpassp = rlp->passes.first; rpass && rpassp;
            rpass = rpass->next) {
-        /* renderresult have all passes, renderpart only the active view's passes */
+        /* For save buffers, skip any passes that are only saved to disk. */
+        if (rpass->rect == NULL || rpassp->rect == NULL) {
+          continue;
+        }
+        /* Renderresult have all passes, renderpart only the active view's passes. */
         if (strcmp(rpassp->fullname, rpass->fullname) != 0) {
           continue;
         }



More information about the Bf-blender-cvs mailing list