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 <brechtvanlommel@gmail.com>2019-06-18 13:47:16 +0300
committerBrecht Van Lommel <brechtvanlommel@gmail.com>2019-06-18 14:59:55 +0300
commit00b10f9c3f24afdd3307631209906ff79298f508 (patch)
treed7de776746114edcef38f4c2cfd0c5ce6df12c9f /source/blender/render
parent96f0d22e3b8a2c50cdb96e82146489f26628c127 (diff)
Fix T63359: no render preview when save buffers is on
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/intern/source/external_engine.c1
-rw-r--r--source/blender/render/intern/source/render_result.c13
2 files changed, 11 insertions, 3 deletions
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;
}