[Bf-blender-cvs] [eec5d3a8a8a] blender2.8: Depsgraph: remove engine type from evaluation context.

Brecht Van Lommel noreply at git.blender.org
Fri Apr 13 14:23:05 CEST 2018


Commit: eec5d3a8a8a26256fbae39d4f1fb01de6a648eea
Author: Brecht Van Lommel
Date:   Fri Apr 6 10:55:11 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBeec5d3a8a8a26256fbae39d4f1fb01de6a648eea

Depsgraph: remove engine type from evaluation context.

This was only used for viewport rendering, where we can just pass the engine
type directly. There is no technical reason why we can't draw the same depsgrpah
with different render engines.

It also led to some weird things like requiring a render engine for snapping
and raycast API functions.

Differential Revision: https://developer.blender.org/D3145

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

M	source/blender/blenkernel/BKE_sequencer.h
M	source/blender/blenkernel/intern/context.c
M	source/blender/blenkernel/intern/sequencer.c
M	source/blender/depsgraph/DEG_depsgraph.h
M	source/blender/depsgraph/intern/depsgraph_eval.cc
M	source/blender/draw/intern/draw_manager.c
M	source/blender/editors/armature/editarmature_sketch.c
M	source/blender/editors/curve/editcurve.c
M	source/blender/editors/include/ED_transform_snap_object_context.h
M	source/blender/editors/include/ED_view3d.h
M	source/blender/editors/mesh/editmesh_tools.c
M	source/blender/editors/render/render_opengl.c
M	source/blender/editors/sculpt_paint/paint_image_proj.c
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/editors/space_view3d/view3d_draw_legacy.c
M	source/blender/editors/space_view3d/view3d_manipulator_ruler.c
M	source/blender/editors/space_view3d/view3d_ruler.c
M	source/blender/editors/space_view3d/view3d_walk.c
M	source/blender/editors/transform/transform_snap.c
M	source/blender/editors/transform/transform_snap_object.c
M	source/blender/makesrna/intern/rna_scene_api.c
M	source/blender/windowmanager/intern/wm_files.c

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

diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h
index 140f3dd513d..21f3f344e64 100644
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@ -40,6 +40,7 @@ struct GPUFX;
 struct ImBuf;
 struct Main;
 struct Mask;
+struct RenderEngineType;
 struct Scene;
 struct Sequence;
 struct SequenceModifierData;
@@ -435,7 +436,8 @@ enum {
 
 typedef struct ImBuf *(*SequencerDrawView)(
         const struct EvaluationContext *eval_ctx, struct Scene *scene,
-        struct ViewLayer *view_layer, struct Object *camera, int width, int height,
+        struct ViewLayer *view_layer, struct RenderEngineType *engine_type,
+        struct Object *camera, int width, int height,
         unsigned int flag, unsigned int draw_flags, int drawtype, int alpha_mode,
         int samples, const char *viewname,
         struct GPUOffScreen *ofs, char err_out[256]);
diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c
index 98e5bb8ce6e..d550f1945db 100644
--- a/source/blender/blenkernel/intern/context.c
+++ b/source/blender/blenkernel/intern/context.c
@@ -1273,9 +1273,8 @@ void CTX_data_eval_ctx(const bContext *C, EvaluationContext *eval_ctx)
 
 	Scene *scene = CTX_data_scene(C);
 	ViewLayer *view_layer = CTX_data_view_layer(C);
-	RenderEngineType *engine_type = CTX_data_engine_type(C);
 	DEG_evaluation_context_init_from_scene(
 	        eval_ctx,
-	        scene, view_layer, engine_type,
+	        scene, view_layer,
 	        DAG_EVAL_VIEWPORT);
 }
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 263c30cabca..e7f34257d04 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -3332,12 +3332,13 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq
 			context->scene->r.seq_prev_type = 3 /* == OB_SOLID */;
 
 		/* opengl offscreen render */
-		context->eval_ctx->engine_type = RE_engines_find(scene->view_render.engine_id);
+		RenderEngineType *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) */
-		        context->eval_ctx, scene, view_layer, camera, width, height, IB_rect,
+		        context->eval_ctx, scene, view_layer, engine_type,
+		        camera, width, height, IB_rect,
 		        draw_flags, context->scene->r.seq_prev_type,
 		        scene->r.alphamode, context->gpu_samples, viewname,
 		        context->gpu_offscreen, err_out);
diff --git a/source/blender/depsgraph/DEG_depsgraph.h b/source/blender/depsgraph/DEG_depsgraph.h
index 9c00ed2ddcc..e30b46c053a 100644
--- a/source/blender/depsgraph/DEG_depsgraph.h
+++ b/source/blender/depsgraph/DEG_depsgraph.h
@@ -86,7 +86,6 @@ typedef struct EvaluationContext {
 
 	struct Depsgraph *depsgraph;
 	struct ViewLayer *view_layer;
-	struct RenderEngineType *engine_type;
 } EvaluationContext;
 
 /* DagNode->eval_flags */
@@ -219,7 +218,6 @@ void DEG_evaluation_context_init_from_scene(
         struct EvaluationContext *eval_ctx,
         struct Scene *scene,
         struct ViewLayer *view_layer,
-        struct RenderEngineType *engine_type,
         eEvaluationMode mode);
 
 void DEG_evaluation_context_init_from_view_layer_for_render(
diff --git a/source/blender/depsgraph/intern/depsgraph_eval.cc b/source/blender/depsgraph/intern/depsgraph_eval.cc
index d50e55e4cfb..434c3ec7545 100644
--- a/source/blender/depsgraph/intern/depsgraph_eval.cc
+++ b/source/blender/depsgraph/intern/depsgraph_eval.cc
@@ -83,13 +83,11 @@ void DEG_evaluation_context_init_from_scene(
         EvaluationContext *eval_ctx,
         Scene *scene,
         ViewLayer *view_layer,
-        RenderEngineType *engine_type,
         eEvaluationMode mode)
 {
 	DEG_evaluation_context_init(eval_ctx, mode);
 	eval_ctx->depsgraph = BKE_scene_get_depsgraph(scene, view_layer, true);
 	eval_ctx->view_layer = view_layer;
-	eval_ctx->engine_type = engine_type;
 	eval_ctx->ctime = BKE_scene_frame_get(scene);
 }
 
@@ -107,7 +105,6 @@ void DEG_evaluation_context_init_from_view_layer_for_render(
 	eval_ctx->ctime = BKE_scene_frame_get(scene);
 	eval_ctx->depsgraph = depsgraph;
 	eval_ctx->view_layer = view_layer_original;
-	eval_ctx->engine_type = NULL;
 }
 
 void DEG_evaluation_context_init_from_depsgraph(
@@ -120,7 +117,6 @@ void DEG_evaluation_context_init_from_depsgraph(
 	eval_ctx->ctime = (float)scene->r.cfra + scene->r.subframe;
 	eval_ctx->depsgraph = depsgraph;
 	eval_ctx->view_layer = DEG_get_evaluated_view_layer(depsgraph);
-	eval_ctx->engine_type = NULL;
 }
 
 /* Free evaluation context. */
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 15b0c793a50..8090bcb28ca 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -357,7 +357,6 @@ static void drw_state_eval_ctx_init(DRWManager *dst)
 	        &draw_ctx->eval_ctx,
 	        draw_ctx->scene,
 	        draw_ctx->view_layer,
-	        draw_ctx->engine_type,
 	        DST.options.is_scene_render ? DAG_EVAL_RENDER : DAG_EVAL_VIEWPORT);
 }
 
diff --git a/source/blender/editors/armature/editarmature_sketch.c b/source/blender/editors/armature/editarmature_sketch.c
index dcf4c9a0e9c..1f1468a8e41 100644
--- a/source/blender/editors/armature/editarmature_sketch.c
+++ b/source/blender/editors/armature/editarmature_sketch.c
@@ -998,7 +998,7 @@ static int sk_getStrokeSnapPoint(bContext *C, SK_Point *pt, SK_Sketch *sketch, S
 	 * the ideal would be to call this function only at the beginning of the snap operation,
 	 * or at the beginning of the operator itself */
 	struct SnapObjectContext *snap_context = ED_transform_snap_object_context_create_view3d(
-	        CTX_data_main(C), CTX_data_scene(C), CTX_data_view_layer(C), CTX_data_engine_type(C), 0,
+	        CTX_data_main(C), CTX_data_scene(C), CTX_data_view_layer(C), 0,
 	        CTX_wm_region(C), CTX_wm_view3d(C));
 
 	float mvalf[2] = {UNPACK2(dd->mval)};
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c
index f0b3233e35b..3ea8592ac3e 100644
--- a/source/blender/editors/curve/editcurve.c
+++ b/source/blender/editors/curve/editcurve.c
@@ -5013,8 +5013,7 @@ static int add_vertex_invoke(bContext *C, wmOperator *op, const wmEvent *event)
 			const float mval[2] = {UNPACK2(event->mval)};
 
 			struct SnapObjectContext *snap_context = ED_transform_snap_object_context_create_view3d(
-			        CTX_data_main(C), vc.scene, vc.view_layer, vc.engine_type, 0,
-			        vc.ar, vc.v3d);
+			        CTX_data_main(C), vc.scene, vc.view_layer, 0, vc.ar, vc.v3d);
 
 			ED_transform_snap_object_project_view3d_mixed(
 			        snap_context,
diff --git a/source/blender/editors/include/ED_transform_snap_object_context.h b/source/blender/editors/include/ED_transform_snap_object_context.h
index 8761f2c5361..26cef2599bd 100644
--- a/source/blender/editors/include/ED_transform_snap_object_context.h
+++ b/source/blender/editors/include/ED_transform_snap_object_context.h
@@ -30,7 +30,6 @@ struct BMEdge;
 struct BMFace;
 
 struct ListBase;
-struct RenderEngineType;
 struct Scene;
 struct ViewLayer;
 struct Main;
@@ -76,9 +75,9 @@ struct SnapObjectParams {
 
 typedef struct SnapObjectContext SnapObjectContext;
 SnapObjectContext *ED_transform_snap_object_context_create(
-        struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, struct RenderEngineType *engine_type, int flag);
+        struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, int flag);
 SnapObjectContext *ED_transform_snap_object_context_create_view3d(
-        struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, struct RenderEngineType *engine_type, int flag,
+        struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, int flag,
         /* extra args for view3d */
         const struct ARegion *ar, const struct View3D *v3d);
 void ED_transform_snap_object_context_destroy(SnapObjectContext *sctx);
diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h
index 1619c59ddac..7f18c10f970 100644
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@ -383,10 +383,12 @@ void  ED_draw_object_facemap(const struct EvaluationContext *eval_ctx, struct Sc
 bool ED_view3d_context_activate(struct bContext *C);
 void ED_view3d_draw_offscreen_init(
         const struct EvaluationContext *eval_ctx, struct Scene *scene,
-        struct ViewLayer *view_layer, struct View3D *v3d);
+        struct ViewLayer *view_layer, struct RenderEngineType *engine_type,
+        struct View3D *v3d);
 void ED_view3d_draw_offscreen(
         const struct EvaluationContext *eval_ctx, struct Scene *scene,
-        struct ViewLayer *view_layer, struct View3D *v3d, struct ARegion *ar, int winx, int winy, float viewmat[4][4],
+        struct ViewLayer *view_layer, struct RenderEngineType *engine_type,
+        struct View3D *v3d, struct ARegion *ar, int winx, int winy, float viewmat[4][4],
         float winmat[4][4], bool do_bgpic, bool do_sky, bool is_persp, const char *viewname,
         struct GPUFXSettings *fx_settings,
         struct GPUOffScreen *ofs, struct GPUViewport *viewport);
@@ -408,13 +410,15 @@ enum {
 
 struct ImBuf *ED_view3d_draw_offscreen_imbuf(
         const struct EvaluationContext *eval_ctx, struct Scene *scene,
-        struct ViewLayer *view_layer, struct View3D *v3d, struct ARegion *ar,
+        struct ViewLayer *view_layer, struct RenderEngineType *engine_type,
+        struct View3D *v3d, struct ARegion *ar,
         int sizex, int sizey, unsigned int flag, unsigned int draw_flags,
         int alpha_mode, int samples, const char *viewname,
         struct GPUOffScreen *ofs, char err_out[256]);
 struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(
         const struct EvaluationCon

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list