[Bf-blender-cvs] [dfe952114ad] temp-render-depsgraph: Fix Sequencer for new depsgraph/render changes

Dalai Felinto noreply at git.blender.org
Mon Feb 26 20:37:27 CET 2018


Commit: dfe952114adb2a55b5d4cdc8434a7c6fbcf0b77f
Author: Dalai Felinto
Date:   Mon Feb 26 16:37:19 2018 -0300
Branches: temp-render-depsgraph
https://developer.blender.org/rBdfe952114adb2a55b5d4cdc8434a7c6fbcf0b77f

Fix Sequencer for new depsgraph/render changes

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

M	source/blender/blenkernel/intern/sequencer.c
M	source/blender/render/intern/source/pipeline.c

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

diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index b46f11f57a3..b11c1583236 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -3269,9 +3269,10 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq
 	// have_seq = (scene->r.scemode & R_DOSEQ) && scene->ed && scene->ed->seqbase.first);  /* UNUSED */
 	have_comp = (scene->r.scemode & R_DOCOMP) && scene->use_nodes && scene->nodetree;
 
-	/* Get depsgraph and scene layer for the strip. */
+	/* Get view layer for the strip. */
 	ViewLayer *view_layer = BKE_view_layer_from_scene_get(scene);
-	Depsgraph *depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
+	/* Depsgraph will be NULL when doing rendering. */
+	Depsgraph *depsgraph = NULL;
 
 	orig_data.scemode = scene->r.scemode;
 	orig_data.cfra = scene->r.cfra;
@@ -3329,6 +3330,7 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq
 
 		/* opengl offscreen render */
 		context->eval_ctx->engine_type = RE_engines_find(scene->view_render.engine_id);
+		depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
 		BKE_scene_graph_update_for_newframe(context->eval_ctx, depsgraph, context->bmain, scene, view_layer);
 		ibuf = sequencer_view3d_cb(
 		        /* set for OpenGL render (NULL when scrubbing) */
@@ -3360,14 +3362,7 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq
 			if (re == NULL)
 				re = RE_NewSceneRender(scene);
 
-			/* NOTE: Without this tag rendering from command line fails.
-			 * TODO(sergey): Need some proper solution with ported
-			 * BKE_scene_set_background() or DEG_on_visible_change() ?
-			 */
-			DEG_graph_id_tag_update(context->bmain, depsgraph, &scene->id, 0);
-
-			BKE_scene_graph_update_for_newframe(context->eval_ctx, depsgraph, context->bmain, scene, view_layer);
-			RE_BlenderFrame(re, context->bmain, scene, NULL, camera, scene->lay, frame, false);
+			RE_BlenderFrame(re, context->bmain, scene, view_layer, camera, scene->lay, frame, false);
 
 			/* restore previous state after it was toggled on & off by RE_BlenderFrame */
 			G.is_rendering = is_rendering;
@@ -3425,7 +3420,7 @@ finally:
 	scene->r.cfra = orig_data.cfra;
 	scene->r.subframe = orig_data.subframe;
 
-	if (is_frame_update) {
+	if (is_frame_update && (depsgraph != NULL)) {
 		BKE_scene_graph_update_for_newframe(context->eval_ctx, depsgraph, context->bmain, scene, view_layer);
 	}
 
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index 1ae3eb0dda4..c049da5f69c 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -2725,9 +2725,10 @@ static void do_render_seq(Render *re)
 
 	tot_views = BKE_scene_multiview_num_views_get(&re->r);
 	ibuf_arr = MEM_mallocN(sizeof(ImBuf *) * tot_views, "Sequencer Views ImBufs");
+	EvaluationContext *eval_ctx = DEG_evaluation_context_new(DAG_EVAL_RENDER);
 
 	BKE_sequencer_new_render_data(
-	        NULL, re->main, re->scene,
+	        eval_ctx, re->main, re->scene,
 	        re_x, re_y, 100,
 	        &context);
 
@@ -2749,6 +2750,8 @@ static void do_render_seq(Render *re)
 		}
 	}
 
+	DEG_evaluation_context_free(eval_ctx);
+
 	rr = re->result;
 
 	BLI_rw_mutex_lock(&re->resultmutex, THREAD_LOCK_WRITE);



More information about the Bf-blender-cvs mailing list