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:
-rw-r--r--source/blender/editors/render/render_internal.cc6
-rw-r--r--source/blender/render/intern/pipeline.c11
2 files changed, 17 insertions, 0 deletions
diff --git a/source/blender/editors/render/render_internal.cc b/source/blender/editors/render/render_internal.cc
index 8e9a052381c..cd3b8183d48 100644
--- a/source/blender/editors/render/render_internal.cc
+++ b/source/blender/editors/render/render_internal.cc
@@ -634,6 +634,12 @@ static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrec
static void current_scene_update(void *rjv, Scene *scene)
{
RenderJob *rj = static_cast<RenderJob *>(rjv);
+
+ if (rj->current_scene != scene) {
+ /* Image must be updated when rendered scene changes. */
+ BKE_image_partial_update_mark_full_update(rj->image);
+ }
+
rj->current_scene = scene;
rj->iuser.scene = scene;
}
diff --git a/source/blender/render/intern/pipeline.c b/source/blender/render/intern/pipeline.c
index 739202564af..c2b719e46a7 100644
--- a/source/blender/render/intern/pipeline.c
+++ b/source/blender/render/intern/pipeline.c
@@ -1122,6 +1122,8 @@ static void do_render_compositor_scenes(Render *re)
return;
}
+ bool changed_scene = false;
+
/* now foreach render-result node we do a full render */
/* results are stored in a way compositor will find it */
GSet *scenes_rendered = BLI_gset_ptr_new(__func__);
@@ -1134,11 +1136,20 @@ static void do_render_compositor_scenes(Render *re)
do_render_compositor_scene(re, scene, cfra);
BLI_gset_add(scenes_rendered, scene);
node->typeinfo->updatefunc(restore_scene->nodetree, node);
+
+ if (scene != re->scene) {
+ changed_scene = true;
+ }
}
}
}
}
BLI_gset_free(scenes_rendered, NULL);
+
+ if (changed_scene) {
+ /* If rendered another scene, switch back to the current scene with compositing nodes. */
+ re->current_scene_update(re->suh, re->scene);
+ }
}
/* bad call... need to think over proper method still */