[Bf-blender-cvs] [b82954f6f4e] master: Fix T51455: Render Layers in compositor from a different scene not working

Lukas Stockner noreply at git.blender.org
Wed May 10 22:42:56 CEST 2017


Commit: b82954f6f4e17c201859f9f15b2d73bd11fb68f2
Author: Lukas Stockner
Date:   Wed May 10 22:39:43 2017 +0200
Branches: master
https://developer.blender.org/rBb82954f6f4e17c201859f9f15b2d73bd11fb68f2

Fix T51455: Render Layers in compositor from a different scene not working

The code only updated nodes in the nodetree of the scene to which the render layer belongs. Therefore, when using scene B in the compositor setup of scene A, A's node wouldn't be updated.
With this fix, the update function loops over all scenes and checks them for relevant nodes.

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

M	source/blender/render/intern/source/external_engine.c

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

diff --git a/source/blender/render/intern/source/external_engine.c b/source/blender/render/intern/source/external_engine.c
index ee6dc96276c..a581f7bd198 100644
--- a/source/blender/render/intern/source/external_engine.c
+++ b/source/blender/render/intern/source/external_engine.c
@@ -783,7 +783,13 @@ void RE_engine_register_pass(struct RenderEngine *engine, struct Scene *scene, s
 		return;
 	}
 
-	if (scene->nodetree) {
-		ntreeCompositRegisterPass(scene->nodetree, scene, srl, name, type);
+	/* Register the pass in all scenes that have a render layer node for this layer.
+	 * Since multiple scenes can be used in the compositor, the code must loop over all scenes
+	 * and check whether their nodetree has a node that needs to be updated. */
+	Scene *sce;
+	for (sce = G.main->scene.first; sce; sce = sce->id.next) {
+		if (sce->nodetree) {
+			ntreeCompositRegisterPass(sce->nodetree, scene, srl, name, type);
+		}
 	}
 }




More information about the Bf-blender-cvs mailing list