[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