[Bf-blender-cvs] [7ea62916eca] temp-render-depsgraph: Move render depsgraph to where it belongs: RenderLayer

Dalai Felinto noreply at git.blender.org
Wed Feb 21 21:51:53 CET 2018


Commit: 7ea62916ecaa2ee7aa10b5e5dcb6b675623b8d0c
Author: Dalai Felinto
Date:   Wed Feb 21 17:01:21 2018 -0300
Branches: temp-render-depsgraph
https://developer.blender.org/rB7ea62916ecaa2ee7aa10b5e5dcb6b675623b8d0c

Move render depsgraph to where it belongs: RenderLayer

This fixes compositing for Eevee as well as lay the ground work to fix Cycles
objects iteration in blender 2.8.

Note: Work in progress, the following is not working:
* Cycles
** see "#ifdef TODO" in blender_session.cpp

* Sequencer
** pipeline.c calls BKE_sequencer_new_render_data() early on, and assumes an eval_ctx from that moment on

* Point cache texture (RE_sample_material_init)
** needs eval_ctx :/

What is not handled here: Get rid of view layer in EvaluationContext.
We should store ViewLayer in RenderLayer. The patch is massive as it is though.

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

M	intern/cycles/blender/blender_python.cpp
M	intern/cycles/blender/blender_session.cpp
M	intern/cycles/blender/blender_session.h
M	intern/cycles/blender/blender_sync.cpp
M	intern/cycles/blender/blender_sync.h
M	source/blender/blenkernel/intern/scene.c
M	source/blender/blenkernel/intern/sequencer.c
M	source/blender/editors/object/object_bake.c
M	source/blender/editors/object/object_bake_api.c
M	source/blender/editors/render/render_internal.c
M	source/blender/freestyle/intern/blender_interface/BlenderStrokeRenderer.cpp
M	source/blender/makesrna/intern/rna_render.c
M	source/blender/render/extern/include/RE_engine.h
M	source/blender/render/extern/include/RE_pipeline.h
M	source/blender/render/extern/include/RE_render_ext.h
M	source/blender/render/intern/include/pointdensity.h
M	source/blender/render/intern/include/render_types.h
M	source/blender/render/intern/include/renderdatabase.h
M	source/blender/render/intern/source/convertblender.c
M	source/blender/render/intern/source/external_engine.c
M	source/blender/render/intern/source/initrender.c
M	source/blender/render/intern/source/pipeline.c
M	source/blender/render/intern/source/pointdensity.c
M	source/blender/render/intern/source/render_result.c
M	source/blender/render/intern/source/render_texture.c
M	source/blenderplayer/bad_level_call_stubs/stubs.c
M	source/creator/creator_args.c

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

diff --git a/intern/cycles/blender/blender_python.cpp b/intern/cycles/blender/blender_python.cpp
index 9ade27d57d7..17bf8ceef36 100644
--- a/intern/cycles/blender/blender_python.cpp
+++ b/intern/cycles/blender/blender_python.cpp
@@ -203,10 +203,10 @@ static PyObject *exit_func(PyObject * /*self*/, PyObject * /*args*/)
 
 static PyObject *create_func(PyObject * /*self*/, PyObject *args)
 {
-	PyObject *pyengine, *pyuserpref, *pydata, *pygraph, *pyscene, *pyregion, *pyv3d, *pyrv3d;
+	PyObject *pyengine, *pyuserpref, *pydata, *pyscene, *pyregion, *pyv3d, *pyrv3d;
 	int preview_osl;
 
-	if(!PyArg_ParseTuple(args, "OOOOOOOOi", &pyengine, &pyuserpref, &pydata, &pygraph, &pyscene,
+	if(!PyArg_ParseTuple(args, "OOOOOOOi", &pyengine, &pyuserpref, &pydata, &pyscene,
 	                     &pyregion, &pyv3d, &pyrv3d, &preview_osl))
 	{
 		return NULL;
@@ -225,10 +225,6 @@ static PyObject *create_func(PyObject * /*self*/, PyObject *args)
 	RNA_main_pointer_create((Main*)PyLong_AsVoidPtr(pydata), &dataptr);
 	BL::BlendData data(dataptr);
 
-	PointerRNA graphptr;
-	RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pygraph), &graphptr);
-	BL::Depsgraph graph(graphptr);
-
 	PointerRNA sceneptr;
 	RNA_id_pointer_create((ID*)PyLong_AsVoidPtr(pyscene), &sceneptr);
 	BL::Scene scene(sceneptr);
@@ -253,7 +249,7 @@ static PyObject *create_func(PyObject * /*self*/, PyObject *args)
 		int width = region.width();
 		int height = region.height();
 
-		session = new BlenderSession(engine, userpref, data, graph, scene, v3d, rv3d, width, height);
+		session = new BlenderSession(engine, userpref, data, scene, v3d, rv3d, width, height);
 	}
 	else {
 		/* override some settings for preview */
@@ -265,7 +261,7 @@ static PyObject *create_func(PyObject * /*self*/, PyObject *args)
 		}
 
 		/* offline session or preview render */
-		session = new BlenderSession(engine, userpref, data, graph, scene);
+		session = new BlenderSession(engine, userpref, data, scene);
 	}
 
 	python_thread_state_save(&session->python_thread_state);
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 60e49161be2..ad3f9cf9b74 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -52,15 +52,12 @@ int BlenderSession::end_resumable_chunk = 0;
 BlenderSession::BlenderSession(BL::RenderEngine& b_engine,
                                BL::UserPreferences& b_userpref,
                                BL::BlendData& b_data,
-                               BL::Depsgraph& b_depsgraph,
                                BL::Scene& b_scene)
 : b_engine(b_engine),
   b_userpref(b_userpref),
   b_data(b_data),
   b_render(b_engine.render()),
-  b_depsgraph(b_depsgraph),
   b_scene(b_scene),
-  b_view_layer(b_engine.view_layer()),
   b_v3d(PointerRNA_NULL),
   b_rv3d(PointerRNA_NULL),
   python_thread_state(NULL)
@@ -79,7 +76,6 @@ BlenderSession::BlenderSession(BL::RenderEngine& b_engine,
 BlenderSession::BlenderSession(BL::RenderEngine& b_engine,
                                BL::UserPreferences& b_userpref,
                                BL::BlendData& b_data,
-                               BL::Depsgraph& b_depsgraph,
                                BL::Scene& b_scene,
                                BL::SpaceView3D& b_v3d,
                                BL::RegionView3D& b_rv3d,
@@ -88,9 +84,7 @@ BlenderSession::BlenderSession(BL::RenderEngine& b_engine,
   b_userpref(b_userpref),
   b_data(b_data),
   b_render(b_scene.render()),
-  b_depsgraph(b_depsgraph),
   b_scene(b_scene),
-  b_view_layer(b_engine.view_layer()),
   b_v3d(b_v3d),
   b_rv3d(b_rv3d),
   width(width),
@@ -147,6 +141,7 @@ void BlenderSession::create_session()
 
 	session->scene = scene;
 
+#ifdef TODO_NEED_THIS_REFACTORED_TO_HANDLE_LAYERS_SEPARATELY
 	/* create sync */
 	sync = new BlenderSync(b_engine, b_data, b_depsgraph, b_scene, scene, !background, session->progress);
 	BL::Object b_camera_override(b_engine.camera_override());
@@ -169,6 +164,7 @@ void BlenderSession::create_session()
 		sync->sync_integrator();
 		sync->sync_camera(b_render, b_camera_override, width, height, "");
 	}
+#endif
 
 	/* set buffer parameters */
 	BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, b_v3d, b_rv3d, scene->camera, width, height);
@@ -216,6 +212,7 @@ void BlenderSession::reset_session(BL::BlendData& b_data_, BL::Scene& b_scene_)
 	 */
 	session->stats.mem_peak = session->stats.mem_used;
 
+#ifdef TODO_NEED_THIS_REFACTORED_TO_HANDLE_LAYERS_SEPARATELY
 	/* sync object should be re-created */
 	sync = new BlenderSync(b_engine, b_data, b_depsgraph, b_scene, scene, !background, session->progress);
 
@@ -225,6 +222,7 @@ void BlenderSession::reset_session(BL::BlendData& b_data_, BL::Scene& b_scene_)
 	sync->sync_view_layers(b_v3d, NULL);
 	sync->sync_integrator();
 	sync->sync_camera(b_render, b_camera_override, width, height, "");
+#endif
 
 	BL::SpaceView3D b_null_space_view3d(PointerRNA_NULL);
 	BL::RegionView3D b_null_region_view3d(PointerRNA_NULL);
@@ -1303,6 +1301,7 @@ bool BlenderSession::builtin_image_float_pixels(const string &builtin_name,
 		fprintf(stderr, "Cycles error: unexpected smoke volume resolution, skipping\n");
 	}
 	else {
+#ifdef TODO_NEED_VIEW_LAYER_FOR_POINT_DENSITY
 		/* TODO(sergey): Check we're indeed in shader node tree. */
 		PointerRNA ptr;
 		RNA_pointer_create(NULL, &RNA_Node, builtin_data, &ptr);
@@ -1313,6 +1312,7 @@ bool BlenderSession::builtin_image_float_pixels(const string &builtin_name,
 			int settings = background ? 1 : 0;  /* 1 - render settings, 0 - vewport settings. */
 			b_point_density_node.calc_point_density(b_scene, b_view_layer, settings, &length, &pixels);
 		}
+#endif
 	}
 
 	return false;
diff --git a/intern/cycles/blender/blender_session.h b/intern/cycles/blender/blender_session.h
index 8694c9499b8..cbd2303d282 100644
--- a/intern/cycles/blender/blender_session.h
+++ b/intern/cycles/blender/blender_session.h
@@ -36,13 +36,11 @@ public:
 	BlenderSession(BL::RenderEngine& b_engine,
 	               BL::UserPreferences& b_userpref,
 	               BL::BlendData& b_data,
-	               BL::Depsgraph& b_depsgraph,
 	               BL::Scene& b_scene);
 
 	BlenderSession(BL::RenderEngine& b_engine,
 	               BL::UserPreferences& b_userpref,
 	               BL::BlendData& b_data,
-	               BL::Depsgraph& b_depsgraph,
 	               BL::Scene& b_scene,
 	               BL::SpaceView3D& b_v3d,
 	               BL::RegionView3D& b_rv3d,
@@ -106,9 +104,7 @@ public:
 	BL::UserPreferences b_userpref;
 	BL::BlendData b_data;
 	BL::RenderSettings b_render;
-	BL::Depsgraph b_depsgraph;
 	BL::Scene b_scene;
-	BL::ViewLayer b_view_layer;
 	BL::SpaceView3D b_v3d;
 	BL::RegionView3D b_rv3d;
 	string b_rlay_name;
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 08d76582f03..148db9fc3cf 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -46,6 +46,7 @@ BlenderSync::BlenderSync(BL::RenderEngine& b_engine,
                          BL::BlendData& b_data,
                          BL::Depsgraph& b_depsgraph,
                          BL::Scene& b_scene,
+                         BL::ViewLayer& b_view_layer,
                          Scene *scene,
                          bool preview,
                          Progress &progress)
@@ -53,7 +54,7 @@ BlenderSync::BlenderSync(BL::RenderEngine& b_engine,
   b_data(b_data),
   b_depsgraph(b_depsgraph),
   b_scene(b_scene),
-  b_view_layer(b_engine.view_layer()),
+  b_view_layer(b_view_layer),
   shader_map(&scene->shaders),
   object_map(&scene->objects),
   mesh_map(&scene->meshes),
diff --git a/intern/cycles/blender/blender_sync.h b/intern/cycles/blender/blender_sync.h
index c4dd17714be..ce9155ee7ef 100644
--- a/intern/cycles/blender/blender_sync.h
+++ b/intern/cycles/blender/blender_sync.h
@@ -54,6 +54,7 @@ public:
 	            BL::BlendData& b_data,
 	            BL::Depsgraph& b_graph,
 	            BL::Scene& b_scene,
+	            BL::ViewLayer& b_view_layer,
 	            Scene *scene,
 	            bool preview,
 	            Progress &progress);
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 899a911270f..6f6521284e9 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -1445,6 +1445,7 @@ void BKE_scene_graph_update_tagged(EvaluationContext *eval_ctx,
 }
 
 /* applies changes right away, does all sets too */
+/* TODO (dfelinto/sergey) make a function that updates all render context/depsgraphs at once. */
 void BKE_scene_graph_update_for_newframe(EvaluationContext *eval_ctx,
                                          Depsgraph *depsgraph,
                                          Main *bmain,
@@ -1453,7 +1454,7 @@ void BKE_scene_graph_update_for_newframe(EvaluationContext *eval_ctx,
 {
 	/* TODO(sergey): Temporary solution for until pipeline.c is ported. */
 	if (view_layer == NULL) {
-		view_layer = DEG_get_evaluated_view_layer(depsgraph);
+		view_layer = DEG_get_evaluated_view_layer(eval_ctx->depsgraph);
 		BLI_assert(view_layer != NULL);
 	}
 	/* TODO(sergey): Some functions here are changing global state,
@@ -1467,7 +1468,7 @@ void BKE_scene_graph_update_for_newframe(EvaluationContext *eval_ctx,
 	 */
 	BKE_image_update_frame(bmain, scene->r.cfra);
 	BKE_sound_set_cfra(scene->r.cfra);
-	DEG_graph_relations_update(depsgraph, bmain, scene, view_layer);
+	DEG_graph_relations_update(eval_ctx->depsgraph, bmain, scene, view_layer);
 	/* Update animated cache files for modifiers.
 	 *
 	 * TODO(sergey): Make this a depsgraph node?
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 950f7ad9957..b46f11f57a3 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -3364,7 +3364,6 @@ static ImBuf *seq_render_scene_strip(const SeqRenderData *context, Sequence *seq
 			 * TODO(sergey): Need some proper solution with ported
 			 * BKE_scene_set_background() or DEG_on_visible_change() ?
 			 */
-			RE_SetDepsgraph(re, depsgraph);
 			DEG_gr

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list