Depsgraph: remove EvaluationContext, pass Depsgraph instead.
authorBrecht Van Lommel <brechtvanlommel@gmail.com>
Fri, 6 Apr 2018 10:07:27 +0000 (12:07 +0200)
committerBrecht Van Lommel <brechtvanlommel@gmail.com>
Mon, 16 Apr 2018 17:55:33 +0000 (19:55 +0200)
The depsgraph was always created within a fixed evaluation context. Passing
both risks the depsgraph and evaluation context not matching, and it
complicates the Python API where we'd have to expose both which is not so
easy to understand.

This also removes the global evaluation context in main, which assumed there
to be a single active scene and view layer.

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

326 files changed:
intern/cycles/blender/blender_session.cpp
release/datafiles/locale
release/scripts/addons
release/scripts/addons_contrib
source/blender/alembic/intern/abc_camera.cc
source/blender/alembic/intern/abc_camera.h
source/blender/alembic/intern/abc_curves.cc
source/blender/alembic/intern/abc_curves.h
source/blender/alembic/intern/abc_exporter.cc
source/blender/alembic/intern/abc_exporter.h
source/blender/alembic/intern/abc_hair.cc
source/blender/alembic/intern/abc_hair.h
source/blender/alembic/intern/abc_mball.cc
source/blender/alembic/intern/abc_mball.h
source/blender/alembic/intern/abc_mesh.cc
source/blender/alembic/intern/abc_mesh.h
source/blender/alembic/intern/abc_nurbs.cc
source/blender/alembic/intern/abc_nurbs.h
source/blender/alembic/intern/abc_object.cc
source/blender/alembic/intern/abc_object.h
source/blender/alembic/intern/abc_points.cc
source/blender/alembic/intern/abc_points.h
source/blender/alembic/intern/abc_transform.cc
source/blender/alembic/intern/abc_transform.h
source/blender/alembic/intern/alembic_capi.cc
source/blender/blenkernel/BKE_DerivedMesh.h
source/blender/blenkernel/BKE_anim.h
source/blender/blenkernel/BKE_animsys.h
source/blender/blenkernel/BKE_armature.h
source/blender/blenkernel/BKE_camera.h
source/blender/blenkernel/BKE_cloth.h
source/blender/blenkernel/BKE_constraint.h
source/blender/blenkernel/BKE_context.h
source/blender/blenkernel/BKE_crazyspace.h
source/blender/blenkernel/BKE_curve.h
source/blender/blenkernel/BKE_data_transfer.h
source/blender/blenkernel/BKE_displist.h
source/blender/blenkernel/BKE_dynamicpaint.h
source/blender/blenkernel/BKE_editmesh.h
source/blender/blenkernel/BKE_effect.h
source/blender/blenkernel/BKE_fluidsim.h
source/blender/blenkernel/BKE_group.h
source/blender/blenkernel/BKE_lattice.h
source/blender/blenkernel/BKE_layer.h
source/blender/blenkernel/BKE_main.h
source/blender/blenkernel/BKE_mask.h
source/blender/blenkernel/BKE_material.h
source/blender/blenkernel/BKE_mball.h
source/blender/blenkernel/BKE_mball_tessellate.h
source/blender/blenkernel/BKE_mesh.h
source/blender/blenkernel/BKE_modifier.h
source/blender/blenkernel/BKE_movieclip.h
source/blender/blenkernel/BKE_multires.h
source/blender/blenkernel/BKE_node.h
source/blender/blenkernel/BKE_object.h
source/blender/blenkernel/BKE_paint.h
source/blender/blenkernel/BKE_particle.h
source/blender/blenkernel/BKE_rigidbody.h
source/blender/blenkernel/BKE_scene.h
source/blender/blenkernel/BKE_sequencer.h
source/blender/blenkernel/BKE_smoke.h
source/blender/blenkernel/BKE_softbody.h
source/blender/blenkernel/BKE_tracking.h
source/blender/blenkernel/BKE_workspace.h
source/blender/blenkernel/BKE_world.h
source/blender/blenkernel/intern/DerivedMesh.c
source/blender/blenkernel/intern/anim.c
source/blender/blenkernel/intern/anim_sys.c
source/blender/blenkernel/intern/armature.c
source/blender/blenkernel/intern/armature_update.c
source/blender/blenkernel/intern/boids.c
source/blender/blenkernel/intern/camera.c
source/blender/blenkernel/intern/cloth.c
source/blender/blenkernel/intern/constraint.c
source/blender/blenkernel/intern/context.c
source/blender/blenkernel/intern/crazyspace.c
source/blender/blenkernel/intern/curve.c
source/blender/blenkernel/intern/data_transfer.c
source/blender/blenkernel/intern/displist.c
source/blender/blenkernel/intern/dynamicpaint.c
source/blender/blenkernel/intern/editderivedmesh.c
source/blender/blenkernel/intern/editmesh_bvh.c
source/blender/blenkernel/intern/editmesh_tangent.c
source/blender/blenkernel/intern/effect.c
source/blender/blenkernel/intern/fluidsim.c
source/blender/blenkernel/intern/group.c
source/blender/blenkernel/intern/lattice.c
source/blender/blenkernel/intern/layer.c
source/blender/blenkernel/intern/library.c
source/blender/blenkernel/intern/mask_evaluate.c
source/blender/blenkernel/intern/material.c
source/blender/blenkernel/intern/mball.c
source/blender/blenkernel/intern/mball_tessellate.c
source/blender/blenkernel/intern/mesh.c
source/blender/blenkernel/intern/modifier.c
source/blender/blenkernel/intern/movieclip.c
source/blender/blenkernel/intern/multires.c
source/blender/blenkernel/intern/node.c
source/blender/blenkernel/intern/object.c
source/blender/blenkernel/intern/object_dupli.c
source/blender/blenkernel/intern/object_update.c
source/blender/blenkernel/intern/paint.c
source/blender/blenkernel/intern/particle.c
source/blender/blenkernel/intern/particle_child.c
source/blender/blenkernel/intern/particle_distribute.c
source/blender/blenkernel/intern/particle_system.c
source/blender/blenkernel/intern/rigidbody.c
source/blender/blenkernel/intern/scene.c
source/blender/blenkernel/intern/sequencer.c
source/blender/blenkernel/intern/smoke.c
source/blender/blenkernel/intern/softbody.c
source/blender/blenkernel/intern/world.c
source/blender/collada/AnimationExporter.cpp
source/blender/collada/AnimationExporter.h
source/blender/collada/ArmatureExporter.cpp
source/blender/collada/ArmatureExporter.h
source/blender/collada/ControllerExporter.cpp
source/blender/collada/ControllerExporter.h
source/blender/collada/DocumentExporter.cpp
source/blender/collada/DocumentExporter.h
source/blender/collada/GeometryExporter.cpp
source/blender/collada/GeometryExporter.h
source/blender/collada/SceneExporter.cpp
source/blender/collada/SceneExporter.h
source/blender/collada/collada.cpp
source/blender/collada/collada.h
source/blender/collada/collada_utils.cpp
source/blender/collada/collada_utils.h
source/blender/depsgraph/DEG_depsgraph.h
source/blender/depsgraph/DEG_depsgraph_build.h
source/blender/depsgraph/DEG_depsgraph_query.h
source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
source/blender/depsgraph/intern/depsgraph_eval.cc
source/blender/depsgraph/intern/depsgraph_query_iter.cc
source/blender/depsgraph/intern/depsgraph_types.h
source/blender/depsgraph/intern/eval/deg_eval.cc
source/blender/depsgraph/intern/eval/deg_eval.h
source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc
source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.h
source/blender/depsgraph/intern/nodes/deg_node_component.h
source/blender/draw/engines/eevee/eevee_motion_blur.c
source/blender/draw/intern/DRW_render.h
source/blender/draw/intern/draw_cache_impl_particles.c
source/blender/draw/intern/draw_manager.c
source/blender/draw/modes/sculpt_mode.c
source/blender/editors/armature/armature_select.c
source/blender/editors/armature/armature_skinning.c
source/blender/editors/armature/editarmature_sketch.c
source/blender/editors/armature/pose_edit.c
source/blender/editors/armature/pose_lib.c
source/blender/editors/armature/pose_transform.c
source/blender/editors/armature/pose_utils.c
source/blender/editors/curve/editcurve.c
source/blender/editors/curve/editcurve_paint.c
source/blender/editors/curve/editfont.c
source/blender/editors/gpencil/drawgpencil.c
source/blender/editors/gpencil/gpencil_edit.c
source/blender/editors/gpencil/gpencil_paint.c
source/blender/editors/gpencil/gpencil_utils.c
source/blender/editors/include/ED_armature.h
source/blender/editors/include/ED_gpencil.h
source/blender/editors/include/ED_mesh.h
source/blender/editors/include/ED_object.h
source/blender/editors/include/ED_particle.h
source/blender/editors/include/ED_transform_snap_object_context.h
source/blender/editors/include/ED_view3d.h
source/blender/editors/interface/interface_eyedropper_depth.c
source/blender/editors/io/io_collada.c
source/blender/editors/manipulator_library/manipulator_library_presets.c
source/blender/editors/manipulator_library/manipulator_types/dial3d_manipulator.c
source/blender/editors/mesh/editface.c
source/blender/editors/mesh/editmesh_knife.c
source/blender/editors/mesh/editmesh_knife_project.c
source/blender/editors/mesh/editmesh_loopcut.c
source/blender/editors/mesh/editmesh_path.c
source/blender/editors/mesh/editmesh_select.c
source/blender/editors/mesh/editmesh_tools.c
source/blender/editors/mesh/editmesh_utils.c
source/blender/editors/mesh/mesh_navmesh.c
source/blender/editors/mesh/meshtools.c
source/blender/editors/metaball/mball_edit.c
source/blender/editors/object/object_add.c
source/blender/editors/object/object_bake_api.c
source/blender/editors/object/object_constraint.c
source/blender/editors/object/object_data_transfer.c
source/blender/editors/object/object_edit.c
source/blender/editors/object/object_hook.c
source/blender/editors/object/object_modes.c
source/blender/editors/object/object_modifier.c
source/blender/editors/object/object_relations.c
source/blender/editors/object/object_transform.c
source/blender/editors/object/object_vgroup.c
source/blender/editors/physics/dynamicpaint_ops.c
source/blender/editors/physics/particle_edit.c
source/blender/editors/physics/particle_object.c
source/blender/editors/physics/physics_fluid.c
source/blender/editors/physics/physics_intern.h
source/blender/editors/render/render_internal.c
source/blender/editors/render/render_opengl.c
source/blender/editors/scene/scene_edit.c
source/blender/editors/sculpt_paint/paint_hide.c
source/blender/editors/sculpt_paint/paint_image_proj.c
source/blender/editors/sculpt_paint/paint_intern.h
source/blender/editors/sculpt_paint/paint_mask.c
source/blender/editors/sculpt_paint/paint_utils.c
source/blender/editors/sculpt_paint/paint_vertex.c
source/blender/editors/sculpt_paint/paint_vertex_proj.c
source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c
source/blender/editors/sculpt_paint/sculpt.c
source/blender/editors/sculpt_paint/sculpt_intern.h
source/blender/editors/sculpt_paint/sculpt_undo.c
source/blender/editors/space_clip/tracking_ops_orient.c
source/blender/editors/space_outliner/outliner_draw.c
source/blender/editors/space_outliner/outliner_intern.h
source/blender/editors/space_sequencer/sequencer_draw.c
source/blender/editors/space_sequencer/sequencer_edit.c
source/blender/editors/space_sequencer/sequencer_intern.h
source/blender/editors/space_view3d/drawarmature.c
source/blender/editors/space_view3d/drawobject.c
source/blender/editors/space_view3d/view3d_camera_control.c
source/blender/editors/space_view3d/view3d_draw.c
source/blender/editors/space_view3d/view3d_draw_legacy.c
source/blender/editors/space_view3d/view3d_edit.c
source/blender/editors/space_view3d/view3d_fly.c
source/blender/editors/space_view3d/view3d_intern.h
source/blender/editors/space_view3d/view3d_iterators.c
source/blender/editors/space_view3d/view3d_manipulator_ruler.c
source/blender/editors/space_view3d/view3d_project.c
source/blender/editors/space_view3d/view3d_ruler.c
source/blender/editors/space_view3d/view3d_select.c
source/blender/editors/space_view3d/view3d_snap.c
source/blender/editors/space_view3d/view3d_utils.c
source/blender/editors/space_view3d/view3d_view.c
source/blender/editors/space_view3d/view3d_walk.c
source/blender/editors/transform/transform.c
source/blender/editors/transform/transform.h
source/blender/editors/transform/transform_conversions.c
source/blender/editors/transform/transform_generics.c
source/blender/editors/transform/transform_snap.c
source/blender/editors/transform/transform_snap_object.c
source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
source/blender/gpu/intern/gpu_material.c
source/blender/ikplugin/BIK_api.h
source/blender/ikplugin/intern/ikplugin_api.c
source/blender/ikplugin/intern/ikplugin_api.h
source/blender/ikplugin/intern/iksolver_plugin.c
source/blender/ikplugin/intern/iksolver_plugin.h
source/blender/ikplugin/intern/itasc_plugin.cpp
source/blender/ikplugin/intern/itasc_plugin.h
source/blender/makesrna/intern/rna_main_api.c
source/blender/makesrna/intern/rna_meta.c
source/blender/makesrna/intern/rna_nodetree.c
source/blender/makesrna/intern/rna_scene_api.c
source/blender/makesrna/intern/rna_space_api.c
source/blender/modifiers/intern/MOD_armature.c
source/blender/modifiers/intern/MOD_array.c
source/blender/modifiers/intern/MOD_bevel.c
source/blender/modifiers/intern/MOD_boolean.c
source/blender/modifiers/intern/MOD_build.c
source/blender/modifiers/intern/MOD_cast.c
source/blender/modifiers/intern/MOD_cloth.c
source/blender/modifiers/intern/MOD_collision.c
source/blender/modifiers/intern/MOD_correctivesmooth.c
source/blender/modifiers/intern/MOD_curve.c
source/blender/modifiers/intern/MOD_datatransfer.c
source/blender/modifiers/intern/MOD_decimate.c
source/blender/modifiers/intern/MOD_displace.c
source/blender/modifiers/intern/MOD_dynamicpaint.c
source/blender/modifiers/intern/MOD_edgesplit.c
source/blender/modifiers/intern/MOD_explode.c
source/blender/modifiers/intern/MOD_fluidsim.c
source/blender/modifiers/intern/MOD_hook.c
source/blender/modifiers/intern/MOD_laplaciandeform.c
source/blender/modifiers/intern/MOD_laplaciansmooth.c
source/blender/modifiers/intern/MOD_lattice.c
source/blender/modifiers/intern/MOD_mask.c
source/blender/modifiers/intern/MOD_meshcache.c
source/blender/modifiers/intern/MOD_meshdeform.c
source/blender/modifiers/intern/MOD_meshsequencecache.c
source/blender/modifiers/intern/MOD_mirror.c
source/blender/modifiers/intern/MOD_multires.c
source/blender/modifiers/intern/MOD_normal_edit.c
source/blender/modifiers/intern/MOD_ocean.c
source/blender/modifiers/intern/MOD_particleinstance.c
source/blender/modifiers/intern/MOD_particlesystem.c
source/blender/modifiers/intern/MOD_remesh.c
source/blender/modifiers/intern/MOD_screw.c
source/blender/modifiers/intern/MOD_shapekey.c
source/blender/modifiers/intern/MOD_shrinkwrap.c
source/blender/modifiers/intern/MOD_simpledeform.c
source/blender/modifiers/intern/MOD_skin.c
source/blender/modifiers/intern/MOD_smoke.c
source/blender/modifiers/intern/MOD_smooth.c
source/blender/modifiers/intern/MOD_softbody.c
source/blender/modifiers/intern/MOD_solidify.c
source/blender/modifiers/intern/MOD_subsurf.c
source/blender/modifiers/intern/MOD_surface.c
source/blender/modifiers/intern/MOD_surfacedeform.c
source/blender/modifiers/intern/MOD_triangulate.c
source/blender/modifiers/intern/MOD_uvproject.c
source/blender/modifiers/intern/MOD_uvwarp.c
source/blender/modifiers/intern/MOD_warp.c
source/blender/modifiers/intern/MOD_wave.c
source/blender/modifiers/intern/MOD_weightvgedit.c
source/blender/modifiers/intern/MOD_weightvgmix.c
source/blender/modifiers/intern/MOD_weightvgproximity.c
source/blender/modifiers/intern/MOD_wireframe.c
source/blender/python/bmesh/bmesh_py_types.c
source/blender/python/intern/gpu_offscreen.c
source/blender/python/mathutils/mathutils_bvhtree.c
source/blender/render/extern/include/RE_engine.h
source/blender/render/extern/include/RE_pipeline.h
source/blender/render/extern/include/RE_render_ext.h
source/blender/render/intern/include/pointdensity.h
source/blender/render/intern/include/render_types.h
source/blender/render/intern/include/renderdatabase.h
source/blender/render/intern/source/convertblender.c
source/blender/render/intern/source/pipeline.c
source/blender/render/intern/source/pointdensity.c
source/blender/render/intern/source/render_texture.c
source/blender/windowmanager/intern/wm_draw.c
source/blender/windowmanager/intern/wm_files.c
source/blender/windowmanager/manipulators/intern/wm_manipulator_map.c
source/blenderplayer/bad_level_call_stubs/stubs.c
source/tools
tests/gtests/alembic/abc_export_test.cc

index 8eec7c44928e47f69996adf6a73ae25712c1b084..95582b15d63f324e838e19c1c0a02d2728d2b999 100644 (file)
@@ -1282,8 +1282,8 @@ bool BlenderSession::builtin_image_float_pixels(const string &builtin_name,
        else {
                /* TODO: fix point density to work with new view layer depsgraph */
 #if 0
-               /* We originally were passing view_layer here but in reality we need a whole EvaluationContext or at the
-                * very least a dpesgraph to pass to the RE_point_density_minmax() function.
+               /* We originally were passing view_layer here but in reality we need a
+                * a depsgraph to pass to the RE_point_density_minmax() function.
                 */
                /* TODO(sergey): Check we're indeed in shader node tree. */
                PointerRNA ptr;
index 469c949d1ca882be19daa128842f813b72a944d8..d3349b42856d00c278f72f2a5909a6c96b9cdb5e 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 469c949d1ca882be19daa128842f813b72a944d8
+Subproject commit d3349b42856d00c278f72f2a5909a6c96b9cdb5e
index c88411ff7776a2db5d6ef6117a1b2faa42a95611..8f2fd7e23f0b5ce023440182f51c40e88d663325 160000 (submodule)
@@ -1 +1 @@
-Subproject commit c88411ff7776a2db5d6ef6117a1b2faa42a95611
+Subproject commit 8f2fd7e23f0b5ce023440182f51c40e88d663325
index 310578043dec1aae382eb6a447ae1d103792d7e6..34a27a42d781d80f9f1833bad8cc5b2abcac2933 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 310578043dec1aae382eb6a447ae1d103792d7e6
+Subproject commit 34a27a42d781d80f9f1833bad8cc5b2abcac2933
index aa5d77ce4ec85ed01e8ac4dc70653c21e2712e98..4c91b9a6252a7eba65c4640a8cfa9c29036e665c 100644 (file)
@@ -49,13 +49,13 @@ using Alembic::AbcGeom::kWrapExisting;
 
 /* ************************************************************************** */
 
-AbcCameraWriter::AbcCameraWriter(EvaluationContext *eval_ctx,
+AbcCameraWriter::AbcCameraWriter(Depsgraph *depsgraph,
                                  Scene *scene,
                                  Object *ob,
                                  AbcTransformWriter *parent,
                                  uint32_t time_sampling,
                                  ExportSettings &settings)
-    : AbcObjectWriter(eval_ctx, scene, ob, time_sampling, settings, parent)
+    : AbcObjectWriter(depsgraph, scene, ob, time_sampling, settings, parent)
 {
        OCamera camera(parent->alembicXform(), m_name, m_time_sampling);
        m_camera_schema = camera.getSchema();
index 772b7a6aec63aeec4a4429a314893644147db5a5..a839ca947cad306150ea486529d5080fec6a830d 100644 (file)
@@ -35,7 +35,7 @@ class AbcCameraWriter : public AbcObjectWriter {
        Alembic::AbcGeom::OFloatProperty m_eye_separation;
 
 public:
-       AbcCameraWriter(EvaluationContext *eval_ctx,
+       AbcCameraWriter(Depsgraph *depsgraph,
                        Scene *scene,
                        Object *ob,
                        AbcTransformWriter *parent,
index 5328c4710933b335091bce3d3ea01474b8934fd5..41c1dacabc01e9f7ebe24483e0232df7b0638b29 100644 (file)
@@ -71,13 +71,13 @@ using Alembic::AbcGeom::OV2fGeomParam;
 
 /* ************************************************************************** */
 
-AbcCurveWriter::AbcCurveWriter(EvaluationContext *eval_ctx,
+AbcCurveWriter::AbcCurveWriter(Depsgraph *depsgraph,
                                Scene *scene,
                                Object *ob,
                                AbcTransformWriter *parent,
                                uint32_t time_sampling,
                                ExportSettings &settings)
-    : AbcObjectWriter(eval_ctx, scene, ob, time_sampling, settings, parent)
+    : AbcObjectWriter(depsgraph, scene, ob, time_sampling, settings, parent)
 {
        OCurves curves(parent->alembicXform(), m_name, m_time_sampling);
        m_schema = curves.getSchema();
index 73cc8b35e279f5ba023daa19988f6715cf061feb..1e7180bbb1f284958cbf1635c973b78b83f87f61 100644 (file)
@@ -36,7 +36,7 @@ class AbcCurveWriter : public AbcObjectWriter {
        Alembic::AbcGeom::OCurvesSchema::Sample m_sample;
 
 public:
-       AbcCurveWriter(EvaluationContext *eval_ctx,
+       AbcCurveWriter(Depsgraph *depsgraph,
                       Scene *scene,
                       Object *ob,
                       AbcTransformWriter *parent,
index ed5b59d08e2f5d7d0a575162f0bd8cc9e826769a..16c3f7f4e8650e018c1dbcd6c3e3beda19aad152 100644 (file)
@@ -168,7 +168,7 @@ static bool export_object(const ExportSettings * const settings, const Base * co
 
 /* ************************************************************************** */
 
-AbcExporter::AbcExporter(Main *bmain, EvaluationContext *eval_ctx, Scene *scene,
+AbcExporter::AbcExporter(Main *bmain, Scene *scene, ViewLayer *view_layer,
                          Depsgraph *depsgraph,
                          const char *filename, ExportSettings &settings)
     : m_bmain(bmain)
@@ -176,8 +176,8 @@ AbcExporter::AbcExporter(Main *bmain, EvaluationContext *eval_ctx, Scene *scene,
     , m_filename(filename)
     , m_trans_sampling_index(0)
     , m_shape_sampling_index(0)
-    , m_eval_ctx(eval_ctx)
     , m_scene(scene)
+    , m_view_layer(view_layer)
     , m_depsgraph(depsgraph)
     , m_writer(NULL)
 {}
@@ -253,13 +253,13 @@ void AbcExporter::getFrameSet(unsigned int nr_of_samples,
        }
 }
 
-void AbcExporter::operator()(Main *bmain, float &progress, bool &was_canceled)
+void AbcExporter::operator()(float &progress, bool &was_canceled)
 {
        std::string scene_name;
 
-       if (bmain->name[0] != '\0') {
+       if (m_bmain->name[0] != '\0') {
                char scene_file_name[FILE_MAX];
-               BLI_strncpy(scene_file_name, bmain->name, FILE_MAX);
+               BLI_strncpy(scene_file_name, m_bmain->name, FILE_MAX);
                scene_name = scene_file_name;
        }
        else {
@@ -298,8 +298,8 @@ void AbcExporter::operator()(Main *bmain, float &progress, bool &was_canceled)
 
        OBox3dProperty archive_bounds_prop = Alembic::AbcGeom::CreateOArchiveBounds(m_writer->archive(), m_trans_sampling_index);
 
-       createTransformWritersHierarchy(bmain->eval_ctx);
-       createShapeWriters(bmain->eval_ctx);
+       createTransformWritersHierarchy(m_depsgraph);
+       createShapeWriters(m_depsgraph);
 
        /* Make a list of frames to export. */
 
@@ -332,7 +332,7 @@ void AbcExporter::operator()(Main *bmain, float &progress, bool &was_canceled)
                const double frame = *begin;
 
                /* 'frame' is offset by start frame, so need to cancel the offset. */
-               setCurrentFrame(bmain, frame);
+               setCurrentFrame(m_bmain, frame);
 
                if (shape_frames.count(frame) != 0) {
                        for (int i = 0, e = m_shapes.size(); i != e; ++i) {
@@ -361,7 +361,7 @@ void AbcExporter::operator()(Main *bmain, float &progress, bool &was_canceled)
        }
 }
 
-void AbcExporter::createTransformWritersHierarchy(EvaluationContext *eval_ctx)
+void AbcExporter::createTransformWritersHierarchy(Depsgraph *depsgraph)
 {
        for (Base *base = static_cast<Base *>(m_settings.view_layer->object_bases.first); base; base = base->next) {
                Object *ob = base->object;
@@ -374,13 +374,13 @@ void AbcExporter::createTransformWritersHierarchy(EvaluationContext *eval_ctx)
                                        /* We do not export transforms for objects of these classes. */
                                        break;
                                default:
-                                       exploreTransform(eval_ctx, base, ob->parent, NULL);
+                                       exploreTransform(depsgraph, base, ob->parent, NULL);
                        }
                }
        }
 }
 
-void AbcExporter::exploreTransform(EvaluationContext *eval_ctx, Base *ob_base, Object *parent, Object *dupliObParent)
+void AbcExporter::exploreTransform(Depsgraph *depsgraph, Base *ob_base, Object *parent, Object *dupliObParent)
 {
        Object *ob = ob_base->object;
 
@@ -391,10 +391,10 @@ void AbcExporter::exploreTransform(EvaluationContext *eval_ctx, Base *ob_base, O
        }
 
        if (object_type_is_exportable(m_scene, ob)) {
-               createTransformWriter(eval_ctx, ob, parent, dupliObParent);
+               createTransformWriter(depsgraph, ob, parent, dupliObParent);
        }
 
-       ListBase *lb = object_duplilist(eval_ctx, m_scene, ob);
+       ListBase *lb = object_duplilist(depsgraph, m_scene, ob);
 
        if (lb) {
                Base fake_base = *ob_base;  // copy flags (like selection state) from the real object.
@@ -415,7 +415,7 @@ void AbcExporter::exploreTransform(EvaluationContext *eval_ctx, Base *ob_base, O
                                dupli_parent = (dupli_ob->parent) ? dupli_ob->parent : ob;
 
                                fake_base.object = dupli_ob;
-                               exploreTransform(eval_ctx, &fake_base, dupli_parent, ob);
+                               exploreTransform(depsgraph, &fake_base, dupli_parent, ob);
                        }
                }
        }
@@ -423,7 +423,7 @@ void AbcExporter::exploreTransform(EvaluationContext *eval_ctx, Base *ob_base, O
        free_object_duplilist(lb);
 }
 
-AbcTransformWriter * AbcExporter::createTransformWriter(EvaluationContext *eval_ctx, Object *ob, Object *parent, Object *dupliObParent)
+AbcTransformWriter * AbcExporter::createTransformWriter(Depsgraph *depsgraph, Object *ob, Object *parent, Object *dupliObParent)
 {
        /* An object should not be its own parent, or we'll get infinite loops. */
        BLI_assert(ob != parent);
@@ -458,29 +458,29 @@ AbcTransformWriter * AbcExporter::createTransformWriter(EvaluationContext *eval_
                 * return the parent's AbcTransformWriter pointer. */
                if (parent->parent) {
                        if (parent == dupliObParent) {
-                               parent_writer = createTransformWriter(eval_ctx, parent, parent->parent, NULL);
+                               parent_writer = createTransformWriter(depsgraph, parent, parent->parent, NULL);
                        }
                        else {
-                               parent_writer = createTransformWriter(eval_ctx, parent, parent->parent, dupliObParent);
+                               parent_writer = createTransformWriter(depsgraph, parent, parent->parent, dupliObParent);
                        }
                }
                else if (parent == dupliObParent) {
                        if (dupliObParent->parent == NULL) {
-                               parent_writer = createTransformWriter(eval_ctx, parent, NULL, NULL);
+                               parent_writer = createTransformWriter(depsgraph, parent, NULL, NULL);
                        }
                        else {
-                               parent_writer = createTransformWriter(eval_ctx, parent, dupliObParent->parent, dupliObParent->parent);
+                               parent_writer = createTransformWriter(depsgraph, parent, dupliObParent->parent, dupliObParent->parent);
                        }
                }
                else {
-                       parent_writer = createTransformWriter(eval_ctx, parent, dupliObParent, dupliObParent);
+                       parent_writer = createTransformWriter(depsgraph, parent, dupliObParent, dupliObParent);
                }
 
                BLI_assert(parent_writer);
                alembic_parent = parent_writer->alembicXform();
        }
 
-       my_writer = new AbcTransformWriter(eval_ctx, ob, alembic_parent, parent_writer,
+       my_writer = new AbcTransformWriter(depsgraph, ob, alembic_parent, parent_writer,
                                           m_trans_sampling_index, m_settings);
 
        /* When flattening, the matrix of the dupliobject has to be added. */
@@ -492,14 +492,14 @@ AbcTransformWriter * AbcExporter::createTransformWriter(EvaluationContext *eval_
        return my_writer;
 }
 
-void AbcExporter::createShapeWriters(EvaluationContext *eval_ctx)
+void AbcExporter::createShapeWriters(Depsgraph *depsgraph)
 {
        for (Base *base = static_cast<Base *>(m_settings.view_layer->object_bases.first); base; base = base->next) {
-               exploreObject(eval_ctx, base, NULL);
+               exploreObject(depsgraph, base, NULL);
        }
 }
 
-void AbcExporter::exploreObject(EvaluationContext *eval_ctx, Base *ob_base, Object *dupliObParent)
+void AbcExporter::exploreObject(Depsgraph *depsgraph, Base *ob_base, Object *dupliObParent)
 {
        /* If an object isn't exported itself, its duplilist shouldn't be
         * exported either. */
@@ -510,7 +510,7 @@ void AbcExporter::exploreObject(EvaluationContext *eval_ctx, Base *ob_base, Obje
        createShapeWriter(ob_base, dupliObParent);
        
        Object *ob = ob_base->object;
-       ListBase *lb = object_duplilist(eval_ctx, m_scene, ob);
+       ListBase *lb = object_duplilist(depsgraph, m_scene, ob);
 
        if (lb) {
                Base fake_base = *ob_base;  // copy flags (like selection state) from the real object.
@@ -525,7 +525,7 @@ void AbcExporter::exploreObject(EvaluationContext *eval_ctx, Base *ob_base, Obje
                        }
                        if (link->type == OB_DUPLIGROUP) {
                                fake_base.object = link->ob;
-                               exploreObject(eval_ctx, &fake_base, ob);
+                               exploreObject(depsgraph, &fake_base, ob);
                        }
                }
        }
@@ -548,10 +548,10 @@ void AbcExporter::createParticleSystemsWriters(Object *ob, AbcTransformWriter *x
 
                if (m_settings.export_hair && psys->part->type == PART_HAIR) {
                        m_settings.export_child_hairs = true;
-                       m_shapes.push_back(new AbcHairWriter(m_eval_ctx, m_scene, ob, xform, m_shape_sampling_index, m_settings, psys));
+                       m_shapes.push_back(new AbcHairWriter(m_depsgraph, m_scene, ob, xform, m_shape_sampling_index, m_settings, psys));
                }
                else if (m_settings.export_particles && psys->part->type == PART_EMITTER) {
-                       m_shapes.push_back(new AbcPointsWriter(m_eval_ctx, m_scene, ob, xform, m_shape_sampling_index, m_settings, psys));
+                       m_shapes.push_back(new AbcPointsWriter(m_depsgraph, m_scene, ob, xform, m_shape_sampling_index, m_settings, psys));
                }
        }
 }
@@ -591,7 +591,7 @@ void AbcExporter::createShapeWriter(Base *ob_base, Object *dupliObParent)
                                return;
                        }
 
-                       m_shapes.push_back(new AbcMeshWriter(m_eval_ctx, m_scene, ob, xform, m_shape_sampling_index, m_settings));
+                       m_shapes.push_back(new AbcMeshWriter(m_depsgraph, m_scene, ob, xform, m_shape_sampling_index, m_settings));
                        break;
                }
                case OB_SURF:
@@ -602,7 +602,7 @@ void AbcExporter::createShapeWriter(Base *ob_base, Object *dupliObParent)
                                return;
                        }
 
-                       m_shapes.push_back(new AbcNurbsWriter(m_eval_ctx, m_scene, ob, xform, m_shape_sampling_index, m_settings));
+                       m_shapes.push_back(new AbcNurbsWriter(m_depsgraph, m_scene, ob, xform, m_shape_sampling_index, m_settings));
                        break;
                }
                case OB_CURVE:
@@ -613,7 +613,7 @@ void AbcExporter::createShapeWriter(Base *ob_base, Object *dupliObParent)
                                return;
                        }
 
-                       m_shapes.push_back(new AbcCurveWriter(m_eval_ctx, m_scene, ob, xform, m_shape_sampling_index, m_settings));
+                       m_shapes.push_back(new AbcCurveWriter(m_depsgraph, m_scene, ob, xform, m_shape_sampling_index, m_settings));
                        break;
                }
                case OB_CAMERA:
@@ -621,7 +621,7 @@ void AbcExporter::createShapeWriter(Base *ob_base, Object *dupliObParent)
                        Camera *cam = static_cast<Camera *>(ob->data);
 
                        if (cam->type == CAM_PERSP) {
-                               m_shapes.push_back(new AbcCameraWriter(m_eval_ctx, m_scene, ob, xform, m_shape_sampling_index, m_settings));
+                               m_shapes.push_back(new AbcCameraWriter(m_depsgraph, m_scene, ob, xform, m_shape_sampling_index, m_settings));
                        }
 
                        break;
@@ -634,7 +634,7 @@ void AbcExporter::createShapeWriter(Base *ob_base, Object *dupliObParent)
                        }
 
                        m_shapes.push_back(new AbcMBallWriter(
-                                              m_bmain, m_eval_ctx, m_scene, ob, xform,
+                                              m_bmain, m_depsgraph, m_scene, ob, xform,
                                               m_shape_sampling_index, m_settings));
                        break;
                }
index 9c9c21af12f308f796d0a472af6de68c7849ddb8..0a32a28adcabcf304a2be23dd49bf5beb51e4f0e 100644 (file)
@@ -34,7 +34,6 @@ class AbcObjectWriter;
 class AbcTransformWriter;
 class ArchiveWriter;
 
-struct EvaluationContext;
 struct Depsgraph;
 struct Main;
 struct Object;
@@ -93,8 +92,8 @@ class AbcExporter {
 
        unsigned int m_trans_sampling_index, m_shape_sampling_index;
 
-       EvaluationContext *m_eval_ctx;
        Scene *m_scene;
+       ViewLayer *m_view_layer;
        Depsgraph *m_depsgraph;
 
        ArchiveWriter *m_writer;
@@ -106,12 +105,12 @@ class AbcExporter {
        std::vector<AbcObjectWriter *> m_shapes;
 
 public:
-       AbcExporter(Main *bmain, EvaluationContext *eval_ctx, Scene *scene,
+       AbcExporter(Main *bmain, Scene *scene, ViewLayer *view_layer,
                    Depsgraph *depsgraph,
                    const char *filename, ExportSettings &settings);
        ~AbcExporter();
 
-       void operator()(Main *bmain, float &progress, bool &was_canceled);
+       void operator()(float &progress, bool &was_canceled);
 
 protected:
        void getShutterSamples(unsigned int nr_of_samples,
@@ -122,11 +121,11 @@ protected:
 private:
        Alembic::Abc::TimeSamplingPtr createTimeSampling(double step);
 
-       void createTransformWritersHierarchy(EvaluationContext *eval_ctx);
-       AbcTransformWriter * createTransformWriter(EvaluationContext *eval_ctx, Object *ob,  Object *parent, Object *dupliObParent);
-       void exploreTransform(EvaluationContext *eval_ctx, Base *ob_base, Object *parent, Object *dupliObParent);
-       void exploreObject(EvaluationContext *eval_ctx, Base *ob_base, Object *dupliObParent);
-       void createShapeWriters(EvaluationContext *eval_ctx);
+       void createTransformWritersHierarchy(Depsgraph *depsgraph);
+       AbcTransformWriter * createTransformWriter(Depsgraph *depsgraph, Object *ob,  Object *parent, Object *dupliObParent);
+       void exploreTransform(Depsgraph *depsgraph, Base *ob_base, Object *parent, Object *dupliObParent);
+       void exploreObject(Depsgraph *depsgraph, Base *ob_base, Object *dupliObParent);
+       void createShapeWriters(Depsgraph *depsgraph);
        void createShapeWriter(Base *ob_base, Object *dupliObParent);
        void createParticleSystemsWriters(Object *ob, AbcTransformWriter *xform);
 
index 53e8dea89cc097c2d1885b4abade9dbdb3d4862f..70ca7a1a929db1a3b25771bef063a590b76196a5 100644 (file)
@@ -49,14 +49,14 @@ using Alembic::AbcGeom::OV2fGeomParam;
 
 /* ************************************************************************** */
 
-AbcHairWriter::AbcHairWriter(EvaluationContext *eval_ctx,
+AbcHairWriter::AbcHairWriter(Depsgraph *depsgraph,
                              Scene *scene,
                              Object *ob,
                              AbcTransformWriter *parent,
                              uint32_t time_sampling,
                              ExportSettings &settings,
                              ParticleSystem *psys)
-    : AbcObjectWriter(eval_ctx, scene, ob, time_sampling, settings, parent)
+    : AbcObjectWriter(depsgraph, scene, ob, time_sampling, settings, parent)
     , m_uv_warning_shown(false)
 {
        m_psys = psys;
@@ -77,7 +77,7 @@ void AbcHairWriter::do_write()
                return;
        }
 
-       DerivedMesh *dm = mesh_create_derived_render(m_eval_ctx, m_scene, m_object, CD_MASK_MESH);
+       DerivedMesh *dm = mesh_create_derived_render(m_depsgraph, m_scene, m_object, CD_MASK_MESH);
        DM_ensure_tessface(dm);
 
        std::vector<Imath::V3f> verts;
index 8190c449205539438bee52c2ff4e95919c3a0cca..5627f7726e68a8573fbec8dbbce861acb105286b 100644 (file)
@@ -40,7 +40,7 @@ class AbcHairWriter : public AbcObjectWriter {
        bool m_uv_warning_shown;
 
 public:
-       AbcHairWriter(EvaluationContext *eval_ctx,
+       AbcHairWriter(Depsgraph *depsgraph,
                      Scene *scene,
                      Object *ob,
                      AbcTransformWriter *parent,
index f1aa25c8f70afe199cf776d6c62427bddc4a5201..1df55712abe8e67dbfc806692bbc96503c537e25 100644 (file)
@@ -42,13 +42,13 @@ extern "C" {
 
 AbcMBallWriter::AbcMBallWriter(
         Main *bmain,
-        EvaluationContext *eval_ctx,
+        Depsgraph *depsgraph,
         Scene *scene,
         Object *ob,
         AbcTransformWriter *parent,
         uint32_t time_sampling,
         ExportSettings &settings)
-    : AbcObjectWriter(eval_ctx, scene, ob, time_sampling, settings, parent)
+    : AbcObjectWriter(depsgraph, scene, ob, time_sampling, settings, parent)
     , m_bmain(bmain)
 {
        m_is_animated = isAnimated();
@@ -58,7 +58,7 @@ AbcMBallWriter::AbcMBallWriter(
                                     sizeof(CurveCache),
                                     "CurveCache for AbcMBallWriter");
 
-       m_mesh_writer = new AbcMeshWriter(eval_ctx, scene, m_mesh_ob, parent,
+       m_mesh_writer = new AbcMeshWriter(depsgraph, scene, m_mesh_ob, parent,
                                          time_sampling, settings);
        m_mesh_writer->setIsAnimated(m_is_animated);
 }
@@ -97,13 +97,11 @@ void AbcMBallWriter::do_write()
        id_us_min(&tmpmesh->id);
 
        ListBase disp = {NULL, NULL};
-       /* TODO(sergey): This is gonna to work for until EvaluationContext
+       /* TODO(sergey): This is gonna to work for until Depsgraph
         *               only contains for_render flag. As soon as CoW is
         *               implemented, this is to be rethinked.
         */
-       EvaluationContext eval_ctx;
-       DEG_evaluation_context_init(&eval_ctx, DAG_EVAL_RENDER);
-       BKE_displist_make_mball_forRender(&eval_ctx, m_scene, m_object, &disp);
+       BKE_displist_make_mball_forRender(m_depsgraph, m_scene, m_object, &disp);
        BKE_mesh_from_metaball(&disp, tmpmesh);
        BKE_displist_free(&disp);
 
index e657711059e39a9039569a303e468d9c8d5a1a9d..19bf7dc054d83e685a99aaf649c4dfae8867c1f8 100644 (file)
@@ -42,7 +42,7 @@ class AbcMBallWriter : public AbcObjectWriter {
 public:
        AbcMBallWriter(
                Main *bmain,
-               EvaluationContext *eval_ctx,
+               Depsgraph *depsgraph,
                Scene *scene,
                Object *ob,
                AbcTransformWriter *parent,
index c2c99e2b11f30ed93a5814aafb8081191b248789..52d14f847285dca13d0e2234e85f7f5e90ad2ff5 100644 (file)
@@ -286,13 +286,13 @@ static ModifierData *get_liquid_sim_modifier(Scene *scene, Object *ob)
 
 /* ************************************************************************** */
 
-AbcMeshWriter::AbcMeshWriter(EvaluationContext *eval_ctx,
+AbcMeshWriter::AbcMeshWriter(Depsgraph *depsgraph,
                              Scene *scene,
                              Object *ob,
                              AbcTransformWriter *parent,
                              uint32_t time_sampling,
                              ExportSettings &settings)
-    : AbcObjectWriter(eval_ctx, scene, ob, time_sampling, settings, parent)
+    : AbcObjectWriter(depsgraph, scene, ob, time_sampling, settings, parent)
 {
        m_is_animated = isAnimated();
        m_subsurf_mod = NULL;
@@ -525,7 +525,7 @@ DerivedMesh *AbcMeshWriter::getFinalMesh()
                m_subsurf_mod->mode |= eModifierMode_DisableTemporary;
        }
 
-       DerivedMesh *dm = mesh_create_derived_render(m_eval_ctx, m_scene, m_object, CD_MASK_MESH);
+       DerivedMesh *dm = mesh_create_derived_render(m_depsgraph, m_scene, m_object, CD_MASK_MESH);
 
        if (m_subsurf_mod) {
                m_subsurf_mod->mode &= ~eModifierMode_DisableTemporary;
index a08b7352d16cc7fab58c46c41dc5aa17db276ef6..c57123cda4c6438b3adb3ba15bf93c7d06bc31fa 100644 (file)
@@ -50,7 +50,7 @@ class AbcMeshWriter : public AbcObjectWriter {
        bool m_is_subd;
 
 public:
-       AbcMeshWriter(EvaluationContext *eval_ctx,
+       AbcMeshWriter(Depsgraph *depsgraph,
                      Scene *scene,
                      Object *ob,
                      AbcTransformWriter *parent,
index 0532191a28dd6324debda0311ec7a5f1c1e094d0..1f042d0bafc9ab7c6731c361ffa6e41a7c9506ab 100644 (file)
@@ -60,13 +60,13 @@ using Alembic::AbcGeom::ONuPatchSchema;
 
 /* ************************************************************************** */
 
-AbcNurbsWriter::AbcNurbsWriter(EvaluationContext *eval_ctx,
+AbcNurbsWriter::AbcNurbsWriter(Depsgraph *depsgraph,
                                Scene *scene,
                                Object *ob,
                                AbcTransformWriter *parent,
                                uint32_t time_sampling,
                                ExportSettings &settings)
-    : AbcObjectWriter(eval_ctx, scene, ob, time_sampling, settings, parent)
+    : AbcObjectWriter(depsgraph, scene, ob, time_sampling, settings, parent)
 {
        m_is_animated = isAnimated();
 
index 3d20c5c60bb9af263081bec263bff6aa260c4bb0..d2422345c3f2a916995f0da0830be7ce9f3c4614 100644 (file)
@@ -32,7 +32,7 @@ class AbcNurbsWriter : public AbcObjectWriter {
        bool m_is_animated;
 
 public:
-       AbcNurbsWriter(EvaluationContext *eval_ctx,
+       AbcNurbsWriter(Depsgraph *depsgraph,
                       Scene *scene,
                       Object *ob,
                       AbcTransformWriter *parent,
index aa4e390fa712568f1a4fb7f14b6597c0fe62d87d..85bda9aa8eb15fe155ae14e2924c55c9ca7c23d4 100644 (file)
@@ -58,7 +58,7 @@ using Alembic::AbcGeom::OStringProperty;
 
 /* ************************************************************************** */
 
-AbcObjectWriter::AbcObjectWriter(EvaluationContext *eval_ctx,
+AbcObjectWriter::AbcObjectWriter(Depsgraph *depsgraph,
                                  Scene *scene,
                                  Object *ob,
                                  uint32_t time_sampling,
@@ -66,7 +66,7 @@ AbcObjectWriter::AbcObjectWriter(EvaluationContext *eval_ctx,
                                  AbcObjectWriter *parent)
     : m_object(ob)
     , m_settings(settings)
-    , m_eval_ctx(eval_ctx)
+    , m_depsgraph(depsgraph)
     , m_scene(scene)
     , m_time_sampling(time_sampling)
     , m_first_frame(true)
index 6aa6224f8d5d41d0866ab89927679e13965c3d23..d41088bdcad87239f24a05dfa603b4a6d4dabfd8 100644 (file)
@@ -44,7 +44,7 @@ protected:
        Object *m_object;
        ExportSettings &m_settings;
 
-       EvaluationContext *m_eval_ctx;
+       Depsgraph *m_depsgraph;
        Scene *m_scene;
        uint32_t m_time_sampling;
 
@@ -57,7 +57,7 @@ protected:
        std::string m_name;
 
 public:
-       AbcObjectWriter(EvaluationContext *eval_ctx,
+       AbcObjectWriter(Depsgraph *depsgraph,
                        Scene *scene,
                        Object *ob,
                        uint32_t time_sampling,
index feb2eff5b9d0723222ee6c944dbaabf93cabf945..6f52ccec4a7d830e3589471a414b3c770ba414f7 100644 (file)
@@ -58,14 +58,14 @@ using Alembic::AbcGeom::OPointsSchema;
 
 /* ************************************************************************** */
 
-AbcPointsWriter::AbcPointsWriter(EvaluationContext *eval_ctx,
+AbcPointsWriter::AbcPointsWriter(Depsgraph *depsgraph,
                                  Scene *scene,
                                  Object *ob,
                                     AbcTransformWriter *parent,
                                     uint32_t time_sampling,
                                     ExportSettings &settings,
                                     ParticleSystem *psys)
-    : AbcObjectWriter(eval_ctx, scene, ob, time_sampling, settings, parent)
+    : AbcObjectWriter(depsgraph, scene, ob, time_sampling, settings, parent)
 {
        m_psys = psys;
 
@@ -87,7 +87,7 @@ void AbcPointsWriter::do_write()
        ParticleKey state;
 
        ParticleSimulationData sim;
-       sim.eval_ctx = m_eval_ctx;
+       sim.depsgraph = m_depsgraph;
        sim.scene = m_scene;
        sim.ob = m_object;
        sim.psys = m_psys;
index b60f1997aa8cf01750b60087205969fe63bae1d6..1ac8792ede13ab9c3ab744177ee084f4a12e2f0b 100644 (file)
@@ -38,7 +38,7 @@ class AbcPointsWriter : public AbcObjectWriter {
        ParticleSystem *m_psys;
 
 public:
-       AbcPointsWriter(EvaluationContext *eval_ctx,
+       AbcPointsWriter(Depsgraph *depsgraph,
                        Scene *scene,
                        Object *ob,
                        AbcTransformWriter *parent,
index 0a1480e62b06a5c46bc3b8af9496a4453d4ccc35..e5da367b9a932b3cb2c0850598d490d4ac3a47b4 100644 (file)
@@ -57,13 +57,13 @@ static bool has_parent_camera(Object *ob)
 
 /* ************************************************************************** */
 
-AbcTransformWriter::AbcTransformWriter(EvaluationContext *eval_ctx,
+AbcTransformWriter::AbcTransformWriter(Depsgraph *depsgraph,
                                        Object *ob,
                                        const OObject &abc_parent,
                                        AbcTransformWriter *parent,
                                        unsigned int time_sampling,
                                        ExportSettings &settings)
-    : AbcObjectWriter(eval_ctx, NULL, ob, time_sampling, settings, parent)
+    : AbcObjectWriter(depsgraph, NULL, ob, time_sampling, settings, parent)
     , m_proxy_from(NULL)
 {
        m_is_animated = hasAnimation(m_object);
index e82765cb169d89967d45e9dd2c185893e19189be..ce4b28ea236062052334dda2c960ddeae35d7446 100644 (file)
@@ -44,7 +44,7 @@ public:
        Object *m_proxy_from;
 
 public:
-       AbcTransformWriter(EvaluationContext *eval_ctx,
+       AbcTransformWriter(Depsgraph *depsgraph,
                           Object *ob,
                           const Alembic::AbcGeom::OObject &abc_parent,
                           AbcTransformWriter *parent,
index cb01efb2cf474d79cf0d20d170f327e5a1589afc..75b4063f3c42a9aefb65921bd76c2e01605bab57 100644 (file)
@@ -230,7 +230,6 @@ static void find_iobject(const IObject &object, IObject &ret,
 }
 
 struct ExportJobData {
-       EvaluationContext eval_ctx;
        Scene *scene;
        ViewLayer *view_layer;
        Depsgraph *depsgraph;
@@ -265,12 +264,13 @@ static void export_startjob(void *customdata, short *stop, short *do_update, flo
 
        try {
                Scene *scene = data->scene;
-               AbcExporter exporter(data->bmain, &data->eval_ctx, scene, data->depsgraph, data->filename, data->settings);
+               ViewLayer *view_layer = data->view_layer;
+               AbcExporter exporter(data->bmain, scene, view_layer, data->depsgraph, data->filename, data->settings);
 
                const int orig_frame = CFRA;
 
                data->was_canceled = false;
-               exporter(data->bmain, *data->progress, data->was_canceled);
+               exporter(*data->progress, data->was_canceled);
 
                if (CFRA != orig_frame) {
                        CFRA = orig_frame;
@@ -314,8 +314,6 @@ bool ABC_export(
 {
        ExportJobData *job = static_cast<ExportJobData *>(MEM_mallocN(sizeof(ExportJobData), "ExportJobData"));
 
-       CTX_data_eval_ctx(C, &job->eval_ctx);
-
        job->scene = scene;
        job->view_layer = CTX_data_view_layer(C);
        job->depsgraph = CTX_data_depsgraph(C);
index 4ae11b5cca53d11d98a68a71e1cc4e74797b6a2e..d269a2fb63b1375312486550f8dd23f1fe3ac983 100644 (file)
@@ -95,10 +95,10 @@ struct KeyBlock;
 struct ModifierData;
 struct MCol;
 struct ColorBand;
+struct Depsgraph;
 struct GPUVertexAttribs;
 struct GPUDrawObject;
 struct PBVH;
-struct EvaluationContext;
 
 /* number of sub-elements each mesh element has (for interpolation) */
 #define SUB_ELEMS_VERT 0
@@ -660,18 +660,18 @@ void mesh_get_mapped_verts_coords(DerivedMesh *dm, float (*r_cos)[3], const int
 
 /* */
 DerivedMesh *mesh_get_derived_final(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask);
 DerivedMesh *mesh_get_derived_deform(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask);
 
 DerivedMesh *mesh_create_derived_for_modifier(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
         struct ModifierData *md, int build_shapekey_layers);
 
 DerivedMesh *mesh_create_derived_render(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask);
 
 DerivedMesh *getEditDerivedBMesh(
@@ -679,37 +679,37 @@ DerivedMesh *getEditDerivedBMesh(
         float (*vertexCos)[3]);
 
 DerivedMesh *mesh_create_derived_index_render(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask, int index);
 
 /* same as above but wont use render settings */
 DerivedMesh *mesh_create_derived(struct Mesh *me, float (*vertCos)[3]);
 DerivedMesh *mesh_create_derived_view(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob, CustomDataMask dataMask);
 DerivedMesh *mesh_create_derived_no_deform(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob, float (*vertCos)[3],
         CustomDataMask dataMask);
 DerivedMesh *mesh_create_derived_no_deform_render(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob, float (*vertCos)[3],
         CustomDataMask dataMask);
 /* for gameengine */
 DerivedMesh *mesh_create_derived_no_virtual(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
         float (*vertCos)[3], CustomDataMask dataMask);
 DerivedMesh *mesh_create_derived_physics(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
         float (*vertCos)[3], CustomDataMask dataMask);
 
 DerivedMesh *editbmesh_get_derived_base(
         struct Object *ob, struct BMEditMesh *em, CustomDataMask data_mask);
 DerivedMesh *editbmesh_get_derived_cage(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *,
         struct BMEditMesh *em, CustomDataMask dataMask);
 DerivedMesh *editbmesh_get_derived_cage_and_final(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *,
         struct BMEditMesh *em, CustomDataMask dataMask,
         DerivedMesh **r_final);
 
@@ -718,7 +718,7 @@ DerivedMesh *object_get_derived_final(struct Object *ob, const bool for_render);
 float (*editbmesh_get_vertex_cos(struct BMEditMesh *em, int *r_numVerts))[3];
 bool editbmesh_modifier_is_enabled(struct Scene *scene, struct ModifierData *md, DerivedMesh *dm);
 void makeDerivedMesh(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct BMEditMesh *em,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct BMEditMesh *em,
         CustomDataMask dataMask, const bool build_shapekey_layers);
 
 void weight_to_rgb(float r_rgb[3], const float weight);
index 30a7bdb0a2769cfbd8fa7cb4d4c38f26183dc19f..0fb83162459d3dc077d3f6019fc7c93bb0459e9f 100644 (file)
@@ -32,7 +32,7 @@
  *  \author nzc
  *  \since March 2001
  */
-struct EvaluationContext;
+struct Depsgraph;
 struct Path;
 struct Object;
 struct Scene;
@@ -54,7 +54,7 @@ void animviz_free_motionpath(struct bMotionPath *mpath);
 struct bMotionPath *animviz_verify_motionpaths(struct ReportList *reports, struct Scene *scene, struct Object *ob, struct bPoseChannel *pchan);
 
 void animviz_get_object_motionpaths(struct Object *ob, ListBase *targets);
-void animviz_calc_motionpaths(struct EvaluationContext *eval_ctx, struct Main *bmain, struct Scene *scene, ListBase *targets);
+void animviz_calc_motionpaths(struct Depsgraph *depsgraph, struct Main *bmain, struct Scene *scene, ListBase *targets);
 
 /* ---------------------------------------------------- */
 /* Curve Paths */
@@ -66,8 +66,8 @@ int where_on_path(struct Object *ob, float ctime, float vec[4], float dir[3], fl
 /* ---------------------------------------------------- */
 /* Dupli-Geometry */
 
-struct ListBase *object_duplilist_ex(const struct EvaluationContext *eval_ctx, struct Scene *sce, struct Object *ob, bool update);
-struct ListBase *object_duplilist(const struct EvaluationContext *eval_ctx, struct Scene *sce, struct Object *ob);
+struct ListBase *object_duplilist_ex(struct Depsgraph *depsgraph, struct Scene *sce, struct Object *ob, bool update);
+struct ListBase *object_duplilist(struct Depsgraph *depsgraph, struct Scene *sce, struct Object *ob);
 void free_object_duplilist(struct ListBase *lb);
 int count_duplilist(struct Object *ob);
 
@@ -81,7 +81,7 @@ typedef struct DupliApplyData {
        DupliExtraData *extra;
 } DupliApplyData;
 
-DupliApplyData *duplilist_apply(const struct EvaluationContext *eval_ctx, struct Object *ob, struct Scene *scene, struct ListBase *duplilist);
+DupliApplyData *duplilist_apply(struct Depsgraph *depsgraph, struct Object *ob, struct Scene *scene, struct ListBase *duplilist);
 void duplilist_restore(struct ListBase *duplilist, DupliApplyData *apply_data);
 void duplilist_free_apply_data(DupliApplyData *apply_data);
 
index d95b4a838b8a9d6244704addbbbeb8584f142821..fe4a145b7b36bef436a90d9611f42a1bda4c3296 100644 (file)
@@ -200,10 +200,10 @@ void animsys_evaluate_action_group(struct PointerRNA *ptr, struct bAction *act,
 
 /* ------------ Evaluation API --------------- */
 
-struct EvaluationContext;
+struct Depsgraph;
 
-void BKE_animsys_eval_animdata(const struct EvaluationContext *eval_ctx, struct ID *id);
-void BKE_animsys_eval_driver(const struct EvaluationContext *eval_ctx, struct ID *id, struct FCurve *fcurve);
+void BKE_animsys_eval_animdata(struct Depsgraph *depsgraph, struct ID *id);
+void BKE_animsys_eval_driver(struct Depsgraph *depsgraph, struct ID *id, struct FCurve *fcurve);
 
 /* ************************************* */
 
index bf37224c85fb6930dc22b478503637bda74c5eef..e286c1248c074b195a9cc8d82e32a9ff2e9a66e1 100644 (file)
@@ -35,7 +35,7 @@
 
 struct bPose;
 struct Bone;
-struct EvaluationContext;
+struct Depsgraph;
 struct GHash;
 struct Main;
 struct bArmature;
@@ -100,8 +100,8 @@ void BKE_armature_where_is(struct bArmature *arm);
 void BKE_armature_where_is_bone(struct Bone *bone, struct Bone *prevbone, const bool use_recursion);
 void BKE_pose_clear_pointers(struct bPose *pose);
 void BKE_pose_rebuild(struct Object *ob, struct bArmature *arm);
-void BKE_pose_where_is(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
-void BKE_pose_where_is_bone(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct bPoseChannel *pchan, float ctime, bool do_extra);
+void BKE_pose_where_is(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob);
+void BKE_pose_where_is_bone(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct bPoseChannel *pchan, float ctime, bool do_extra);
 void BKE_pose_where_is_bone_tail(struct bPoseChannel *pchan);
 
 /* get_objectspace_bone_matrix has to be removed still */
@@ -118,7 +118,7 @@ void BKE_armature_loc_pose_to_bone(struct bPoseChannel *pchan, const float inloc
 void BKE_armature_mat_bone_to_pose(struct bPoseChannel *pchan, float inmat[4][4], float outmat[4][4]);
 void BKE_armature_mat_pose_to_delta(float delta_mat[4][4], float pose_mat[4][4], float arm_mat[4][4]);
 
-void BKE_armature_mat_pose_to_bone_ex(const struct EvaluationContext *eval_ctx, struct Object *ob, struct bPoseChannel *pchan, float inmat[4][4], float outmat[4][4]);
+void BKE_armature_mat_pose_to_bone_ex(struct Depsgraph *depsgraph, struct Object *ob, struct bPoseChannel *pchan, float inmat[4][4], float outmat[4][4]);
 
 void BKE_pchan_mat3_to_rot(struct bPoseChannel *pchan, float mat[3][3], bool use_compat);
 void BKE_pchan_apply_mat4(struct bPoseChannel *pchan, float mat[4][4], bool use_comat);
@@ -166,46 +166,46 @@ struct bPoseChannel *BKE_armature_splineik_solver_find_root(
 
 void BKE_pose_splineik_init_tree(struct Scene *scene, struct Object *ob, float ctime);
 void BKE_splineik_execute_tree(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob, struct bPoseChannel *pchan_root, float ctime);
 
-void BKE_pose_eval_init(const struct EvaluationContext *eval_ctx,
+void BKE_pose_eval_init(struct Depsgraph *depsgraph,
                         struct Scene *scene,
                         struct Object *ob);
 
-void BKE_pose_eval_init_ik(const struct EvaluationContext *eval_ctx,
+void BKE_pose_eval_init_ik(struct Depsgraph *depsgraph,
                            struct Scene *scene,
                            struct Object *ob);
 
-void BKE_pose_eval_bone(const struct EvaluationContext *eval_ctx,
+void BKE_pose_eval_bone(struct Depsgraph *depsgraph,
                         struct Scene *scene,
                         struct Object *ob,
                         int pchan_index);
 
-void BKE_pose_constraints_evaluate(const struct EvaluationContext *eval_ctx,
+void BKE_pose_constraints_evaluate(struct Depsgraph *depsgraph,
                                    struct Scene *scene,
                                    struct Object *ob,
                                    int pchan_index);
 
-void BKE_pose_bone_done(const struct EvaluationContext *eval_ctx,
+void BKE_pose_bone_done(struct Depsgraph *depsgraph,
                         struct Object *ob,
                         int pchan_index);
 
-void BKE_pose_iktree_evaluate(const struct EvaluationContext *eval_ctx,
+void BKE_pose_iktree_evaluate(struct Depsgraph *depsgraph,
                               struct Scene *scene,
                               struct Object *ob,
                               int rootchan_index);
 
-void BKE_pose_splineik_evaluate(const struct EvaluationContext *eval_ctx,
+void BKE_pose_splineik_evaluate(struct Depsgraph *depsgraph,
                                 struct Scene *scene,
                                 struct Object *ob,
                                 int rootchan_index);
 
-void BKE_pose_eval_flush(const struct EvaluationContext *eval_ctx,
+void BKE_pose_eval_flush(struct Depsgraph *depsgraph,
                          struct Scene *scene,
                          struct Object *ob);
 
-void BKE_pose_eval_proxy_copy(const struct EvaluationContext *eval_ctx,
+void BKE_pose_eval_proxy_copy(struct Depsgraph *depsgraph,
                               struct Object *ob);
 
 #ifdef __cplusplus
index d5bf2177f71d79e2afecc5c43bac7ecce0ea9cb2..5e79f641c97e97d211fa600cac2bebf7461609ae 100644 (file)
@@ -114,7 +114,7 @@ typedef struct CameraParams {
 
 void BKE_camera_params_init(CameraParams *params);
 void BKE_camera_params_from_object(CameraParams *params, const struct Object *camera);
-void BKE_camera_params_from_view3d(CameraParams *params, const struct Depsgraph *depsgraph, const struct View3D *v3d, const struct RegionView3D *rv3d);
+void BKE_camera_params_from_view3d(CameraParams *params, struct Depsgraph *depsgraph, const struct View3D *v3d, const struct RegionView3D *rv3d);
 
 void BKE_camera_params_compute_viewplane(CameraParams *params, int winx, int winy, float aspx, float aspy);
 void BKE_camera_params_compute_matrix(CameraParams *params);
@@ -130,6 +130,7 @@ void BKE_camera_view_frame(
         float r_vec[4][3]);
 
 bool BKE_camera_view_frame_fit_to_scene(
+        struct Depsgraph *depsgraph,
         struct Scene *scene, struct ViewLayer *view_layer, struct Object *camera_ob,
         float r_co[3], float *r_scale);
 bool BKE_camera_view_frame_fit_to_coords(
index 8923edacb07a7476406a9d03a56dade556ea6853..94daf6150548176feac298ec96be9e6782df2d9b 100644 (file)
@@ -41,7 +41,7 @@ struct MFace;
 struct DerivedMesh;
 struct ClothModifierData;
 struct CollisionModifierData;
-struct EvaluationContext;
+struct Depsgraph;
 
 #define DO_INLINE MALWAYS_INLINE
 
@@ -227,7 +227,7 @@ void cloth_free_contacts(ColliderContacts *collider_contacts, int totcolliders);
 void cloth_free_modifier_extern (struct ClothModifierData *clmd );
 void cloth_free_modifier (struct ClothModifierData *clmd );
 void cloth_init (struct ClothModifierData *clmd );
-void clothModifier_do(struct ClothModifierData *clmd, const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct DerivedMesh *dm, float (*vertexCos)[3]);
+void clothModifier_do(struct ClothModifierData *clmd, struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct DerivedMesh *dm, float (*vertexCos)[3]);
 
 int cloth_uses_vgroup(struct ClothModifierData *clmd);
 
index cf7e290836057dc2f1fcd902845a84c933729c93..54ddb61d922b5cdd5759b672608ca2fb2d06f860 100644 (file)
@@ -40,7 +40,7 @@ struct ListBase;
 struct Object;
 struct Scene;
 struct bPoseChannel;
-struct EvaluationContext;
+struct Depsgraph;
 
 /* ---------------------------------------------------------------------------- */
 #ifdef __cplusplus
@@ -103,7 +103,7 @@ typedef struct bConstraintTypeInfo {
        
        /* evaluation */
        /* set the ct->matrix for the given constraint target (at the given ctime) */
-       void (*get_target_matrix)(const struct EvaluationContext *eval_ctx, struct bConstraint *con, struct bConstraintOb *cob, struct bConstraintTarget *ct, float ctime);
+       void (*get_target_matrix)(struct Depsgraph *depsgraph, struct bConstraint *con, struct bConstraintOb *cob, struct bConstraintTarget *ct, float ctime);
        /* evaluate the constraint for the given time */
        void (*evaluate_constraint)(struct bConstraint *con, struct bConstraintOb *cob, struct ListBase *targets);
 } bConstraintTypeInfo;
@@ -148,10 +148,10 @@ void                  BKE_constraints_clear_evalob(struct bConstraintOb *cob);
 void BKE_constraint_mat_convertspace(
         struct Object *ob, struct bPoseChannel *pchan, float mat[4][4], short from, short to, const bool keep_scale);
 
-void BKE_constraint_target_matrix_get(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct bConstraint *con,
+void BKE_constraint_target_matrix_get(struct Depsgraph *depsgraph, struct Scene *scene, struct bConstraint *con,
                                       int n, short ownertype, void *ownerdata, float mat[4][4], float ctime);
-void BKE_constraint_targets_for_solving_get(const struct EvaluationContext *eval_ctx, struct bConstraint *con, struct bConstraintOb *ob, struct ListBase *targets, float ctime);
-void BKE_constraints_solve(const struct EvaluationContext *eval_ctx, struct ListBase *conlist, struct bConstraintOb *cob, float ctime);
+void BKE_constraint_targets_for_solving_get(struct Depsgraph *depsgraph, struct bConstraint *con, struct bConstraintOb *ob, struct ListBase *targets, float ctime);
+void BKE_constraints_solve(struct Depsgraph *depsgraph, struct ListBase *conlist, struct bConstraintOb *cob, float ctime);
 
 #ifdef __cplusplus
 }
index bccc7addaad5aedbf2137313cfffa08301cc3b35..5057168b9f62be4c7eb145142a6a7856ef0b8e16 100644 (file)
@@ -75,7 +75,6 @@ struct SpaceText;
 struct SpaceImage;
 struct SpaceClip;
 struct ID;
-struct EvaluationContext;
 
 #include "DNA_object_enums.h"
 
@@ -325,8 +324,6 @@ int CTX_data_editable_gpencil_strokes(const bContext *C, ListBase *list);
 
 struct Depsgraph *CTX_data_depsgraph(const bContext *C);
 
-void CTX_data_eval_ctx(const bContext *C, struct EvaluationContext *eval_ctx);
-
 #ifdef __cplusplus
 }
 #endif
index 31542cd6f8af3a39fb78b8e8b5b624de6f2d41ae..e9745ed50fade54544019ad47704e33847f02b59 100644 (file)
@@ -38,24 +38,24 @@ struct Scene;
 struct Object;
 struct BMEditMesh;
 struct Mesh;
-struct EvaluationContext;
+struct Depsgraph;
 
 /* crazyspace.c */
 float (*BKE_crazyspace_get_mapped_editverts(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *obedit))[3];
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *obedit))[3];
 void BKE_crazyspace_set_quats_editmesh(
         struct BMEditMesh *em, float (*origcos)[3], float (*mappedcos)[3], float (*quats)[4],
         const bool use_select);
 void BKE_crazyspace_set_quats_mesh(
         struct Mesh *me, float (*origcos)[3], float (*mappedcos)[3], float (*quats)[4]);
 int BKE_crazyspace_get_first_deform_matrices_editbmesh(
-        const struct EvaluationContext *eval_ctx, struct Scene *, struct Object *, struct BMEditMesh *em,
+        struct Depsgraph *depsgraph, struct Scene *, struct Object *, struct BMEditMesh *em,
         float (**deformmats)[3][3], float (**deformcos)[3]);
 int BKE_sculpt_get_first_deform_matrices(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
         float (**deformmats)[3][3], float (**deformcos)[3]);
 void BKE_crazyspace_build_sculpt(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
         float (**deformmats)[3][3], float (**deformcos)[3]);
 
 #ifdef __cplusplus
index fbd0555225506c9593dc280a302a7601042df3f2..975cea7364d5289aedb89ee68e0a1dcb23090788 100644 (file)
@@ -36,7 +36,7 @@
 struct BezTriple;
 struct Curve;
 struct EditNurb;
-struct EvaluationContext;
+struct Depsgraph;
 struct GHash;
 struct ListBase;
 struct Main;
@@ -123,13 +123,13 @@ void BKE_curve_editNurb_keyIndex_free(struct GHash **keyindex);
 void BKE_curve_editNurb_free(struct Curve *cu);
 struct ListBase *BKE_curve_editNurbs_get(struct Curve *cu);
 
-float *BKE_curve_make_orco(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, int *r_numVerts);
+float *BKE_curve_make_orco(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, int *r_numVerts);
 float *BKE_curve_surf_make_orco(struct Object *ob);
 
 void BKE_curve_bevelList_free(struct ListBase *bev);
 void BKE_curve_bevelList_make(struct Object *ob, struct ListBase *nurbs, bool for_render);
 void BKE_curve_bevel_make(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,  struct ListBase *disp,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,  struct ListBase *disp,
         const bool for_render, const bool use_render_resolution);
 
 void BKE_curve_forward_diff_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride);
@@ -218,7 +218,7 @@ void BKE_nurb_handles_test(struct Nurb *nu, const bool use_handles);
 /* **** Depsgraph evaluation **** */
 
 void BKE_curve_eval_geometry(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Curve *curve);
 
 /* Draw Cache */
index d5f0313ca649b987267df96c74c5401f34a8df92..6559f9a954fac6acee39cb8b764fc158bef334be 100644 (file)
@@ -38,11 +38,11 @@ extern "C" {
 
 #include "BKE_customdata.h"
 
+struct Depsgraph;
 struct Object;
 struct Scene;
 struct SpaceTransform;
 struct ReportList;
-struct EvaluationContext;
 
 /* Warning, those def are stored in files (TransferData modifier), *DO NOT* modify those values. */
 enum {
@@ -130,12 +130,12 @@ enum {
 };
 
 void BKE_object_data_transfer_layout(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob_src,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob_src,
         struct Object *ob_dst, const int data_types, const bool use_delete,
         const int fromlayers_select[DT_MULTILAYER_INDEX_MAX], const int tolayers_select[DT_MULTILAYER_INDEX_MAX]);
 
 bool BKE_object_data_transfer_mesh(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob_src, struct Object *ob_dst, const int data_types, const bool use_create,
         const int map_vert_mode, const int map_edge_mode, const int map_loop_mode, const int map_poly_mode,
         struct SpaceTransform *space_transform, const bool auto_transform,
@@ -144,7 +144,7 @@ bool BKE_object_data_transfer_mesh(
         const int mix_mode, const float mix_factor, const char *vgroup_name, const bool invert_vgroup,
         struct ReportList *reports);
 bool BKE_object_data_transfer_dm(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob_src, struct Object *ob_dst, struct DerivedMesh *dm_dst,
         const int data_types, bool use_create,
         const int map_vert_mode, const int map_edge_mode, const int map_loop_mode, const int map_poly_mode,
index c2229976dd982e412724d78bbe4e169cfd5705fc..09e9b667369f41763fc3d8a37075f2a5a71d226b 100644 (file)
@@ -60,8 +60,8 @@ enum {
 struct Scene;
 struct Object;
 struct ListBase;
+struct Depsgraph;
 struct DerivedMesh;
-struct EvaluationContext;
 
 /* used for curves, nurbs, mball, importing */
 typedef struct DispList {
@@ -87,28 +87,28 @@ void BKE_displist_free(struct ListBase *lb);
 bool BKE_displist_has_faces(struct ListBase *lb);
 
 void BKE_displist_make_surf(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ListBase *dispbase,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct ListBase *dispbase,
         struct DerivedMesh **r_dm_final, const bool for_render, const bool for_orco, const bool use_render_resolution);
 void BKE_displist_make_curveTypes(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, const bool for_orco);
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, const bool for_orco);
 void BKE_displist_make_curveTypes_forRender(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ListBase *dispbase,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct ListBase *dispbase,
         struct DerivedMesh **r_dm_final, const bool for_orco, const bool use_render_resolution);
 void BKE_displist_make_curveTypes_forOrco(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ListBase *dispbase);
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct ListBase *dispbase);
 void BKE_displist_make_mball(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob);
 void BKE_displist_make_mball_forRender(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ListBase *dispbase);
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct ListBase *dispbase);
 
 bool BKE_displist_surfindex_get(DispList *dl, int a, int *b, int *p1, int *p2, int *p3, int *p4);
 void BKE_displist_fill(struct ListBase *dispbase, struct ListBase *to, const float normal_proj[3], const bool flipnormal);
 
-float BKE_displist_calc_taper(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *taperobj, int cur, int tot);
+float BKE_displist_calc_taper(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *taperobj, int cur, int tot);
 
 /* add Orco layer to the displist object which has got derived mesh and return orco */
 float *BKE_displist_make_orco(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct DerivedMesh *dm_final,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct DerivedMesh *dm_final,
         const bool for_render, const bool use_render_resolution);
 
 void BKE_displist_minmax(struct ListBase *dispbase, float min[3], float max[3]);
index 21c900a7f0dfb62523195003c3ce7ad278387da3..8f795bc753562bec541ae3da8431204cbbd8ae4f 100644 (file)
@@ -27,9 +27,9 @@
  *  \ingroup bke
  */
 
+struct Depsgraph;
 struct Scene;
 struct ViewLayer;
-struct EvaluationContext;
 
 /* Actual surface point        */
 typedef struct PaintSurfaceData {
@@ -62,7 +62,7 @@ typedef struct PaintWavePoint {
        short state;
 } PaintWavePoint;
 
-struct DerivedMesh *dynamicPaint_Modifier_do(struct DynamicPaintModifierData *pmd, const struct EvaluationContext *eval_ctx, struct Scene *scene,
+struct DerivedMesh *dynamicPaint_Modifier_do(struct DynamicPaintModifierData *pmd, struct Depsgraph *depsgraph, struct Scene *scene,
                                              struct Object *ob, struct DerivedMesh *dm);
 void dynamicPaint_Modifier_free(struct DynamicPaintModifierData *pmd);
 void dynamicPaint_Modifier_copy(struct DynamicPaintModifierData *pmd, struct DynamicPaintModifierData *tsmd);
@@ -86,7 +86,7 @@ struct DynamicPaintSurface *get_activeSurface(struct DynamicPaintCanvasSettings
 
 /* image sequence baking */
 int dynamicPaint_createUVSurface(struct Scene *scene, struct DynamicPaintSurface *surface, float *progress, short *do_update);
-int dynamicPaint_calculateFrame(struct DynamicPaintSurface *surface, const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *cObject, int frame);
+int dynamicPaint_calculateFrame(struct DynamicPaintSurface *surface, struct Depsgraph *depsgraph, struct Scene *scene, struct Object *cObject, int frame);
 void dynamicPaint_outputSurfaceImage(struct DynamicPaintSurface *surface, char *filename, short output_layer);
 
 /* PaintPoint state */
index af1aeff230fac87acf3bc45be63ec801ad8c85b0..5e456fea64f329192d4000e999f11c8d88055d14 100644 (file)
@@ -40,7 +40,7 @@ struct Mesh;
 struct Scene;
 struct DerivedMesh;
 struct MeshStatVis;
-struct EvaluationContext;
+struct Depsgraph;
 
 /**
  * This structure is used for mesh edit-mode.
@@ -100,6 +100,6 @@ void        BKE_editmesh_statvis_calc(BMEditMesh *em, struct DerivedMesh *dm,
                                       const struct MeshStatVis *statvis);
 
 float (*BKE_editmesh_vertexCos_get(
-           const struct EvaluationContext *eval_ctx, struct BMEditMesh *em, struct Scene *scene, int *r_numVerts))[3];
+           struct Depsgraph *depsgraph, struct BMEditMesh *em, struct Scene *scene, int *r_numVerts))[3];
 
 #endif /* __BKE_EDITMESH_H__ */
index 6fa19d4aaf65cf00bd33868a7afbec7010d2eae2..914dd6504936b0cfa20b5ddc5f2a8066943ac80d 100644 (file)
@@ -44,7 +44,7 @@ struct Group;
 struct ParticleSimulationData;
 struct ParticleData;
 struct ParticleKey;
-struct EvaluationContext;
+struct Depsgraph;
 
 struct EffectorWeights *BKE_add_effector_weights(struct Group *group);
 struct PartDeflect *object_add_collision_fields(int type);
@@ -94,7 +94,7 @@ typedef struct EffectorData {
 typedef struct EffectorCache {
        struct EffectorCache *next, *prev;
 
-       const struct EvaluationContext *eval_ctx;
+       struct Depsgraph *depsgraph;
        struct Scene *scene;
        struct Object *ob;
        struct ParticleSystem *psys;
@@ -113,10 +113,10 @@ typedef struct EffectorCache {
 
 void            free_partdeflect(struct PartDeflect *pd);
 struct ListBase *pdInitEffectors(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob_src, struct ParticleSystem *psys_src,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob_src, struct ParticleSystem *psys_src,
         struct EffectorWeights *weights, bool for_simulation);
 void            pdEndEffectors(struct ListBase **effectors);
-void            pdPrecalculateEffectors(const struct EvaluationContext *eval_ctx, struct ListBase *effectors);
+void            pdPrecalculateEffectors(struct Depsgraph *depsgraph, struct ListBase *effectors);
 void            pdDoEffectors(struct ListBase *effectors, struct ListBase *colliders, struct EffectorWeights *weights, struct EffectedPoint *point, float *force, float *impulse);
 
 void pd_point_from_particle(struct ParticleSimulationData *sim, struct ParticleData *pa, struct ParticleKey *state, struct EffectedPoint *point);
index 4ec58b2a0e5cb494eb34f13560d7b3ec3b67aa69..8e04fe2c23a6a8934c5b2c9df81edccefa7be4b5 100644 (file)
@@ -36,11 +36,11 @@ struct Object;
 struct Scene;
 struct FluidsimSettings;
 struct MVert;
-struct EvaluationContext;
+struct Depsgraph;
 
 /* old interface */
 
-void initElbeemMesh(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+void initElbeemMesh(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
                     int *numVertices, float **vertices,
                     int *numTriangles, int **triangles,
                     int useGlobalCoords, int modifierIndex);
index a842bec7609f242ca7b12afa0eeff8a77df7491d..0195d1f1243009825e86dc19b57e07c648831185 100644 (file)
@@ -34,7 +34,7 @@
  */
 
 struct Base;
-struct EvaluationContext;
+struct Depsgraph;
 struct Group;
 struct Main;
 struct Object;
@@ -53,11 +53,11 @@ bool          BKE_group_object_exists(struct Group *group, struct Object *ob);
 bool          BKE_group_object_cyclic_check(struct Main *bmain, struct Object *object, struct Group *group);
 bool          BKE_group_is_animated(struct Group *group, struct Object *parent);
 
-void          BKE_group_handle_recalc_and_update(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *parent, struct Group *group);
+void          BKE_group_handle_recalc_and_update(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *parent, struct Group *group);
 
 /* Dependency graph evaluation. */
 
-void BKE_group_eval_view_layers(const struct EvaluationContext *eval_ctx,
+void BKE_group_eval_view_layers(struct Depsgraph *depsgraph,
                                 struct Group *group);
 
 /* Helper macros. */
index 1cdf193f054d3bc6a7bb30de39aaeb7b178c9009..1e3921747a539c8fb6d2b6277c189d8ed156a31d 100644 (file)
@@ -43,7 +43,7 @@ struct Scene;
 struct DerivedMesh;
 struct BPoint;
 struct MDeformVert;
-struct EvaluationContext;
+struct Depsgraph;
 
 void BKE_lattice_resize(struct Lattice *lt, int u, int v, int w, struct Object *ltOb);
 void BKE_lattice_init(struct Lattice *lt);
@@ -79,7 +79,7 @@ void armature_deform_verts(struct Object *armOb, struct Object *target,
 
 float (*BKE_lattice_vertexcos_get(struct Object *ob, int *r_numVerts))[3];
 void    BKE_lattice_vertexcos_apply(struct Object *ob, float (*vertexCos)[3]);
-void    BKE_lattice_modifiers_calc(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
+void    BKE_lattice_modifiers_calc(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob);
 
 struct MDeformVert *BKE_lattice_deform_verts_get(struct Object *lattice);
 struct BPoint *BKE_lattice_active_point_get(struct Lattice *lt);
@@ -101,9 +101,9 @@ void BKE_lattice_bitmap_from_flag(struct Lattice *lt, unsigned int *bitmap, cons
 
 /* **** Depsgraph evaluation **** */
 
-struct EvaluationContext;
+struct Depsgraph;
 
-void BKE_lattice_eval_geometry(const struct EvaluationContext *eval_ctx,
+void BKE_lattice_eval_geometry(struct Depsgraph *depsgraph,
                                struct Lattice *latt);
 
 /* Draw Cache */
index 75fb4962bef3aec15bb80d9b9de4f83d3dd6aa26..8d141a2548b15d5f977e5401839a78036393dd81 100644 (file)
@@ -42,7 +42,7 @@ extern "C" {
 #define ROOT_PROP "root"
 
 struct Base;
-struct EvaluationContext;
+struct Depsgraph;
 struct Group;
 struct ID;
 struct IDProperty;
@@ -169,11 +169,11 @@ void BKE_collection_engine_property_value_set_bool(struct IDProperty *props, con
 
 /* evaluation */
 
-void BKE_layer_eval_view_layer(const struct EvaluationContext *eval_ctx,
+void BKE_layer_eval_view_layer(struct Depsgraph *depsgraph,
                                struct ID *owner_id,
                                struct ViewLayer *view_layer);
 
-void BKE_layer_eval_view_layer_indexed(const struct EvaluationContext *eval_ctx,
+void BKE_layer_eval_view_layer_indexed(struct Depsgraph *depsgraph,
                                        struct ID *owner_id,
                                        int view_layer_index);
 
index aac43768acf5236d1c7294e930826f0145bd3dc8..647af88d9803ae3cec6e27042fd62d924fa0ffdb 100644 (file)
@@ -48,7 +48,7 @@
 extern "C" {
 #endif
 
-struct EvaluationContext;
+struct Depsgraph;
 struct Library;
 struct MainLock;
 struct GHash;
@@ -130,9 +130,6 @@ typedef struct Main {
 
        char id_tag_update[MAX_LIBARRAY];
 
-       /* Evaluation context used by viewport */
-       struct EvaluationContext *eval_ctx;
-
        /* Must be generated, used and freed by same code - never assume this is valid data unless you know
         * when, who and how it was created.
         * Used by code doing a lot of remapping etc. at once to speed things up. */
index 8b9fea071b0494aa2220ffdcd8059f31571f7ee3..976ee5b2691273227ab1d877dacf5c2c5ad4a930 100644 (file)
@@ -32,7 +32,7 @@
  *  \ingroup bke
  */
 
-struct EvaluationContext;
+struct Depsgraph;
 struct ImageUser;
 struct Image;
 struct ListBase;
@@ -236,8 +236,8 @@ float *BKE_mask_point_segment_feather_diff(struct MaskSpline *spline, struct Mas
 void BKE_mask_layer_evaluate_animation(struct MaskLayer *masklay, const float ctime);
 void BKE_mask_layer_evaluate_deform(struct MaskLayer *masklay, const float ctime);
 
-void BKE_mask_eval_animation(struct EvaluationContext *eval_ctx, struct Mask *mask);
-void BKE_mask_eval_update(struct EvaluationContext *eval_ctx, struct Mask *mask);
+void BKE_mask_eval_animation(struct Depsgraph *depsgraph, struct Mask *mask);
+void BKE_mask_eval_update(struct Depsgraph *depsgraph, struct Mask *mask);
 
 /* mask_rasterize.c */
 struct MaskRasterHandle;
index f4c98fc0aeab08d3b1121d5f530d17c3f662cfec..d57d0ea1a97fba7ebb77025442f372877cd095bb 100644 (file)
@@ -118,9 +118,9 @@ void paste_matcopybuf(struct Material *ma);
 
 /* Evaluation. */
 
-struct EvaluationContext;
+struct Depsgraph;
 
-void BKE_material_eval(const struct EvaluationContext *eval_ctx, struct Material *material);
+void BKE_material_eval(struct Depsgraph *depsgraph, struct Material *material);
 
 #ifdef __cplusplus
 }
index d4776d890d2e909b0d1cbf4b836094626e8541e6..b05a35e614f36618538ddfa42ab364a39a9b54b9 100644 (file)
@@ -32,6 +32,7 @@
  *  \since March 2001
  *  \author nzc
  */
+struct Depsgraph;
 struct Main;
 struct MetaBall;
 struct Object;
@@ -71,9 +72,9 @@ void BKE_mball_select_swap(struct MetaBall *mb);
 
 /* **** Depsgraph evaluation **** */
 
-struct EvaluationContext;
+struct Depsgraph;
 
-void BKE_mball_eval_geometry(const struct EvaluationContext *eval_ctx,
+void BKE_mball_eval_geometry(struct Depsgraph *depsgraph,
                              struct MetaBall *mball);
 /* Draw Cache */
 
index 40cdc80e280ae9f0b8f161653db08dab7907927f..df652df177d055c06a32b183ed1d93bc9fd51998 100644 (file)
 /** \file BKE_mball_tessellate.h
  *  \ingroup bke
  */
-struct EvaluationContext;
+struct Depsgraph;
 struct Object;
 struct Scene;
 
 void BKE_mball_polygonize(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Depsgraph *depsgraph, struct Scene *scene,
         struct Object *ob, struct ListBase *dispbase);
 
 void BKE_mball_cubeTable_free(void);
index 79d72206903a7e5b683d470b0619d9e9d17e7add..e2265ae855e57cfa0e50d36dcda399891e77cd90 100644 (file)
@@ -34,8 +34,8 @@
 struct ID;
 struct BMeshCreateParams;
 struct BoundBox;
+struct Depsgraph;
 struct EdgeHash;
-struct EvaluationContext;
 struct ListBase;
 struct LinkNode;
 struct BLI_Stack;
@@ -119,7 +119,7 @@ void BKE_mesh_from_nurbs_displist(
         struct Object *ob, struct ListBase *dispbase, const bool use_orco_uv, const char *obdata_name);
 void BKE_mesh_from_nurbs(struct Object *ob);
 void BKE_mesh_to_curve_nurblist(struct DerivedMesh *dm, struct ListBase *nurblist, const int edge_users_test);
-void BKE_mesh_to_curve(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
+void BKE_mesh_to_curve(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob);
 void BKE_mesh_material_index_remove(struct Mesh *me, short index);
 void BKE_mesh_material_index_clear(struct Mesh *me);
 void BKE_mesh_material_remap(struct Mesh *me, const unsigned int *remap, unsigned int remap_len);
@@ -140,7 +140,7 @@ float (*BKE_mesh_vertexCos_get(const struct Mesh *me, int *r_numVerts))[3];
 
 void BKE_mesh_split_faces(struct Mesh *mesh, bool free_loop_normals);
 
-struct Mesh *BKE_mesh_new_from_object(const struct EvaluationContext *eval_ctx, struct Main *bmain, struct Scene *sce, struct Object *ob,
+struct Mesh *BKE_mesh_new_from_object(struct Depsgraph *depsgraph, struct Main *bmain, struct Scene *sce, struct Object *ob,
                                       int apply_modifiers, int calc_tessface, int calc_undeformed);
 
 /* vertex level transformations & checks (no derived mesh) */
@@ -442,7 +442,7 @@ void BKE_mesh_calc_edges(struct Mesh *mesh, bool update, const bool select);
 
 /* **** Depsgraph evaluation **** */
 
-void BKE_mesh_eval_geometry(const struct EvaluationContext *eval_ctx,
+void BKE_mesh_eval_geometry(struct Depsgraph *depsgraph,
                             struct Mesh *mesh);
 
 /* Draw Cache */
index 329defbc77c4188a92503e5f552fa4075bcf8b6e..c81c0f7c4c0f236c68c8a1cd2b0c996e4b441d6c 100644 (file)
@@ -33,8 +33,8 @@
 #include "BKE_customdata.h"
 
 struct ID;
+struct Depsgraph;
 struct DerivedMesh;
-struct EvaluationContext;
 struct Object;
 struct Scene;
 struct ViewLayer;
@@ -163,25 +163,25 @@ typedef struct ModifierTypeInfo {
         * the object it can obtain it from the derivedData argument if non-NULL,
         * and otherwise the ob argument.
         */
-       void (*deformVerts)(struct ModifierData *md, const struct EvaluationContext *eval_ctx,
+       void (*deformVerts)(struct ModifierData *md, struct Depsgraph *depsgraph,
                            struct Object *ob, struct DerivedMesh *derivedData,
                            float (*vertexCos)[3], int numVerts,
                            ModifierApplyFlag flag);
 
        /* Like deformMatricesEM but called from object mode (for supporting modifiers in sculpt mode) */
-       void (*deformMatrices)(struct ModifierData *md, const struct EvaluationContext *eval_ctx,
+       void (*deformMatrices)(struct ModifierData *md, struct Depsgraph *depsgraph,
                               struct Object *ob, struct DerivedMesh *derivedData,
                               float (*vertexCos)[3], float (*defMats)[3][3], int numVerts);
 
        /* Like deformVerts but called during editmode (for supporting modifiers)
         */
-       void (*deformVertsEM)(struct ModifierData *md, const struct EvaluationContext *eval_ctx,
+       void (*deformVertsEM)(struct ModifierData *md, struct Depsgraph *depsgraph,
                              struct Object *ob, struct BMEditMesh *editData,
                              struct DerivedMesh *derivedData,
                              float (*vertexCos)[3], int numVerts);
 
        /* Set deform matrix per vertex for crazyspace correction */
-       void (*deformMatricesEM)(struct ModifierData *md, const struct EvaluationContext *eval_ctx,
+       void (*deformMatricesEM)(struct ModifierData *md, struct Depsgraph *depsgraph,
                                 struct Object *ob, struct BMEditMesh *editData,
                                 struct DerivedMesh *derivedData,
                                 float (*vertexCos)[3], float (*defMats)[3][3], int numVerts);
@@ -207,7 +207,7 @@ typedef struct ModifierTypeInfo {
         * The modifier may reuse the derivedData argument (i.e. return it in
         * modified form), but must not release it.
         */
-       struct DerivedMesh *(*applyModifier)(struct ModifierData *md, const struct EvaluationContext *eval_ctx,
+       struct DerivedMesh *(*applyModifier)(struct ModifierData *md, struct Depsgraph *depsgraph,
                                             struct Object *ob, struct DerivedMesh *derivedData,
                                             ModifierApplyFlag flag);
 
@@ -218,7 +218,7 @@ typedef struct ModifierTypeInfo {
         * are expected from editmode objects. The same qualifications regarding
         * derivedData apply as for applyModifier.
         */
-       struct DerivedMesh *(*applyModifierEM)(struct ModifierData *md, const struct EvaluationContext *eval_ctx,
+       struct DerivedMesh *(*applyModifierEM)(struct ModifierData *md, struct Depsgraph *depsgraph,
                                               struct Object *ob, struct BMEditMesh *editData,
                                               struct DerivedMesh *derivedData, ModifierApplyFlag flag);
 
@@ -422,24 +422,24 @@ const char *modifier_path_relbase(struct Object *ob);
 /* wrappers for modifier callbacks */
 
 struct DerivedMesh *modwrap_applyModifier(
-        ModifierData *md, const struct EvaluationContext *eval_ctx,
+        ModifierData *md, struct Depsgraph *depsgraph,
         struct Object *ob, struct DerivedMesh *dm,
         ModifierApplyFlag flag);
 
 struct DerivedMesh *modwrap_applyModifierEM(
-        ModifierData *md, const struct EvaluationContext *eval_ctx,
+        ModifierData *md, struct Depsgraph *depsgraph,
         struct Object *ob, struct BMEditMesh *em,
         struct DerivedMesh *dm,
         ModifierApplyFlag flag);
 
 void modwrap_deformVerts(
-        ModifierData *md, const struct EvaluationContext *eval_ctx,
+        ModifierData *md, struct Depsgraph *depsgraph,
         struct Object *ob, struct DerivedMesh *dm,
         float (*vertexCos)[3], int numVerts,
         ModifierApplyFlag flag);
 
 void modwrap_deformVertsEM(
-        ModifierData *md, const struct EvaluationContext *eval_ctx, struct Object *ob,
+        ModifierData *md, struct Depsgraph *depsgraph, struct Object *ob,
         struct BMEditMesh *em, struct DerivedMesh *dm,
         float (*vertexCos)[3], int numVerts);
 
index 818f79ad8aca5cf88706dcd3e99c37ad74dd07ae..5b5ebbf035c627850066bce8fbffeda6913ceaf4 100644 (file)
@@ -32,7 +32,7 @@
  *  \author Sergey Sharybin
  */
 
-struct EvaluationContext;
+struct Depsgraph;
 struct ImBuf;
 struct Main;
 struct MovieClip;
@@ -85,7 +85,7 @@ bool BKE_movieclip_has_cached_frame(struct MovieClip *clip, struct MovieClipUser
 bool BKE_movieclip_put_frame_if_possible(struct MovieClip *clip, struct MovieClipUser *user, struct ImBuf *ibuf);
 
 /* Evaluaiton. */
-void BKE_movieclip_eval_update(struct EvaluationContext *eval_ctx, struct MovieClip *clip);
+void BKE_movieclip_eval_update(struct Depsgraph *depsgraph, struct MovieClip *clip);
 
 /* cacheing flags */
 #define MOVIECLIP_CACHE_SKIP        (1 << 0)
index 761bb7e8acb2c6a51cd697ee79f63f83ce4a4775..10bc367e909f13cb44b12c108c4eacb3be81e80b 100644 (file)
@@ -33,8 +33,8 @@
  */
 
 enum MultiresModifiedFlags;
+struct Depsgraph;
 struct DerivedMesh;
-struct EvaluationContext;
 struct MDisps;
 struct Mesh;
 struct ModifierData;
@@ -81,18 +81,18 @@ struct DerivedMesh *multires_make_derived_from_derived(struct DerivedMesh *dm,
 struct MultiresModifierData *find_multires_modifier_before(struct Scene *scene,
                                                            struct ModifierData *lastmd);
 struct MultiresModifierData *get_multires_modifier(struct Scene *scene, struct Object *ob, bool use_first);
-struct DerivedMesh *get_multires_dm(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
+struct DerivedMesh *get_multires_dm(struct Depsgraph *depsgraph, struct Scene *scene, struct MultiresModifierData *mmd,
                                     struct Object *ob);
 void multiresModifier_del_levels(struct MultiresModifierData *, struct Object *, int direction);
 void multiresModifier_base_apply(struct MultiresModifierData *mmd, struct Object *ob);
 void multiresModifier_subdivide(struct MultiresModifierData *mmd, struct Object *ob, int updateblock, int simple);
 void multiresModifier_sync_levels_ex(
         struct Object *ob_dst, struct MultiresModifierData *mmd_src, struct MultiresModifierData *mmd_dst);
-int multiresModifier_reshape(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
+int multiresModifier_reshape(struct Depsgraph *depsgraph, struct Scene *scene, struct MultiresModifierData *mmd,
                              struct Object *dst, struct Object *src);
-int multiresModifier_reshapeFromDM(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
+int multiresModifier_reshapeFromDM(struct Depsgraph *depsgraph, struct Scene *scene, struct MultiresModifierData *mmd,
                                    struct Object *ob, struct DerivedMesh *srcdm);
-int multiresModifier_reshapeFromDeformMod(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct MultiresModifierData *mmd,
+int multiresModifier_reshapeFromDeformMod(struct Depsgraph *depsgraph, struct Scene *scene, struct MultiresModifierData *mmd,
                                           struct Object *ob, struct ModifierData *md);
 
 void multires_stitch_grids(struct Object *);
@@ -110,8 +110,8 @@ void multires_free(struct Multires *mr);
 void multires_load_old(struct Object *ob, struct Mesh *me);
 void multires_load_old_250(struct Mesh *);
 
-void multiresModifier_scale_disp(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
-void multiresModifier_prepare_join(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct Object *to_ob);
+void multiresModifier_scale_disp(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob);
+void multiresModifier_prepare_join(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct Object *to_ob);
 
 int multires_mdisp_corners(struct MDisps *s);
 
index 6427a87a1822acf8f40225766d76a8fa325ea1f5..aa09e2fd5c38051d61085e8941f8cabceb1b08a0 100644 (file)
@@ -1060,12 +1060,12 @@ void free_nodesystem(void);
 /* -------------------------------------------------------------------- */
 /* evaluation support, */
 
-struct EvaluationContext;
+struct Depsgraph;
 
 void BKE_nodetree_copy_default_values(struct bNodeTree *ntree_dst,
                                       const struct bNodeTree *ntree_src);
 
-void BKE_nodetree_shading_params_eval(const struct EvaluationContext *eval_ctx,
+void BKE_nodetree_shading_params_eval(struct Depsgraph *depsgraph,
                                       struct bNodeTree *ntree_dst,
                                       const struct bNodeTree *ntree_src);
 
index c75bbf849a8fed74d68913e26c1e5d03b6f67e90..d2d90801ade367e84e488943dd4afc238a2a10ef 100644 (file)
@@ -36,7 +36,7 @@ extern "C" {
 #include "BLI_compiler_attrs.h"
 
 struct Base;
-struct EvaluationContext;
+struct Depsgraph;
 struct Scene;
 struct ViewLayer;
 struct Object;
@@ -53,7 +53,7 @@ struct ModifierData;
 #include "DNA_object_enums.h"
 
 void BKE_object_workob_clear(struct Object *workob);
-void BKE_object_workob_calc_parent(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct Object *workob);
+void BKE_object_workob_calc_parent(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct Object *workob);
 
 void BKE_object_transform_copy(struct Object *ob_tar, const struct Object *ob_src);
 struct SoftBody *copy_softbody(const struct SoftBody *sb, const int flag);
@@ -146,14 +146,14 @@ void BKE_object_get_parent_matrix(
         struct Scene *scene, struct Object *ob,
         struct Object *par, float parentmat[4][4]);
 void BKE_object_where_is_calc(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob);
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob);
 void BKE_object_where_is_calc_ex(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct RigidBodyWorld *rbw,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct RigidBodyWorld *rbw,
         struct Object *ob, float r_originmat[3][3]);
 void BKE_object_where_is_calc_time(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, float ctime);
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, float ctime);
 void BKE_object_where_is_calc_time_ex(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, float ctime,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, float ctime,
         struct RigidBodyWorld *rbw, float r_originmat[3][3]);
 void BKE_object_where_is_calc_mat4(struct Scene *scene, struct Object *ob, float obmat[4][4]);
 
@@ -171,13 +171,15 @@ void BKE_object_empty_draw_type_set(struct Object *ob, const int value);
 void BKE_object_boundbox_flag(struct Object *ob, int flag, const bool set);
 void BKE_object_minmax(struct Object *ob, float r_min[3], float r_max[3], const bool use_hidden);
 bool BKE_object_minmax_dupli(
-        struct Scene *scene, struct Object *ob, float r_min[3], float r_max[3], const bool use_hidden);
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
+        float r_min[3], float r_max[3], const bool use_hidden);
 
 /* sometimes min-max isn't enough, we need to loop over each point */
 void BKE_object_foreach_display_point(
         struct Object *ob, float obmat[4][4],
         void (*func_cb)(const float[3], void *), void *user_data);
 void BKE_scene_foreach_display_point(
+        struct Depsgraph *depsgraph,
         struct Scene *scene,
         struct ViewLayer *view_layer,
         void (*func_cb)(const float[3], void *), void *user_data);
@@ -207,60 +209,60 @@ void BKE_object_tfm_protected_restore(
 
 /* Dependency graph evaluation callbacks. */
 void BKE_object_eval_local_transform(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Object *ob);
 void BKE_object_eval_parent(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Scene *scene,
         struct Object *ob);
 void BKE_object_eval_constraints(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Scene *scene,
         struct Object *ob);
-void BKE_object_eval_done(const struct EvaluationContext *eval_ctx, struct Object *ob);
+void BKE_object_eval_done(struct Depsgraph *depsgraph, struct Object *ob);
 
 bool BKE_object_eval_proxy_copy(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Object *object);
 void BKE_object_eval_uber_transform(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Object *ob);
 void BKE_object_eval_uber_data(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Scene *scene,
         struct Object *ob);
 
 void BKE_object_eval_cloth(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Scene *scene,
         struct Object *object);
 
 void BKE_object_eval_transform_all(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Scene *scene,
         struct Object *object);
 
 void BKE_object_eval_update_shading(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Object *object);
 void BKE_object_data_select_update(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct ID *object_data);
 
 void BKE_object_eval_flush_base_flags(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Object *object, int base_index,
         const bool is_from_set);
 
 void BKE_object_handle_data_update(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Scene *scene,
         struct Object *ob);
 void BKE_object_handle_update(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Scene *scene, struct Object *ob);
 void BKE_object_handle_update_ex(
-        const struct EvaluationContext *eval_ctx,
+        struct Depsgraph *depsgraph,
         struct Scene *scene, struct Object *ob,
         struct RigidBodyWorld *rbw,
         const bool do_proxy_update);
@@ -316,7 +318,7 @@ struct KDTree *BKE_object_as_kdtree(struct Object *ob, int *r_tot);
 bool BKE_object_modifier_use_time(struct Object *ob, struct ModifierData *md);
 
 bool BKE_object_modifier_update_subframe(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
         bool update_mesh, int parent_recursion, float frame, int type);
 
 #ifdef __cplusplus
index 849f3f9d11be70365cc0a131d2eb3e2b3bfc79d7..717f4c4f6e8e6b234f72f1ea6308db7d16e95a08 100644 (file)
@@ -58,7 +58,7 @@ struct StrokeCache;
 struct Tex;
 struct ImagePool;
 struct UnifiedPaintSettings;
-struct EvaluationContext;
+struct Depsgraph;
 
 enum eOverlayFlags;
 
@@ -251,7 +251,7 @@ void BKE_sculptsession_free_vwpaint_data(struct SculptSession *ss);
 void BKE_sculptsession_bm_to_me(struct Object *ob, bool reorder);
 void BKE_sculptsession_bm_to_me_for_render(struct Object *object);
 void BKE_sculpt_update_mesh_elements(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Sculpt *sd, struct Object *ob,
+        struct Depsgraph *depsgraph, struct Scene *scene, struct Sculpt *sd, struct Object *ob,
         bool need_pmap, bool need_mask);
 struct MultiresModifierData *BKE_sculpt_multires_active(struct Scene *scene, struct Object *ob);
 int BKE_sculpt_mask_layers_ensure(struct Object *ob,
index 8cd7609740129cbcd2774781a91a6d15dec8312d..05082ed1a704c2c9c451cec7a0b753668d7ac46a 100644 (file)
@@ -63,7 +63,7 @@ struct RNG;
 struct BVHTreeRay;
 struct BVHTreeRayHit; 
 struct EdgeHash;
-struct EvaluationContext;
+struct Depsgraph;
 struct ViewLayer;
 
 #define PARTICLE_COLLISION_MAX_COLLISIONS 10
@@ -80,7 +80,7 @@ struct ViewLayer;
 
 /* common stuff that many particle functions need */
 typedef struct ParticleSimulationData {
-       const struct EvaluationContext *eval_ctx;
+       struct Depsgraph *depsgraph;
        struct Scene *scene;
        struct Object *ob;
        struct ParticleSystem *psys;
@@ -341,9 +341,9 @@ void psys_reset(struct ParticleSystem *psys, int mode);
 void psys_find_parents(struct ParticleSimulationData *sim, const bool use_render_params);
 
 void psys_cache_paths(struct ParticleSimulationData *sim, float cfra, const bool use_render_params);
-void psys_cache_edit_paths(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct PTCacheEdit *edit, float cfra, const bool use_render_params);
+void psys_cache_edit_paths(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct PTCacheEdit *edit, float cfra, const bool use_render_params);
 void psys_cache_child_paths(struct ParticleSimulationData *sim, float cfra, const bool editupdate, const bool use_render_params);
-int do_guides(const struct EvaluationContext *eval_ctx, struct ParticleSettings *part, struct ListBase *effectors, ParticleKey *state, int pa_num, float time);
+int do_guides(struct Depsgraph *depsgraph, struct ParticleSettings *part, struct ListBase *effectors, ParticleKey *state, int pa_num, float time);
 void precalc_guides(struct ParticleSimulationData *sim, struct ListBase *effectors);
 float psys_get_timestep(struct ParticleSimulationData *sim);
 float psys_get_child_time(struct ParticleSystem *psys, struct ChildParticle *cpa, float cfra, float *birthtime, float *dietime);
@@ -376,7 +376,7 @@ void psys_tasks_create(struct ParticleThreadContext *ctx, int startpart, int end
 void psys_tasks_free(struct ParticleTask *tasks, int numtasks);
 
 void psys_make_billboard(ParticleBillboardData *bb, float xvec[3], float yvec[3], float zvec[3], float center[3]);
-void psys_apply_hair_lattice(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ParticleSystem *psys);
+void psys_apply_hair_lattice(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct ParticleSystem *psys);
 
 /* particle_system.c */
 struct ParticleSystem *psys_get_target_system(struct Object *ob, struct ParticleTarget *pt);
@@ -391,7 +391,7 @@ void psys_check_boid_data(struct ParticleSystem *psys);
 
 void psys_get_birth_coords(struct ParticleSimulationData *sim, struct ParticleData *pa, struct ParticleKey *state, float dtime, float cfra);
 
-void particle_system_update(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob, struct ParticleSystem *psys, const bool use_render_params);
+void particle_system_update(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct ParticleSystem *psys, const bool use_render_params);
 
 /* Callback format for performing operations on ID-pointers for particle systems */
 typedef void (*ParticleSystemIDFunc)(struct ParticleSystem *psys, struct ID **idpoin, void *userdata, int cb_flag);
@@ -454,9 +454,9 @@ float psys_get_current_display_percentage(struct ParticleSystem *psys, const boo
 
 /* **** Depsgraph evaluation **** */
 
-struct EvaluationContext;
+struct Depsgraph;
 
-void BKE_particle_system_eval_init(const struct EvaluationContext *eval_ctx,
+void BKE_particle_system_eval_init(struct Depsgraph *depsgraph,
                                    struct Scene *scene,
                                    struct Object *ob);
 
index 6aa43665427b39625c0037a0d210371da662eaf2..016a531db9598ffb2a0f1a804cafef2ddbc0a6da 100644 (file)
@@ -37,7 +37,7 @@
 struct RigidBodyWorld;
 struct RigidBodyOb;
 
-struct EvaluationContext;
+struct Depsgraph;
 struct Scene;
 struct Object;
 
@@ -100,19 +100,19 @@ void BKE_rigidbody_aftertrans_update(struct Object *ob, float loc[3], float rot[
 void BKE_rigidbody_sync_transforms(struct RigidBodyWorld *rbw, struct Object *ob, float ctime);
 bool BKE_rigidbody_check_sim_running(struct RigidBodyWorld *rbw, float ctime);
 void BKE_rigidbody_cache_reset(struct RigidBodyWorld *rbw);
-void BKE_rigidbody_rebuild_world(const struct EvaluationContext *eval_ctx, struct Scene *scene, float ctime);
-void BKE_rigidbody_do_simulation(const struct EvaluationContext *eval_ctx, struct Scene *scene, float ctime);
+void BKE_rigidbody_rebuild_world(struct Depsgraph *depsgraph, struct Scene *scene, float ctime);
+void BKE_rigidbody_do_simulation(struct Depsgraph *depsgraph, struct Scene *scene, float ctime);
 
 /* -------------------- */
 /* Depsgraph evaluation */
 
-void BKE_rigidbody_rebuild_sim(const struct EvaluationContext *eval_ctx,
+void BKE_rigidbody_rebuild_sim(struct Depsgraph *depsgraph,
                                struct Scene *scene);
 
-void BKE_rigidbody_eval_simulation(const struct EvaluationContext *eval_ctx,
+void BKE_rigidbody_eval_simulation(struct Depsgraph *depsgraph,
                                    struct Scene *scene);
 
-void BKE_rigidbody_object_sync_transforms(const struct EvaluationContext *eval_ctx,
+void BKE_rigidbody_object_sync_transforms(struct Depsgraph *depsgraph,
                                           struct Scene *scene,
                                           struct Object *ob);
 
index 4a97cb763dc989a2f9d3d4a9c3e08b8d0188ecc7..8c7c3fb15deab6ceafb25d62bb88ff270640a946 100644 (file)
@@ -39,7 +39,6 @@ extern "C" {
 
 struct AviCodecData;
 struct Depsgraph;
-struct EvaluationContext;
 struct Main;
 struct Object;
 struct RenderData;
@@ -100,7 +99,7 @@ typedef struct SceneBaseIter {
 } SceneBaseIter;
 
 int BKE_scene_base_iter_next(
-        const struct EvaluationContext *eval_ctx, struct SceneBaseIter *iter,
+        struct Depsgraph *depsgraph, struct SceneBaseIter *iter,
         struct Scene **scene, int val, struct Base **base, struct Object **ob);
 
 void BKE_scene_base_flag_to_objects(struct ViewLayer *view_layer);
index 21f3f344e645ed1bf12b62f596988c521a5b6908..1a0e61b0dd640c611ab0056e2a1de4794bb8b17c 100644 (file)
@@ -31,7 +31,7 @@
  */
 
 struct bContext;
-struct EvaluationContext;
+struct Depsgraph;
 struct StripColorBalance;
 struct Editing;
 struct GSet;
@@ -93,12 +93,12 @@ void BKE_sequence_iterator_end(SeqIterator *iter);
        }
 
 typedef struct SeqRenderData {
-       struct EvaluationContext *eval_ctx;
        struct Main *bmain;
        struct Scene *scene;
        int rectx;
        int recty;
        int preview_render_size;
+       int for_render;
        int motion_blur_samples;
        float motion_blur_shutter;
        bool skip_cache;
@@ -113,8 +113,9 @@ typedef struct SeqRenderData {
 } SeqRenderData;
 
 void BKE_sequencer_new_render_data(
-        struct EvaluationContext *eval_ctx, struct Main *bmain, struct Scene *scene,
+        struct Main *bmain, struct Scene *scene,
         int rectx, int recty, int preview_render_size,
+        int for_render,
         SeqRenderData *r_context);
 
 int BKE_sequencer_cmp_time_startdisp(const void *a, const void *b);
@@ -435,7 +436,7 @@ enum {
 };
 
 typedef struct ImBuf *(*SequencerDrawView)(
-        const struct EvaluationContext *eval_ctx, struct Scene *scene,
+        struct Depsgraph *depsgraph, struct Scene *scene,
         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,
index 64d70e8e209842e065c39aae64f03a0f5c947f72..82bfe56b0ab2062d0800ea5a13f7ac5e11d60533 100644 (file)
@@ -35,7 +35,7 @@
 
 typedef float (*bresenham_callback)(float *result, float *input, int res[3], int *pixel, float *tRay, float correct);
 
-struct DerivedMesh *smokeModifier_do(struct SmokeModifierData *smd, const struct EvaluationContext *eval_ctx,
+struct DerivedMesh *smokeModifier_do(struct SmokeModifierData *smd, struct Depsgraph *depsgraph,
                                      struct Scene *scene,
                                      struct Object *ob, struct DerivedMesh *dm);
 
index e2255bdb779cf93628b2ffceaf5adb8c8a6ecef4..c7bf876a41438048dd0b2fc733f752938cb01dd9 100644 (file)
  *  \ingroup bke
  */
 
+struct Depsgraph;
 struct Object;
 struct Scene;
 struct SoftBody;
-struct EvaluationContext;
 
 typedef struct BodyPoint {
        float origS[3], origE[3], origT[3], pos[3], vec[3], force[3];
@@ -60,7 +60,7 @@ extern void             sbFree(struct SoftBody *sb);
 extern void             sbFreeSimulation(struct SoftBody *sb);
 
 /* do one simul step, reading and writing vertex locs from given array */
-extern void             sbObjectStep(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+extern void             sbObjectStep(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
                                      float framnr, float (*vertexCos)[3], int numVerts);
 
 /* makes totally fresh start situation, resets time */
index 5da87de1cc998571778f09df21bce6936eb96244..13302caa09d840fdd979976bee873dc2a2623543 100644 (file)
@@ -47,7 +47,6 @@ struct MovieDistortion;
 struct Camera;
 struct Object;
 struct Scene;
-struct EvaluationContext;
 struct rcti;
 
 /* **** Common functions **** */
index 32a9bcbec6104384592264ea99b26e06143c171b..c4de9d134b7cd62a9a13686891c8e94e13343379 100644 (file)
@@ -28,7 +28,6 @@
 #include "BLI_compiler_attrs.h"
 
 struct bScreen;
-struct EvaluationContext;
 struct Main;
 struct Scene;
 struct TransformOrientation;
index b45d7a7e6ec7af1543801c7af648bc481c9a5c22..fe8aa8694af25fcfd820b34e5b92589790b71d2a 100644 (file)
@@ -46,9 +46,9 @@ void BKE_world_make_local(struct Main *bmain, struct World *wrld, const bool lib
 
 /* Evaluation. */
 
-struct EvaluationContext;
+struct Depsgraph;
 
-void BKE_world_eval(const struct EvaluationContext *eval_ctx, struct World *world);
+void BKE_world_eval(struct Depsgraph *depsgraph, struct World *world);
 
 #endif
 
index 916e11dbd46f2da56923fb478022a83cd9c70fee..132f247f0a10f9b2c944150007d875cfffda9976 100644 (file)
@@ -1148,7 +1148,7 @@ DerivedMesh *mesh_create_derived(Mesh *me, float (*vertCos)[3])
 }
 
 DerivedMesh *mesh_create_derived_for_modifier(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob,
         ModifierData *md, int build_shapekey_layers)
 {
        Mesh *me = ob->data;
@@ -1174,7 +1174,7 @@ DerivedMesh *mesh_create_derived_for_modifier(
                int numVerts;
                float (*deformedVerts)[3] = BKE_mesh_vertexCos_get(me, &numVerts);
 
-               modwrap_deformVerts(md, eval_ctx, ob, NULL, deformedVerts, numVerts, 0);
+               modwrap_deformVerts(md, depsgraph, ob, NULL, deformedVerts, numVerts, 0);
                dm = mesh_create_derived(me, deformedVerts);
 
                if (build_shapekey_layers)
@@ -1188,7 +1188,7 @@ DerivedMesh *mesh_create_derived_for_modifier(
                if (build_shapekey_layers)
                        add_shapekey_layers(tdm, me, ob);
                
-               dm = modwrap_applyModifier(md, eval_ctx, ob, tdm, 0);
+               dm = modwrap_applyModifier(md, depsgraph, ob, tdm, 0);
                ASSERT_IS_VALID_DM(dm);
 
                if (tdm != dm) tdm->release(tdm);
@@ -1753,7 +1753,7 @@ static void dm_ensure_display_normals(DerivedMesh *dm)
  * - apply deform modifiers and input vertexco
  */
 static void mesh_calc_modifiers(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float (*inputVertexCos)[3],
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob, float (*inputVertexCos)[3],
         const bool useRenderParams, int useDeform,
         const bool need_mapping, CustomDataMask dataMask,
         const int index, const bool useCache, const bool build_shapekey_layers,
@@ -1864,7 +1864,7 @@ static void mesh_calc_modifiers(
                                if (!deformedVerts)
                                        deformedVerts = BKE_mesh_vertexCos_get(me, &numVerts);
 
-                               modwrap_deformVerts(md, eval_ctx, ob, NULL, deformedVerts, numVerts, deform_app_flags);
+                               modwrap_deformVerts(md, depsgraph, ob, NULL, deformedVerts, numVerts, deform_app_flags);
                        }
                        else {
                                break;
@@ -2005,7 +2005,7 @@ static void mesh_calc_modifiers(
                                }
                        }
 
-                       modwrap_deformVerts(md, eval_ctx, ob, dm, deformedVerts, numVerts, deform_app_flags);
+                       modwrap_deformVerts(md, depsgraph, ob, dm, deformedVerts, numVerts, deform_app_flags);
                }
                else {
                        DerivedMesh *ndm;
@@ -2080,7 +2080,7 @@ static void mesh_calc_modifiers(
                                }
                        }
 
-                       ndm = modwrap_applyModifier(md, eval_ctx, ob, dm, app_flags);
+                       ndm = modwrap_applyModifier(md, depsgraph, ob, dm, app_flags);
                        ASSERT_IS_VALID_DM(ndm);
 
                        if (ndm) {
@@ -2107,7 +2107,7 @@ static void mesh_calc_modifiers(
                                                 (mti->requiredDataMask ?
                                                  mti->requiredDataMask(ob, md) : 0));
 
-                               ndm = modwrap_applyModifier(md, eval_ctx, ob, orcodm, (app_flags & ~MOD_APPLY_USECACHE) | MOD_APPLY_ORCO);
+                               ndm = modwrap_applyModifier(md, depsgraph, ob, orcodm, (app_flags & ~MOD_APPLY_USECACHE) | MOD_APPLY_ORCO);
                                ASSERT_IS_VALID_DM(ndm);
 
                                if (ndm) {
@@ -2125,7 +2125,7 @@ static void mesh_calc_modifiers(
                                nextmask &= ~CD_MASK_CLOTH_ORCO;
                                DM_set_only_copy(clothorcodm, nextmask | CD_MASK_ORIGINDEX);
 
-                               ndm = modwrap_applyModifier(md, eval_ctx, ob, clothorcodm, (app_flags & ~MOD_APPLY_USECACHE) | MOD_APPLY_ORCO);
+                               ndm = modwrap_applyModifier(md, depsgraph, ob, clothorcodm, (app_flags & ~MOD_APPLY_USECACHE) | MOD_APPLY_ORCO);
                                ASSERT_IS_VALID_DM(ndm);
 
                                if (ndm) {
@@ -2308,7 +2308,7 @@ bool editbmesh_modifier_is_enabled(Scene *scene, ModifierData *md, DerivedMesh *
 }
 
 static void editbmesh_calc_modifiers(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob,
         BMEditMesh *em, CustomDataMask dataMask,
         /* return args */
         DerivedMesh **r_cage, DerivedMesh **r_final)
@@ -2396,9 +2396,9 @@ static void editbmesh_calc_modifiers(
                        }
 
                        if (mti->deformVertsEM)
-                               modwrap_deformVertsEM(md, eval_ctx, ob, em, dm, deformedVerts, numVerts);
+                               modwrap_deformVertsEM(md, depsgraph, ob, em, dm, deformedVerts, numVerts);
                        else
-                               modwrap_deformVerts(md, eval_ctx, ob, dm, deformedVerts, numVerts, 0);
+                               modwrap_deformVerts(md, depsgraph, ob, dm, deformedVerts, numVerts, 0);
                }
                else {
                        DerivedMesh *ndm;
@@ -2443,10 +2443,10 @@ static void editbmesh_calc_modifiers(
                                DM_set_only_copy(orcodm, mask | CD_MASK_ORIGINDEX);
 
                                if (mti->applyModifierEM) {
-                                       ndm = modwrap_applyModifierEM(md, eval_ctx, ob, em, orcodm, MOD_APPLY_ORCO);
+                                       ndm = modwrap_applyModifierEM(md, depsgraph, ob, em, orcodm, MOD_APPLY_ORCO);
                                }
                                else {
-                                       ndm = modwrap_applyModifier(md, eval_ctx, ob, orcodm, MOD_APPLY_ORCO);
+                                       ndm = modwrap_applyModifier(md, depsgraph, ob, orcodm, MOD_APPLY_ORCO);
                                }
                                ASSERT_IS_VALID_DM(ndm);
 
@@ -2471,9 +2471,9 @@ static void editbmesh_calc_modifiers(
                        }
 
                        if (mti->applyModifierEM)
-                               ndm = modwrap_applyModifierEM(md, eval_ctx, ob, em, dm, MOD_APPLY_USECACHE | MOD_APPLY_ALLOW_GPU);
+                               ndm = modwrap_applyModifierEM(md, depsgraph, ob, em, dm, MOD_APPLY_USECACHE | MOD_APPLY_ALLOW_GPU);
                        else
-                               ndm = modwrap_applyModifier(md, eval_ctx, ob, dm, MOD_APPLY_USECACHE | MOD_APPLY_ALLOW_GPU);
+                               ndm = modwrap_applyModifier(md, depsgraph, ob, dm, MOD_APPLY_USECACHE | MOD_APPLY_ALLOW_GPU);
                        ASSERT_IS_VALID_DM(ndm);
 
                        if (ndm) {
@@ -2609,7 +2609,7 @@ static void editbmesh_calc_modifiers(
  * we'll be using GPU backend of OpenSubdiv. This is so
  * playback performance is kept as high as possible.
  */
-static bool calc_modifiers_skip_orco(const EvaluationContext *eval_ctx,
+static bool calc_modifiers_skip_orco(Depsgraph *depsgraph,
                                      Scene *scene,
                                      Object *ob,
                                      bool use_render_params)
@@ -2626,7 +2626,7 @@ static bool calc_modifiers_skip_orco(const EvaluationContext *eval_ctx,
                else if ((ob->mode & (OB_MODE_VERTEX_PAINT | OB_MODE_WEIGHT_PAINT | OB_MODE_TEXTURE_PAINT)) != 0) {
                        return false;
                }
-               else if ((DEG_get_eval_flags_for_id(eval_ctx->depsgraph, &ob->id) & DAG_EVAL_NEED_CPU) != 0) {
+               else if ((DEG_get_eval_flags_for_id(depsgraph, &ob->id) & DAG_EVAL_NEED_CPU) != 0) {
                        return false;
                }
                SubsurfModifierData *smd = (SubsurfModifierData *)last_md;
@@ -2638,7 +2638,7 @@ static bool calc_modifiers_skip_orco(const EvaluationContext *eval_ctx,
 #endif
 
 static void mesh_build_data(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask,
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask,
         const bool build_shapekey_layers, const bool need_mapping)
 {
        BLI_assert(ob->type == OB_MESH);
@@ -2647,13 +2647,13 @@ static void mesh_build_data(
        BKE_object_sculpt_modifiers_changed(ob);
 
 #ifdef WITH_OPENSUBDIV
-       if (calc_modifiers_skip_orco(eval_ctx, scene, ob, false)) {
+       if (calc_modifiers_skip_orco(depsgraph, scene, ob, false)) {
                dataMask &= ~(CD_MASK_ORCO | CD_MASK_PREVIEW_MCOL);
        }
 #endif
 
        mesh_calc_modifiers(
-               eval_ctx, scene, ob, NULL, false, 1, need_mapping, dataMask, -1, true, build_shapekey_layers,
+               depsgraph, scene, ob, NULL, false, 1, need_mapping, dataMask, -1, true, build_shapekey_layers,
                true,
                &ob->derivedDeform, &ob->derivedFinal);
 
@@ -2668,14 +2668,14 @@ static void mesh_build_data(
                /* create PBVH immediately (would be created on the fly too,
                 * but this avoids waiting on first stroke) */
 
-               BKE_sculpt_update_mesh_elements(eval_ctx, scene, scene->toolsettings->sculpt, ob, false, false);
+               BKE_sculpt_update_mesh_elements(depsgraph, scene, scene->toolsettings->sculpt, ob, false, false);
        }
 
        BLI_assert(!(ob->derivedFinal->dirty & DM_DIRTY_NORMALS));
 }
 
 static void editbmesh_build_data(
-        const struct EvaluationContext *eval_ctx, Scene *scene,
+        struct Depsgraph *depsgraph, Scene *scene,
         Object *obedit, BMEditMesh *em, CustomDataMask dataMask)
 {
        BKE_object_free_derived_caches(obedit);
@@ -2684,13 +2684,13 @@ static void editbmesh_build_data(
        BKE_editmesh_free_derivedmesh(em);
 
 #ifdef WITH_OPENSUBDIV
-       if (calc_modifiers_skip_orco(eval_ctx, scene, obedit, false)) {
+       if (calc_modifiers_skip_orco(depsgraph, scene, obedit, false)) {
                dataMask &= ~(CD_MASK_ORCO | CD_MASK_PREVIEW_MCOL);
        }
 #endif
 
        editbmesh_calc_modifiers(
-               eval_ctx, scene, obedit, em, dataMask,
+               depsgraph, scene, obedit, em, dataMask,
                &em->derivedCage, &em->derivedFinal);
 
        DM_set_object_boundbox(obedit, em->derivedFinal);
@@ -2702,10 +2702,9 @@ static void editbmesh_build_data(
        BLI_assert(!(em->derivedFinal->dirty & DM_DIRTY_NORMALS));
 }
 
-static CustomDataMask object_get_datamask(const Scene *scene, Object *ob, bool *r_need_mapping)
+static CustomDataMask object_get_datamask(const Depsgraph *depsgraph, Object *ob, bool *r_need_mapping)
 {
-       /* TODO(sergey): Avoid this linear list lookup. */
-       ViewLayer *view_layer = BKE_view_layer_context_active_PLACEHOLDER(scene);
+       ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph);
        Object *actob = view_layer->basact ? view_layer->basact->object : NULL;
        CustomDataMask mask = ob->customdata_mask;
 
@@ -2743,85 +2742,85 @@ static CustomDataMask object_get_datamask(const Scene *scene, Object *ob, bool *
 }
 
 void makeDerivedMesh(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, BMEditMesh *em,
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob, BMEditMesh *em,
         CustomDataMask dataMask, const bool build_shapekey_layers)
 {
        bool need_mapping;
-       dataMask |= object_get_datamask(scene, ob, &need_mapping);
+       dataMask |= object_get_datamask(depsgraph, ob, &need_mapping);
 
        if (em) {
-               editbmesh_build_data(eval_ctx, scene, ob, em, dataMask);
+               editbmesh_build_data(depsgraph, scene, ob, em, dataMask);
        }
        else {
-               mesh_build_data(eval_ctx, scene, ob, dataMask, build_shapekey_layers, need_mapping);
+               mesh_build_data(depsgraph, scene, ob, dataMask, build_shapekey_layers, need_mapping);
        }
 }
 
 /***/
 
 DerivedMesh *mesh_get_derived_final(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask)
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
 {
        /* if there's no derived mesh or the last data mask used doesn't include
         * the data we need, rebuild the derived mesh
         */
        bool need_mapping;
-       dataMask |= object_get_datamask(scene, ob, &need_mapping);
+       dataMask |= object_get_datamask(depsgraph, ob, &need_mapping);
 
        if (!ob->derivedFinal ||
            ((dataMask & ob->lastDataMask) != dataMask) ||
            (need_mapping != ob->lastNeedMapping))
        {
-               mesh_build_data(eval_ctx, scene, ob, dataMask, false, need_mapping);
+               mesh_build_data(depsgraph, scene, ob, dataMask, false, need_mapping);
        }
 
        if (ob->derivedFinal) { BLI_assert(!(ob->derivedFinal->dirty & DM_DIRTY_NORMALS)); }
        return ob->derivedFinal;
 }
 
-DerivedMesh *mesh_get_derived_deform(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask)
+DerivedMesh *mesh_get_derived_deform(struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
 {
        /* if there's no derived mesh or the last data mask used doesn't include
         * the data we need, rebuild the derived mesh
         */
        bool need_mapping;
 
-       dataMask |= object_get_datamask(scene, ob, &need_mapping);
+       dataMask |= object_get_datamask(depsgraph, ob, &need_mapping);
 
        if (!ob->derivedDeform ||
            ((dataMask & ob->lastDataMask) != dataMask) ||
            (need_mapping != ob->lastNeedMapping))
        {
-               mesh_build_data(eval_ctx, scene, ob, dataMask, false, need_mapping);
+               mesh_build_data(depsgraph, scene, ob, dataMask, false, need_mapping);
        }
 
        return ob->derivedDeform;
 }
 
-DerivedMesh *mesh_create_derived_render(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask)
+DerivedMesh *mesh_create_derived_render(struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
 {
        DerivedMesh *final;
        
        mesh_calc_modifiers(
-               eval_ctx, scene, ob, NULL, true, 1, false, dataMask, -1, false, false, false,
+               depsgraph, scene, ob, NULL, true, 1, false, dataMask, -1, false, false, false,
                NULL, &final);
 
        return final;
 }
 
-DerivedMesh *mesh_create_derived_index_render(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, CustomDataMask dataMask, int index)
+DerivedMesh *mesh_create_derived_index_render(struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask, int index)
 {
        DerivedMesh *final;
 
        mesh_calc_modifiers(
-               eval_ctx, scene, ob, NULL, true, 1, false, dataMask, index, false, false, false,
+               depsgraph, scene, ob, NULL, true, 1, false, dataMask, index, false, false, false,
                NULL, &final);
 
        return final;
 }
 
 DerivedMesh *mesh_create_derived_view(
-        const struct EvaluationContext *eval_ctx, Scene *scene,
+        struct Depsgraph *depsgraph, Scene *scene,
         Object *ob, CustomDataMask dataMask)
 {
        DerivedMesh *final;
@@ -2833,7 +2832,7 @@ DerivedMesh *mesh_create_derived_view(
        ob->transflag |= OB_NO_PSYS_UPDATE;
 
        mesh_calc_modifiers(
-               eval_ctx, scene, ob, NULL, false, 1, false, dataMask, -1, false, false, false,
+               depsgraph, scene, ob, NULL, false, 1, false, dataMask, -1, false, false, false,
                NULL, &final);
 
        ob->transflag &= ~OB_NO_PSYS_UPDATE;
@@ -2842,53 +2841,53 @@ DerivedMesh *mesh_create_derived_view(
 }
 
 DerivedMesh *mesh_create_derived_no_deform(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob,
         float (*vertCos)[3], CustomDataMask dataMask)
 {
        DerivedMesh *final;
        
        mesh_calc_modifiers(
-               eval_ctx, scene, ob, vertCos, false, 0, false, dataMask, -1, false, false, false,
+               depsgraph, scene, ob, vertCos, false, 0, false, dataMask, -1, false, false, false,
                NULL, &final);
 
        return final;
 }
 
 DerivedMesh *mesh_create_derived_no_virtual(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob,
         float (*vertCos)[3], CustomDataMask dataMask)
 {
        DerivedMesh *final;
        
        mesh_calc_modifiers(
-               eval_ctx, scene, ob, vertCos, false, -1, false, dataMask, -1, false, false, false,
+               depsgraph, scene, ob, vertCos, false, -1, false, dataMask, -1, false, false, false,
                NULL, &final);
 
        return final;
 }
 
 DerivedMesh *mesh_create_derived_physics(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob,
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob,
         float (*vertCos)[3], CustomDataMask dataMask)
 {
        DerivedMesh *final;
        
        mesh_calc_modifiers(
-               eval_ctx, scene, ob, vertCos, false, -1, true, dataMask, -1, false, false, false,
+               depsgraph, scene, ob, vertCos, false, -1, true, dataMask, -1, false, false, false,
                NULL, &final);
 
        return final;
 }
 
 DerivedMesh *mesh_create_derived_no_deform_render(
-        const struct EvaluationContext *eval_ctx, Scene *scene,
+        struct Depsgraph *depsgraph, Scene *scene,
         Object *ob, float (*vertCos)[3],
         CustomDataMask dataMask)
 {
        DerivedMesh *final;
 
        mesh_calc_modifiers(
-               eval_ctx, scene, ob, vertCos, true, 0, false, dataMask, -1, false, false, false,
+               depsgraph, scene, ob, vertCos, true, 0, false, dataMask, -1, false, false, false,
                NULL, &final);
 
        return final;
@@ -2897,7 +2896,7 @@ DerivedMesh *mesh_create_derived_no_deform_render(
 /***/
 
 DerivedMesh *editbmesh_get_derived_cage_and_final(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *obedit, BMEditMesh *em,
+        struct Depsgraph *depsgraph, Scene *scene, Object *obedit, BMEditMesh *em,
         CustomDataMask dataMask,
         /* return args */
         DerivedMesh **r_final)
@@ -2905,12 +2904,12 @@ DerivedMesh *editbmesh_get_derived_cage_and_final(
        /* if there's no derived mesh or the last data mask used doesn't include
         * the data we need, rebuild the derived mesh
         */
-       dataMask |= object_get_datamask(scene, obedit, NULL);
+       dataMask |= object_get_datamask(depsgraph, obedit, NULL);
 
        if (!em->derivedCage ||
            (em->lastDataMask & dataMask) != dataMask)
        {
-               editbmesh_build_data(eval_ctx, scene, obedit, em, dataMask);
+               editbmesh_build_data(depsgraph, scene, obedit, em, dataMask);
        }
 
        *r_final = em->derivedFinal;
@@ -2919,18 +2918,18 @@ DerivedMesh *editbmesh_get_derived_cage_and_final(
 }
 
 DerivedMesh *editbmesh_get_derived_cage(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *obedit, BMEditMesh *em,
+        struct Depsgraph *depsgraph, Scene *scene, Object *obedit, BMEditMesh *em,
         CustomDataMask dataMask)
 {
        /* if there's no derived mesh or the last data mask used doesn't include
         * the data we need, rebuild the derived mesh
         */
-       dataMask |= object_get_datamask(scene, obedit, NULL);
+       dataMask |= object_get_datamask(depsgraph, obedit, NULL);
 
        if (!em->derivedCage ||
            (em->lastDataMask & dataMask) != dataMask)
        {
-               editbmesh_build_data(eval_ctx, scene, obedit, em, dataMask);
+               editbmesh_build_data(depsgraph, scene, obedit, em, dataMask);
        }
 
        return em->derivedCage;
index 0b964145c7ff8d98eb49b065741c045e5bf5b9d3..1541d39938dfc4278b60c7e127ba78d3ee8cfded 100644 (file)
@@ -340,7 +340,7 @@ static void motionpaths_calc_bake_targets(Scene *scene, ListBase *targets)
  *     - recalc: whether we need to
  */
 /* TODO: include reports pointer? */
- void animviz_calc_motionpaths(EvaluationContext *eval_ctx, Main *bmain, Scene *scene, ListBase *targets)
+ void animviz_calc_motionpaths(Depsgraph *depsgraph, Main *bmain, Scene *scene, ListBase *targets)
 {
        MPathTarget *mpt;
        int sfra, efra;
@@ -367,7 +367,7 @@ static void motionpaths_calc_bake_targets(Scene *scene, ListBase *targets)
        /* calculate path over requested range */
        for (CFRA = sfra; CFRA <= efra; CFRA++) {
                /* update relevant data for new frame */
-               motionpaths_calc_update_scene(bmain, eval_ctx->depsgraph);
+               motionpaths_calc_update_scene(bmain, depsgraph);
                
                /* perform baking for targets */
                motionpaths_calc_bake_targets(scene, targets);
@@ -375,7 +375,7 @@ static void motionpaths_calc_bake_targets(Scene *scene, ListBase *targets)
        
        /* reset original environment */
        CFRA = cfra;
-       motionpaths_calc_update_scene(bmain, eval_ctx->depsgraph);
+       motionpaths_calc_update_scene(bmain, depsgraph);
        
        /* clear recalc flags from targets */
        for (mpt = targets->first; mpt; mpt = mpt->next) {
index ecdb180d2ede39e2b8d5bc1aa6bb57eca6d39cba..aa8fd6f38702457779f31bba860832c9a1c96947 100644 (file)
@@ -70,6 +70,7 @@
 #include "BKE_texture.h"
 
 #include "DEG_depsgraph.h"
+#include "DEG_depsgraph_query.h"
 
 #include "RNA_access.h"
 
@@ -77,8 +78,6 @@
 
 #include "atomic_ops.h"
 
-#include "DEG_depsgraph.h"
-
 /* ***************************************** */
 /* AnimData API */
 
@@ -2881,14 +2880,15 @@ void BKE_animsys_evaluate_all_animation(Main *main, Scene *scene, float ctime)
 /* ************** */
 /* Evaluation API */
 
-void BKE_animsys_eval_animdata(const EvaluationContext *eval_ctx, ID *id)
+void BKE_animsys_eval_animdata(Depsgraph *depsgraph, ID *id)
 {
+       float ctime = DEG_get_ctime(depsgraph);
        AnimData *adt = BKE_animdata_from_id(id);
        Scene *scene = NULL; /* XXX: this is only needed for flushing RNA updates,
                              * which should get handled as part of the dependency graph instead...
                              */
-       DEG_debug_print_eval_time(__func__, id->name, id, eval_ctx->ctime);
-       BKE_animsys_evaluate_animdata(scene, id, adt, eval_ctx->ctime, ADT_RECALC_ANIM);
+       DEG_debug_print_eval_time(__func__, id->name, id, ctime);
+       BKE_animsys_evaluate_animdata(scene, id, adt, ctime, ADT_RECALC_ANIM);
 }
 
 /* TODO(sergey): This is slow lookup of driver from CoW datablock.
@@ -2909,7 +2909,7 @@ static FCurve *find_driver_from_evaluated_id(ID *id, FCurve *fcu)
        return BLI_findlink(&adt_cow->drivers, fcu_index);
 }
 
-void BKE_animsys_eval_driver(const EvaluationContext *eval_ctx,
+void BKE_animsys_eval_driver(Depsgraph *depsgraph,
                              ID *id,
                              FCurve *fcu)
 {
@@ -2937,7 +2937,8 @@ void BKE_animsys_eval_driver(const EvaluationContext *eval_ctx,
 
                        PathResolvedRNA anim_rna;
                        if (animsys_store_rna_setting(&id_ptr, NULL, fcu->rna_path, fcu->array_index, &anim_rna)) {
-                               const float curval = calculate_fcurve(&anim_rna, fcu, eval_ctx->ctime);
+                               const float ctime = DEG_get_ctime(depsgraph);
+                               const float curval = calculate_fcurve(&anim_rna, fcu, ctime);
                                ok = animsys_write_rna_setting(&anim_rna, curval);
                        }
 
index 0a8c97ff175b4fc1f2798569213623e3bb71a36d..6daaa10f22797353b86d1b11598faee5acb7a44b 100644 (file)
@@ -1462,13 +1462,13 @@ void BKE_armature_loc_pose_to_bone(bPoseChannel *pchan, const float inloc[3], fl
        copy_v3_v3(outloc, nLocMat[3]);
 }
 
-void BKE_armature_mat_pose_to_bone_ex(const struct EvaluationContext *eval_ctx, Object *ob, bPoseChannel *pchan, float inmat[4][4], float outmat[4][4])
+void BKE_armature_mat_pose_to_bone_ex(struct Depsgraph *depsgraph, Object *ob, bPoseChannel *pchan, float inmat[4][4], float outmat[4][4])
 {
        bPoseChannel work_pchan = *pchan;
 
        /* recalculate pose matrix with only parent transformations,
         * bone loc/sca/rot is ignored, scene and frame are not used. */
-       BKE_pose_where_is_bone(eval_ctx, NULL, ob, &work_pchan, 0.0f, false);
+       BKE_pose_where_is_bone(depsgraph, NULL, ob, &work_pchan, 0.0f, false);
 
        /* find the matrix, need to remove the bone transforms first so this is
         * calculated as a matrix to set rather then a difference ontop of whats
@@ -2196,7 +2196,7 @@ void BKE_pose_where_is_bone_tail(bPoseChannel *pchan)
  * 'do_extra': when zero skips loc/size/rot, constraints and strip modifiers.
  */
 void BKE_pose_where_is_bone(
-        const struct EvaluationContext *eval_ctx, Scene *scene,
+        struct Depsgraph *depsgraph, Scene *scene,
         Object *ob, bPoseChannel *pchan, float ctime, bool do_extra)
 {
        /* This gives a chan_mat with actions (ipos) results. */
@@ -2236,7 +2236,7 @@ void BKE_pose_where_is_bone(
                        cob = BKE_constraints_make_evalob(scene, ob, pchan, CONSTRAINT_OBTYPE_BONE);
 
                        /* Solve PoseChannel's Constraints */
-                       BKE_constraints_solve(eval_ctx, &pchan->constraints, cob, ctime); /* ctime doesnt alter objects */
+                       BKE_constraints_solve(depsgraph, &pchan->constraints, cob, ctime); /* ctime doesnt alter objects */
 
                        /* cleanup after Constraint Solving
                         * - applies matrix back to pchan, and frees temporary struct used
@@ -2258,7 +2258,7 @@ void BKE_pose_where_is_bone(
 
 /* This only reads anim data from channels, and writes to channels */
 /* This is the only function adding poses */
-void BKE_pose_where_is(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob)
+void BKE_pose_where_is(struct Depsgraph *depsgraph, Scene *scene, Object *ob)
 {
        bArmature *arm;
        Bone *bone;
@@ -2297,7 +2297,7 @@ void BKE_pose_where_is(const struct EvaluationContext *eval_ctx, Scene *scene, O
                }
 
                /* 2a. construct the IK tree (standard IK) */
-               BIK_initialize_tree(eval_ctx, scene, ob, ctime);
+               BIK_initialize_tree(depsgraph, scene, ob, ctime);
 
                /* 2b. construct the Spline IK trees
                 *  - this is not integrated as an IK plugin, since it should be able
@@ -2309,15 +2309,15 @@ void BKE_pose_where_is(const struct EvaluationContext *eval_ctx, Scene *scene, O
                for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) {
                        /* 4a. if we find an IK root, we handle it separated */
                        if (pchan->flag & POSE_IKTREE) {
-                               BIK_execute_tree(eval_ctx, scene, ob, pchan, ctime);
+                               BIK_execute_tree(depsgraph, scene, ob, pchan, ctime);
                        }
                        /* 4b. if we find a Spline IK root, we handle it separated too */
                        else if (pchan->flag & POSE_IKSPLINE) {
-                               BKE_splineik_execute_tree(eval_ctx, scene, ob, pchan, ctime);
+                               BKE_splineik_execute_tree(depsgraph, scene, ob, pchan, ctime);
                        }
                        /* 5. otherwise just call the normal solver */
                        else if (!(pchan->flag & POSE_DONE)) {
-                               BKE_pose_where_is_bone(eval_ctx, scene, ob, pchan, ctime, 1);
+                               BKE_pose_where_is_bone(depsgraph, scene, ob, pchan, ctime, 1);
                        }
                }
                /* 6. release the IK tree */
index 29baaff32ba8e1c4b7d9d9d80905842e7d85c222..e626ed420623acb336259822a71581d31076b111 100644 (file)
@@ -116,7 +116,7 @@ static void splineik_init_tree_from_pchan(Scene *scene, Object *UNUSED(ob), bPos
 #if 0
                /* only happens on reload file, but violates depsgraph still... fix! */
                if (ELEM(NULL,  ikData->tar->curve_cache, ikData->tar->curve_cache->path, ikData->tar->curve_cache->path->data)) {
-                       BKE_displist_make_curveTypes(eval_ctx, scene, ikData->tar, 0);
+                       BKE_displist_make_curveTypes(depsgraph, scene, ikData->tar, 0);
                        
                        /* path building may fail in EditMode after removing verts [#33268]*/
                        if (ELEM(NULL, ikData->tar->curve_cache->path, ikData->tar->curve_cache->path->data)) {
@@ -266,7 +266,7 @@ static void splineik_init_tree(Scene *scene, Object *ob, float UNUSED(ctime))
 
 /* Evaluate spline IK for a given bone */
 static void splineik_evaluate_bone(
-        const struct EvaluationContext *eval_ctx, tSplineIK_Tree *tree, Scene *scene, Object *ob, bPoseChannel *pchan,
+        struct Depsgraph *depsgraph, tSplineIK_Tree *tree, Scene *scene, Object *ob, bPoseChannel *pchan,
         int index, float ctime)
 {
        bSplineIKConstraint *ikData = tree->ikData;
@@ -274,7 +274,7 @@ static void splineik_evaluate_bone(
        float splineVec[3], scaleFac, radius = 1.0f;
 
        /* firstly, calculate the bone matrix the standard way, since this is needed for roll control */
-       BKE_pose_where_is_bone(eval_ctx, scene, ob, pchan, ctime, 1);
+       BKE_pose_where_is_bone(depsgraph, scene, ob, pchan, ctime, 1);
 
        copy_v3_v3(poseHead, pchan->pose_head);
        copy_v3_v3(poseTail, pchan->pose_tail);
@@ -516,7 +516,7 @@ static void splineik_evaluate_bone(
 }
 
 /* Evaluate the chain starting from the nominated bone */
-static void splineik_execute_tree(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, bPoseChannel *pchan_root, float ctime)
+static void splineik_execute_tree(struct Depsgraph *depsgraph, Scene *scene, Object *ob, bPoseChannel *pchan_root, float ctime)
 {
        tSplineIK_Tree *tree;
 
@@ -530,7 +530,7 @@ static void splineik_execute_tree(const struct EvaluationContext *eval_ctx, Scen
                 */
                for (i = tree->chainlen - 1; i >= 0; i--) {
                        bPoseChannel *pchan = tree->chain[i];
-                       splineik_evaluate_bone(eval_ctx, tree, scene, ob, pchan, i, ctime);
+                       splineik_evaluate_bone(depsgraph, tree, scene, ob, pchan, i, ctime);
                }
 
                /* free the tree info specific to SplineIK trees now */
@@ -550,10 +550,10 @@ void BKE_pose_splineik_init_tree(Scene *scene, Object *ob, float ctime)
 }
 
 void BKE_splineik_execute_tree(
-        const struct EvaluationContext *eval_ctx, Scene *scene,
+        struct Depsgraph *depsgraph, Scene *scene,
         Object *ob, bPoseChannel *pchan_root, float ctime)
 {
-       splineik_execute_tree(eval_ctx, scene, ob, pchan_root, ctime);
+       splineik_execute_tree(depsgraph, scene, ob, pchan_root, ctime);
 }
 
 /* *************** Depsgraph evaluation callbacks ************ */
@@ -567,7 +567,7 @@ BLI_INLINE bPoseChannel *pose_pchan_get_indexed(Object *ob, int pchan_index)
        return pose->chan_array[pchan_index];
 }
 
-void BKE_pose_eval_init(const struct EvaluationContext *UNUSED(eval_ctx),
+void BKE_pose_eval_init(struct Depsgraph *UNUSED(depsgraph),
                         Scene *UNUSED(scene),
                         Object *ob)
 {
@@ -597,7 +597,7 @@ void BKE_pose_eval_init(const struct EvaluationContext *UNUSED(eval_ctx),
        }
 }
 
-void BKE_pose_eval_init_ik(const struct EvaluationContext *eval_ctx,
+void BKE_pose_eval_init_ik(struct Depsgraph *depsgraph,
                            Scene *scene,
                            Object *ob)
 {
@@ -609,7 +609,7 @@ void BKE_pose_eval_init_ik(const struct EvaluationContext *eval_ctx,
                return;
        }
        /* construct the IK tree (standard IK) */
-       BIK_initialize_tree(eval_ctx, scene, ob, ctime);
+       BIK_initialize_tree(depsgraph, scene, ob, ctime);
        /* construct the Spline IK trees
         *  - this is not integrated as an IK plugin, since it should be able
         *    to function in conjunction with standard IK
@@ -617,7 +617,7 @@ void BKE_pose_eval_init_ik(const struct EvaluationContext *eval_ctx,
        BKE_pose_splineik_init_tree(scene, ob, ctime);
 }
 
-void BKE_pose_eval_bone(const struct EvaluationContext *eval_ctx,
+void BKE_pose_eval_bone(struct Depsgraph *depsgraph,
                         Scene *scene,
                         Object *ob,
                         int pchan_index)
@@ -647,14 +647,14 @@ void BKE_pose_eval_bone(const struct EvaluationContext *eval_ctx,
                                if ((pchan->flag & POSE_DONE) == 0) {
                                        /* TODO(sergey): Use time source node for time. */
                                        float ctime = BKE_scene_frame_get(scene); /* not accurate... */
-                                       BKE_pose_where_is_bone(eval_ctx, scene, ob, pchan, ctime, 1);
+                                       BKE_pose_where_is_bone(depsgraph, scene, ob, pchan, ctime, 1);
                                }
                        }
                }
        }
 }
 
-void BKE_pose_constraints_evaluate(const struct EvaluationContext *eval_ctx,
+void BKE_pose_constraints_evaluate(struct Depsgraph *depsgraph,
                                    Scene *scene,
                                    Object *ob,
                                    int pchan_index)
@@ -672,12 +672,12 @@ void BKE_pose_constraints_evaluate(const struct EvaluationContext *eval_ctx,
        else {
                if ((pchan->flag & POSE_DONE) == 0) {
                        float ctime = BKE_scene_frame_get(scene); /* not accurate... */
-                       BKE_pose_where_is_bone(eval_ctx, scene, ob, pchan, ctime, 1);
+                       BKE_pose_where_is_bone(depsgraph, scene, ob, pchan, ctime, 1);
                }
        }
 }
 
-void BKE_pose_bone_done(const struct EvaluationContext *UNUSED(eval_ctx),
+void BKE_pose_bone_done(struct Depsgraph *UNUSED(depsgraph),
                         struct Object *ob,
                         int pchan_index)
 {
@@ -690,7 +690,7 @@ void BKE_pose_bone_done(const struct EvaluationContext *UNUSED(eval_ctx),
        }
 }
 
-void BKE_pose_iktree_evaluate(const struct EvaluationContext *eval_ctx,
+void BKE_pose_iktree_evaluate(struct Depsgraph *depsgraph,
                               Scene *scene,
                               Object *ob,
                               int rootchan_index)
@@ -704,10 +704,10 @@ void BKE_pose_iktree_evaluate(const struct EvaluationContext *eval_ctx,
        if (arm->flag & ARM_RESTPOS) {
                return;
        }
-       BIK_execute_tree(eval_ctx, scene, ob, rootchan, ctime);
+       BIK_execute_tree(depsgraph, scene, ob, rootchan, ctime);
 }
 
-void BKE_pose_splineik_evaluate(const struct EvaluationContext *eval_ctx,
+void BKE_pose_splineik_evaluate(struct Depsgraph *depsgraph,
                                 Scene *scene,
                                 Object *ob,
                                 int rootchan_index)
@@ -722,10 +722,10 @@ void BKE_pose_splineik_evaluate(const struct EvaluationContext *eval_ctx,
        if (arm->flag & ARM_RESTPOS) {
                return;
        }
-       BKE_splineik_execute_tree(eval_ctx, scene, ob, rootchan, ctime);
+       BKE_splineik_execute_tree(depsgraph, scene, ob, rootchan, ctime);
 }
 
-void BKE_pose_eval_flush(const struct EvaluationContext *UNUSED(eval_ctx),
+void BKE_pose_eval_flush(struct Depsgraph *UNUSED(depsgraph),
                          Scene *scene,
                          Object *ob)
 {
@@ -744,7 +744,7 @@ void BKE_pose_eval_flush(const struct EvaluationContext *UNUSED(eval_ctx),
        pose->chan_array = NULL;
 }
 
-void BKE_pose_eval_proxy_copy(const struct EvaluationContext *UNUSED(eval_ctx), Object *ob)
+void BKE_pose_eval_proxy_copy(struct Depsgraph *UNUSED(depsgraph), Object *ob)
 {
        BLI_assert(ID_IS_LINKED(ob) && ob->proxy_from != NULL);
        DEG_debug_print_eval(__func__, ob->id.name, ob);
index 4b92715ee7b08be8dc886853b14d6c0e69d57195..eb5cdd02fe5b80e8ba133146c9d06967c84b10d7 100644 (file)
@@ -132,7 +132,7 @@ static int rule_goal_avoid(BoidRule *rule, BoidBrainData *bbd, BoidValues *val,
        if (eff == NULL && gabr->ob) {
                memset(&temp_eff, 0, sizeof(EffectorCache));
                temp_eff.ob = gabr->ob;
-               temp_eff.eval_ctx = bbd->sim->eval_ctx;
+               temp_eff.depsgraph = bbd->sim->depsgraph;
                temp_eff.scene = bbd->sim->scene;
                eff = &temp_eff;
                get_effector_data(eff, &efd, &epoint, 0);
index 8c4bced1563c7a6454f54e9fe87cee8a2fba3d81..7676baa9dba4ed99a27385aa6eac94becb9e2dd9 100644 (file)
@@ -259,7 +259,7 @@ void BKE_camera_params_from_object(CameraParams *params, const Object *ob)
        }
 }
 
-void BKE_camera_params_from_view3d(CameraParams *params, const Depsgraph *depsgraph, const View3D *v3d, const RegionView3D *rv3d)
+void BKE_camera_params_from_view3d(CameraParams *params, Depsgraph *depsgraph, const View3D *v3d, const RegionView3D *rv3d)
 {
        /* common */
        params->lens = v3d->lens;
@@ -664,7 +664,7 @@ static bool camera_frame_fit_calc_from_data(
 /* don't move the camera, just yield the fit location */
 /* r_scale only valid/useful for ortho cameras */
 bool BKE_camera_view_frame_fit_to_scene(
-        Scene *scene, ViewLayer *view_layer, Object *camera_ob, float r_co[3], float *r_scale)
+        Depsgraph *depsgraph, Scene *scene, ViewLayer *view_layer, Object *camera_ob, float r_co[3], float *r_scale)
 {
        CameraParams params;
        CameraViewFrameData data_cb;
@@ -675,7 +675,7 @@ bool BKE_camera_view_frame_fit_to_scene(
        camera_frame_fit_data_init(scene, camera_ob, &params, &data_cb);
 
        /* run callback on all visible points */
-       BKE_scene_foreach_display_point(scene, view_layer, camera_to_frame_view_cb, &data_cb);
+       BKE_scene_foreach_display_point(depsgraph, scene, view_layer, camera_to_frame_view_cb, &data_cb);
 
        return camera_frame_fit_calc_from_data(&params, &data_cb, r_co, r_scale);
 }
index e928dfaab37817124fbab167f4df0f308acafcdc..976b8965fa2bbe04e03a62997fe7ba0a8249d116 100644 (file)
@@ -347,7 +347,7 @@ static int do_init_cloth(Object *ob, ClothModifierData *clmd, DerivedMesh *resul
        return 1;
 }
 
-static int do_step_cloth(const struct EvaluationContext *eval_ctx, Object *ob, ClothModifierData *clmd, DerivedMesh *result, int framenr)
+static int do_step_cloth(struct Depsgraph *depsgraph, Object *ob, ClothModifierData *clmd, DerivedMesh *result, int framenr)
 {
        ClothVertex *verts = NULL;
        Cloth *cloth;
@@ -372,7 +372,7 @@ static int do_step_cloth(const struct EvaluationContext *eval_ctx, Object *ob, C
                mul_m4_v3(ob->obmat, verts->xconst);
        }
 
-       effectors = pdInitEffectors(eval_ctx, clmd->scene, ob, NULL, clmd->sim_parms->effector_weights, true);
+       effectors = pdInitEffectors(depsgraph, clmd->scene, ob, NULL, clmd->sim_parms->effector_weights, true);
 
        if (clmd->sim_parms->flags & CLOTH_SIMSETTINGS_FLAG_DYNAMIC_BASEMESH )
                cloth_update_verts ( ob, clmd, result );
@@ -402,7 +402,7 @@ static int do_step_cloth(const struct EvaluationContext *eval_ctx, Object *ob, C
 /************************************************
  * clothModifier_do - main simulation function
  ************************************************/
-void clothModifier_do(ClothModifierData *clmd, const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm, float (*vertexCos)[3])
+void clothModifier_do(ClothModifierData *clmd, struct Depsgraph *depsgraph, Scene *scene, Object *ob, DerivedMesh *dm, float (*vertexCos)[3])
 {
        PointCache *cache;
        PTCacheID pid;
@@ -490,7 +490,7 @@ void clothModifier_do(ClothModifierData *clmd, const struct EvaluationContext *e
        /* do simulation */
        BKE_ptcache_validate(cache, framenr);
 
-       if (!do_step_cloth(eval_ctx, ob, clmd, dm, framenr)) {
+       if (!do_step_cloth(depsgraph, ob, clmd, dm, framenr)) {
                BKE_ptcache_invalidate(cache);
        }
        else
index a759d0fa3f2bf81e30935903e62fbd99916ef143..eca789b0f8762ba55d967f89eb0a854602715027 100644 (file)
@@ -684,7 +684,7 @@ static bConstraintTypeInfo CTI_CONSTRNAME = {
 /* This function should be used for the get_target_matrix member of all 
  * constraints that are not picky about what happens to their target matrix.
  */
-static void default_get_tarmat(const struct EvaluationContext *UNUSED(eval_ctx), bConstraint *con, bConstraintOb *UNUSED(cob), bConstraintTarget *ct, float UNUSED(ctime))
+static void default_get_tarmat(struct Depsgraph *UNUSED(depsgraph), bConstraint *con, bConstraintOb *UNUSED(cob), bConstraintTarget *ct, float UNUSED(ctime))
 {
        if (VALID_CONS_TARGET(ct))
                constraint_target_to_mat4(ct->tar, ct->subtarget, ct->matrix, CONSTRAINT_SPACE_WORLD, ct->space, con->flag, con->headtail);
@@ -1153,7 +1153,7 @@ static void kinematic_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
        }
 }
 
-static void kinematic_get_tarmat(const struct EvaluationContext *UNUSED(eval_ctx), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
+static void kinematic_get_tarmat(struct Depsgraph *UNUSED(depsgraph), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
 {
        bKinematicConstraint *data = con->data;
        
@@ -1240,7 +1240,7 @@ static void followpath_flush_tars(bConstraint *con, ListBase *list, bool no_copy
        }
 }
 
-static void followpath_get_tarmat(const struct EvaluationContext *UNUSED(eval_ctx),
+static void followpath_get_tarmat(struct Depsgraph *UNUSED(depsgraph),
                                   bConstraint *con, bConstraintOb *UNUSED(cob),
                                   bConstraintTarget *ct, float UNUSED(ctime))
 {
@@ -2019,7 +2019,7 @@ static void pycon_id_looper(bConstraint *con, ConstraintIDFunc func, void *userd
 }
 
 /* Whether this approach is maintained remains to be seen (aligorith) */
-static void pycon_get_tarmat(const struct EvaluationContext *UNUSED(eval_ctx),
+static void pycon_get_tarmat(struct Depsgraph *UNUSED(depsgraph),
                              bConstraint *con, bConstraintOb *UNUSED(cob),
                              bConstraintTarget *ct, float UNUSED(ctime))
 {
@@ -2135,7 +2135,7 @@ static void actcon_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
        }
 }
 
-static void actcon_get_tarmat(const struct EvaluationContext *UNUSED(eval_ctx), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
+static void actcon_get_tarmat(struct Depsgraph *UNUSED(depsgraph), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
 {
        bActionConstraint *data = con->data;
        
@@ -3124,7 +3124,7 @@ static void clampto_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
        }
 }
 
-static void clampto_get_tarmat(const struct EvaluationContext *UNUSED(eval_ctx),
+static void clampto_get_tarmat(struct Depsgraph *UNUSED(depsgraph),
                                bConstraint *UNUSED(con), bConstraintOb *UNUSED(cob),
                                bConstraintTarget *ct, float UNUSED(ctime))
 {
@@ -3461,7 +3461,7 @@ static void shrinkwrap_flush_tars(bConstraint *con, ListBase *list, bool no_copy
 }
 
 
-static void shrinkwrap_get_tarmat(const struct EvaluationContext *UNUSED(eval_ctx), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
+static void shrinkwrap_get_tarmat(struct Depsgraph *UNUSED(depsgraph), bConstraint *con, bConstraintOb *cob, bConstraintTarget *ct, float UNUSED(ctime))
 {
        bShrinkwrapConstraint *scon = (bShrinkwrapConstraint *) con->data;
        
@@ -3793,7 +3793,7 @@ static void splineik_flush_tars(bConstraint *con, ListBase *list, bool no_copy)
        }
 }
 
-static void splineik_get_tarmat(const struct EvaluationContext *UNUSED(eval_ctx),
+static void splineik_get_tarmat(struct Depsgraph *UNUSED(depsgraph),
                                 bConstraint *UNUSED(con), bConstraintOb *UNUSED(cob),
                                 bConstraintTarget *ct, float UNUSED(ctime))
 {
@@ -4845,7 +4845,7 @@ bool BKE_constraints_proxylocked_owner(Object *ob, bPoseChannel *pchan)
  * None of the actual calculations of the matrices should be done here! Also, this function is
  * not to be used by any new constraints, particularly any that have multiple targets.
  */
-void BKE_constraint_target_matrix_get(const struct EvaluationContext *eval_ctx, Scene *scene, bConstraint *con, int index, short ownertype, void *ownerdata, float mat[4][4], float ctime)
+void BKE_constraint_target_matrix_get(struct Depsgraph *depsgraph, Scene *scene, bConstraint *con, int index, short ownertype, void *ownerdata, float mat[4][4], float ctime)
 {
        const bConstraintTypeInfo *cti = BKE_constraint_typeinfo_get(con);
        ListBase targets = {NULL, NULL};
@@ -4896,7 +4896,7 @@ void BKE_constraint_target_matrix_get(const struct EvaluationContext *eval_ctx,
                
                if (ct) {
                        if (cti->get_target_matrix)
-                               cti->get_target_matrix(eval_ctx, con, cob, ct, ctime);
+                               cti->get_target_matrix(depsgraph, con, cob, ct, ctime);
                        copy_m4_m4(mat, ct->matrix);
                }
                
@@ -4912,7 +4912,7 @@ void BKE_constraint_target_matrix_get(const struct EvaluationContext *eval_ctx,
 }
 
 /* Get the list of targets required for solving a constraint */
-void BKE_constraint_targets_for_solving_get(const struct EvaluationContext *eval_ctx, bConstraint *con, bConstraintOb *cob, ListBase *targets, float ctime)
+void BKE_constraint_targets_for_solving_get(struct Depsgraph *depsgraph, bConstraint *con, bConstraintOb *cob, ListBase *targets, float ctime)
 {
        const bConstraintTypeInfo *cti = BKE_constraint_typeinfo_get(con);
        
@@ -4930,7 +4930,7 @@ void BKE_constraint_targets_for_solving_get(const struct EvaluationContext *eval
                 */
                if (cti->get_target_matrix) {
                        for (ct = targets->first; ct; ct = ct->next)
-                               cti->get_target_matrix(eval_ctx, con, cob, ct, ctime);
+                               cti->get_target_matrix(depsgraph, con, cob, ct, ctime);
                }
                else {
                        for (ct = targets->first; ct; ct = ct->next)
@@ -4947,7 +4947,7 @@ void BKE_constraint_targets_for_solving_get(const struct EvaluationContext *eval
  * BKE_constraints_make_evalob and BKE_constraints_clear_evalob should be called before and 
  * after running this function, to sort out cob
  */
-void BKE_constraints_solve(const struct EvaluationContext *eval_ctx, ListBase *conlist, bConstraintOb *cob, float ctime)
+void BKE_constraints_solve(struct Depsgraph *depsgraph, ListBase *conlist, bConstraintOb *cob, float ctime)
 {
        bConstraint *con;
        float oldmat[4][4];
@@ -4982,7 +4982,7 @@ void BKE_constraints_solve(const struct EvaluationContext *eval_ctx, ListBase *c
                BKE_constraint_mat_convertspace(cob->ob, cob->pchan, cob->matrix, CONSTRAINT_SPACE_WORLD, con->ownspace, false);
                
                /* prepare targets for constraint solving */
-               BKE_constraint_targets_for_solving_get(eval_ctx, con, cob, &targets, ctime);
+               BKE_constraint_targets_for_solving_get(depsgraph, con, cob, &targets, ctime);
                
                /* Solve the constraint and put result in cob->matrix */
                cti->evaluate_constraint(con, cob, &targets);
index d550f1945db658d2b1914ae0c5fc01145a13b1eb..2bb1272594025af5cc6be6acedf6b3fa3c84a364 100644 (file)
@@ -1266,15 +1266,3 @@ Depsgraph *CTX_data_depsgraph(const bContext *C)
        ViewLayer *view_layer = CTX_data_view_layer(C);
        return BKE_scene_get_depsgraph(scene, view_layer, true);
 }
-
-void CTX_data_eval_ctx(const bContext *C, EvaluationContext *eval_ctx)
-{
-       BLI_assert(C != NULL);
-
-       Scene *scene = CTX_data_scene(C);
-       ViewLayer *view_layer = CTX_data_view_layer(C);
-       DEG_evaluation_context_init_from_scene(
-               eval_ctx,
-               scene, view_layer,
-               DAG_EVAL_VIEWPORT);
-}
index d2ffbbcf27b61eb2194b3653d313bb20f5df825d..f5795444b7df6e608ebad037e04866906d5cfbc0 100644 (file)
@@ -100,7 +100,7 @@ static int modifiers_disable_subsurf_temporary(Object *ob)
 
 /* disable subsurf temporal, get mapped cos, and enable it */
 float (*BKE_crazyspace_get_mapped_editverts(
-           const struct EvaluationContext *eval_ctx, Scene *scene, Object *obedit))[3]
+           struct Depsgraph *depsgraph, Scene *scene, Object *obedit))[3]
 {
        Mesh *me = obedit->data;
        DerivedMesh *dm;
@@ -110,13 +110,13 @@ float (*BKE_crazyspace_get_mapped_editverts(
        /* disable subsurf temporal, get mapped cos, and enable it */
        if (modifiers_disable_subsurf_temporary(obedit)) {
                /* need to make new derivemesh */
-               makeDerivedMesh(eval_ctx, scene, obedit, me->edit_btmesh, CD_MASK_BAREMESH, false);
+               makeDerivedMesh(depsgraph, scene, obedit, me->edit_btmesh, CD_MASK_BAREMESH, false);
        }
 
        /* now get the cage */
        vertexcos = MEM_mallocN(sizeof(*vertexcos) * nverts, "vertexcos map");
 
-       dm = editbmesh_get_derived_cage(eval_ctx, scene, obedit, me->edit_btmesh, CD_MASK_BAREMESH);
+       dm = editbmesh_get_derived_cage(depsgraph, scene, obedit, me->edit_btmesh, CD_MASK_BAREMESH);
 
        mesh_get_mapped_verts_coords(dm, vertexcos, nverts);
 
@@ -252,7 +252,7 @@ void BKE_crazyspace_set_quats_mesh(Mesh *me, float (*origcos)[3], float (*mapped
 /** returns an array of deform matrices for crazyspace correction, and the
  * number of modifiers left */
 int BKE_crazyspace_get_first_deform_matrices_editbmesh(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, BMEditMesh *em,
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob, BMEditMesh *em,
         float (**deformmats)[3][3], float (**deformcos)[3])
 {
        ModifierData *md;
@@ -292,7 +292,7 @@ int BKE_crazyspace_get_first_deform_matrices_editbmesh(
                                        unit_m3(defmats[a]);
                        }
 
-                       mti->deformMatricesEM(md, eval_ctx, ob, em, dm, deformedVerts, defmats,
+                       mti->deformMatricesEM(md, depsgraph, ob, em, dm, deformedVerts, defmats,
                                              numVerts);
                }
                else
@@ -313,7 +313,7 @@ int BKE_crazyspace_get_first_deform_matrices_editbmesh(
 }
 
 int BKE_sculpt_get_first_deform_matrices(
-        const struct EvaluationContext *eval_ctx, Scene *scene,
+        struct Depsgraph *depsgraph, Scene *scene,
         Object *ob, float (**deformmats)[3][3], float (**deformcos)[3])
 {
        ModifierData *md;
@@ -350,7 +350,7 @@ int BKE_sculpt_get_first_deform_matrices(
                                        unit_m3(defmats[a]);
                        }
 
-                       if (mti->deformMatrices) mti->deformMatrices(md, eval_ctx, ob, dm, deformedVerts, defmats, numVerts);
+                       if (mti->deformMatrices) mti->deformMatrices(md, depsgraph, ob, dm, deformedVerts, defmats, numVerts);
                        else break;
                }
        }
@@ -373,9 +373,9 @@ int BKE_sculpt_get_first_deform_matrices(
        return numleft;
 }
 
-void BKE_crazyspace_build_sculpt(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, float (**deformmats)[3][3], float (**deformcos)[3])
+void BKE_crazyspace_build_sculpt(struct Depsgraph *depsgraph, Scene *scene, Object *ob, float (**deformmats)[3][3], float (**deformcos)[3])
 {
-       int totleft = BKE_sculpt_get_first_deform_matrices(eval_ctx, scene, ob, deformmats, deformcos);
+       int totleft = BKE_sculpt_get_first_deform_matrices(depsgraph, scene, ob, deformmats, deformcos);
 
        if (totleft) {
                /* there are deformation modifier which doesn't support deformation matrices
@@ -400,7 +400,7 @@ void BKE_crazyspace_build_sculpt(const struct EvaluationContext *eval_ctx, Scene
                                if (mti->deformMatrices && !deformed)
                                        continue;
 
-                               mti->deformVerts(md, eval_ctx, ob, NULL, deformedVerts, me->totvert, 0);
+                               mti->deformVerts(md, depsgraph, ob, NULL, deformedVerts, me->totvert, 0);
                                deformed = 1;
                        }
                }
index 0c4dbdf7763d76ed94059697c92976bcee27b8d7..661ffdbcd274b2b3efcd56d7f83edc62a58462a1 100644 (file)
@@ -1624,7 +1624,7 @@ float *BKE_curve_surf_make_orco(Object *ob)
 /* NOTE: This routine is tied to the order of vertex
  * built by displist and as passed to the renderer.
  */
-float *BKE_curve_make_orco(const EvaluationContext *eval_ctx, Scene *scene, Object *ob, int *r_numVerts)
+float *BKE_curve_make_orco(Depsgraph *depsgraph, Scene *scene, Object *ob, int *r_numVerts)
 {
        Curve *cu = ob->data;
        DispList *dl;
@@ -1632,7 +1632,7 @@ float *BKE_curve_make_orco(const EvaluationContext *eval_ctx, Scene *scene, Obje
        float *fp, *coord_array;
        ListBase disp = {NULL, NULL};
 
-       BKE_displist_make_curveTypes_forOrco(eval_ctx, scene, ob, &disp);
+       BKE_displist_make_curveTypes_forOrco(depsgraph, scene, ob, &disp);
 
        numVerts = 0;
        for (dl = disp.first; dl; dl = dl->next) {
@@ -1724,7 +1724,7 @@ float *BKE_curve_make_orco(const EvaluationContext *eval_ctx, Scene *scene, Obje
 /* ***************** BEVEL ****************** */
 
 void BKE_curve_bevel_make(
-        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *disp,
+        Depsgraph *depsgraph, Scene *scene, Object *ob, ListBase *disp,
         const bool for_render, const bool use_render_resolution)
 {
        DispList *dl, *dlnew;
@@ -1749,7 +1749,7 @@ void BKE_curve_bevel_make(
                        facy = cu->bevobj->size[1];
 
                        if (for_render) {
-                               BKE_displist_make_curveTypes_forRender(eval_ctx, scene, cu->bevobj, &bevdisp, NULL, false, use_render_resolution);
+                               BKE_displist_make_curveTypes_forRender(depsgraph, scene, cu->bevobj, &bevdisp, NULL, false, use_render_resolution);
                                dl = bevdisp.first;
                        }
                        else if (cu->bevobj->curve_cache) {
@@ -5255,7 +5255,7 @@ void BKE_curve_rect_from_textbox(const struct Curve *cu, const struct TextBox *t
 
 /* **** Depsgraph evaluation **** */
 
-void BKE_curve_eval_geometry(const EvaluationContext *UNUSED(eval_ctx),
+void BKE_curve_eval_geometry(Depsgraph *UNUSED(depsgraph),
                              Curve *curve)
 {
        DEG_debug_print_eval(__func__, curve->id.name, curve);
index e20c6a353035c44999de8a26e5d6d2aadefb5b61..0451031c5b818d8434287244eaebdd9bba08f193 100644 (file)
@@ -1010,7 +1010,7 @@ static bool data_transfer_layersmapping_generate(
  * to get (as much as possible) exact copy of source data layout.
  */
 void BKE_object_data_transfer_layout(
-        const struct EvaluationContext *eval_ctx, Scene *scene,
+        struct Depsgraph *depsgraph, Scene *scene,
         Object *ob_src, Object *ob_dst, const int data_types, const bool use_delete,
         const int fromlayers_select[DT_MULTILAYER_INDEX_MAX], const int tolayers_select[DT_MULTILAYER_INDEX_MAX])
 {
@@ -1028,7 +1028,7 @@ void BKE_object_data_transfer_layout(
 
        /* Get source DM.*/
        dm_src_mask |= BKE_object_data_transfer_dttypes_to_cdmask(data_types);
-       dm_src = mesh_get_derived_final(eval_ctx, scene, ob_src, dm_src_mask);
+       dm_src = mesh_get_derived_final(depsgraph, scene, ob_src, dm_src_mask);
        if (!dm_src) {
                return;
        }
@@ -1086,7 +1086,7 @@ void BKE_object_data_transfer_layout(
 }
 
 bool BKE_object_data_transfer_dm(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob_src, Object *ob_dst, DerivedMesh *dm_dst,
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob_src, Object *ob_dst, DerivedMesh *dm_dst,
         const int data_types, bool use_create, const int map_vert_mode, const int map_edge_mode,
         const int map_loop_mode, const int map_poly_mode, SpaceTransform *space_transform, const bool auto_transform,
         const float max_distance, const float ray_radius, const float islands_handling_precision,
@@ -1150,7 +1150,7 @@ bool BKE_object_data_transfer_dm(
         *     Also, we need to make a local copy of dm_src, otherwise we may end with concurrent creation
         *     of data in it (multi-threaded evaluation of the modifier stack, see T46672).
         */
-       dm_src = dm_dst ? ob_src->derivedFinal : mesh_get_derived_final(eval_ctx, scene, ob_src, dm_src_mask);
+       dm_src = dm_dst ? ob_src->derivedFinal : mesh_get_derived_final(depsgraph, scene, ob_src, dm_src_mask);
        if (!dm_src) {
                return changed;
        }
@@ -1458,7 +1458,7 @@ bool BKE_object_data_transfer_dm(
 }
 
 bool BKE_object_data_transfer_mesh(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob_src, Object *ob_dst, const int data_types,
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob_src, Object *ob_dst, const int data_types,
         const bool use_create, const int map_vert_mode, const int map_edge_mode, const int map_loop_mode,
         const int map_poly_mode, SpaceTransform *space_transform, const bool auto_transform,
         const float max_distance, const float ray_radius, const float islands_handling_precision,
@@ -1467,7 +1467,7 @@ bool BKE_object_data_transfer_mesh(
         ReportList *reports)
 {
        return BKE_object_data_transfer_dm(
-               eval_ctx, scene, ob_src, ob_dst, NULL, data_types, use_create,
+               depsgraph, scene, ob_src, ob_dst, NULL, data_types, use_create,
                map_vert_mode, map_edge_mode, map_loop_mode, map_poly_mode,
                space_transform, auto_transform,
                max_distance, ray_radius, islands_handling_precision,
index ffa4e6520564c83593d3dc10c66d4a990a3f8f1a..e74e540fab9fba3d1312a1dad6d3309d26dec34c 100644 (file)
@@ -681,7 +681,7 @@ static void curve_to_filledpoly(Curve *cu, ListBase *UNUSED(nurb), ListBase *dis
  * - first point left, last point right
  * - based on subdivided points in original curve, not on points in taper curve (still)
  */
-static float displist_calc_taper(const EvaluationContext *eval_ctx, Scene *scene, Object *taperobj, float fac)
+static float displist_calc_taper(Depsgraph *depsgraph, Scene *scene, Object *taperobj, float fac)
 {
        DispList *dl;
 
@@ -690,7 +690,7 @@ static float displist_calc_taper(const EvaluationContext *eval_ctx, Scene *scene
 
        dl = taperobj->curve_cache ? taperobj->curve_cache->disp.first : NULL;
        if (dl == NULL) {
-               BKE_displist_make_curveTypes(eval_ctx, scene, taperobj, 0);
+               BKE_displist_make_curveTypes(depsgraph, scene, taperobj, 0);
                dl = taperobj->curve_cache->disp.first;
        }
        if (dl) {
@@ -721,14 +721,14 @@ static float displist_calc_taper(const EvaluationContext *eval_ctx, Scene *scene
        return 1.0;
 }
 
-float BKE_displist_calc_taper(const EvaluationContext *eval_ctx, Scene *scene, Object *taperobj, int cur, int tot)
+float BKE_displist_calc_taper(Depsgraph *depsgraph, Scene *scene, Object *taperobj, int cur, int tot)
 {
        float fac = ((float)cur) / (float)(tot - 1);
 
-       return displist_calc_taper(eval_ctx, scene, taperobj, fac);
+       return displist_calc_taper(depsgraph, scene, taperobj, fac);
 }
 
-void BKE_displist_make_mball(const EvaluationContext *eval_ctx, Scene *scene, Object *ob)
+void BKE_displist_make_mball(Depsgraph *depsgraph, Scene *scene, Object *ob)
 {
        if (!ob || ob->type != OB_MBALL)
                return;
@@ -741,7 +741,7 @@ void BKE_displist_make_mball(const EvaluationContext *eval_ctx, Scene *scene, Ob
                        ob->curve_cache = MEM_callocN(sizeof(CurveCache), "CurveCache for MBall");
                }
 
-               BKE_mball_polygonize(eval_ctx, scene, ob, &ob->curve_cache->disp);
+               BKE_mball_polygonize(depsgraph, scene, ob, &ob->curve_cache->disp);
                BKE_mball_texspace_calc(ob);
 
                object_deform_mball(ob, &ob->curve_cache->disp);
@@ -751,9 +751,9 @@ void BKE_displist_make_mball(const EvaluationContext *eval_ctx, Scene *scene, Ob
        }
 }
 
-void BKE_displist_make_mball_forRender(const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase)
+void BKE_displist_make_mball_forRender(Depsgraph *depsgraph, Scene *scene, Object *ob, ListBase *dispbase)
 {
-       BKE_mball_polygonize(eval_ctx, scene, ob, dispbase);
+       BKE_mball_polygonize(depsgraph, scene, ob, dispbase);
        BKE_mball_texspace_calc(ob);
 
        object_deform_mball(ob, dispbase);
@@ -802,7 +802,7 @@ static ModifierData *curve_get_tessellate_point(Scene *scene, Object *ob,
 }
 
 static void curve_calc_modifiers_pre(
-        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *nurb,
+        Depsgraph *depsgraph, Scene *scene, Object *ob, ListBase *nurb,
         const bool for_render, const bool use_render_resolution)
 {
        VirtualModifierData virtualModifierData;
@@ -860,7 +860,7 @@ static void curve_calc_modifiers_pre(
                                deformedVerts = BKE_curve_nurbs_vertexCos_get(nurb, &numVerts);
                        }
 
-                       mti->deformVerts(md, eval_ctx, ob, NULL, deformedVerts, numVerts, app_flag);
+                       mti->deformVerts(md, depsgraph, ob, NULL, deformedVerts, numVerts, app_flag);
 
                        if (md == pretessellatePoint)
                                break;
@@ -913,7 +913,7 @@ static void displist_apply_allverts(ListBase *dispbase, float (*allverts)[3])
 }
 
 static void curve_calc_modifiers_post(
-        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *nurb,
+        Depsgraph *depsgraph, Scene *scene, Object *ob, ListBase *nurb,
         ListBase *dispbase, DerivedMesh **r_dm_final,
         const bool for_render, const bool use_render_resolution)
 {
@@ -969,14 +969,14 @@ static void curve_calc_modifiers_post(
                                        dm->getVertCos(dm, vertCos);
                                }
 
-                               mti->deformVerts(md, eval_ctx, ob, dm, vertCos, totvert, appf);
+                               mti->deformVerts(md, depsgraph, ob, dm, vertCos, totvert, appf);
                        }
                        else {
                                if (!vertCos) {
                                        vertCos = displist_get_allverts(dispbase, &totvert);
                                }
 
-                               mti->deformVerts(md, eval_ctx, ob, NULL, vertCos, totvert, appf);
+                               mti->deformVerts(md, depsgraph, ob, NULL, vertCos, totvert, appf);
                        }
                }
                else {
@@ -1018,7 +1018,7 @@ static void curve_calc_modifiers_post(
                        if (useCache)
                                appf |= MOD_APPLY_USECACHE;
 
-                       ndm = modwrap_applyModifier(md, eval_ctx, ob, dm, appf);
+                       ndm = modwrap_applyModifier(md, depsgraph, ob, dm, appf);
 
                        if (ndm) {
                                /* Modifier returned a new derived mesh */
@@ -1095,13 +1095,13 @@ static void displist_surf_indices(DispList *dl)
        }
 }
 
-static DerivedMesh *create_orco_dm(const EvaluationContext *eval_ctx, Scene *scene, Object *ob)
+static DerivedMesh *create_orco_dm(Depsgraph *depsgraph, Scene *scene, Object *ob)
 {
        DerivedMesh *dm;
        ListBase disp = {NULL, NULL};
 
        /* OrcoDM should be created from underformed disp lists */
-       BKE_displist_make_curveTypes_forOrco(eval_ctx, scene, ob, &disp);
+       BKE_displist_make_curveTypes_forOrco(depsgraph, scene, ob, &disp);
        dm = CDDM_from_curve_displist(ob, &disp);
 
        BKE_displist_free(&disp);
@@ -1140,7 +1140,7 @@ static void add_orco_dm(Object *ob, DerivedMesh *dm, DerivedMesh *orcodm)
 }
 
 static void curve_calc_orcodm(
-        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm_final,
+        Depsgraph *depsgraph, Scene *scene, Object *ob, DerivedMesh *dm_final,
         const bool for_render, const bool use_render_resolution)
 {
        /* this function represents logic of mesh's orcodm calculation
@@ -1178,7 +1178,7 @@ static void curve_calc_orcodm(
         * This means we can create ORCO DM in advance and assume it's
         * never NULL.
         */
-       orcodm = create_orco_dm(eval_ctx, scene, ob);
+       orcodm = create_orco_dm(depsgraph, scene, ob);
 
        for (; md; md = md->next) {
                const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
@@ -1190,7 +1190,7 @@ static void curve_calc_orcodm(
                if (mti->type != eModifierTypeType_Constructive)
                        continue;
 
-               ndm = modwrap_applyModifier(md, eval_ctx, ob, orcodm, app_flag);
+               ndm = modwrap_applyModifier(md, depsgraph, ob, orcodm, app_flag);
 
                if (ndm) {
                        /* if the modifier returned a new dm, release the old one */
@@ -1208,7 +1208,7 @@ static void curve_calc_orcodm(
 }
 
 void BKE_displist_make_surf(
-        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase,
+        Depsgraph *depsgraph, Scene *scene, Object *ob, ListBase *dispbase,
         DerivedMesh **r_dm_final,
         const bool for_render, const bool for_orco, const bool use_render_resolution)
 {
@@ -1227,7 +1227,7 @@ void BKE_displist_make_surf(
        }
 
        if (!for_orco)
-               curve_calc_modifiers_pre(eval_ctx, scene, ob, &nubase, for_render, use_render_resolution);
+               curve_calc_modifiers_pre(depsgraph, scene, ob, &nubase, for_render, use_render_resolution);
 
        for (nu = nubase.first; nu; nu = nu->next) {
                if ((for_render || nu->hide == 0) && BKE_nurb_check_valid_uv(nu)) {
@@ -1294,7 +1294,7 @@ void BKE_displist_make_surf(
 
        if (!for_orco) {
                BKE_nurbList_duplicate(&ob->curve_cache->deformed_nurbs, &nubase);
-               curve_calc_modifiers_post(eval_ctx, scene, ob, &nubase, dispbase, r_dm_final,
+               curve_calc_modifiers_post(depsgraph, scene, ob, &nubase, dispbase, r_dm_final,
                                          for_render, use_render_resolution);
        }
 
@@ -1521,7 +1521,7 @@ static void calc_bevfac_mapping(Curve *cu, BevList *bl, Nurb *nu,
 }
 
 static void do_makeDispListCurveTypes(
-        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase,
+        Depsgraph *depsgraph, Scene *scene, Object *ob, ListBase *dispbase,
         DerivedMesh **r_dm_final,
         const bool for_render, const bool for_orco, const bool use_render_resolution)
 {
@@ -1531,7 +1531,7 @@ static void do_makeDispListCurveTypes(
        if (!ELEM(ob->type, OB_SURF, OB_CURVE, OB_FONT)) return;
 
        if (ob->type == OB_SURF) {
-               BKE_displist_make_surf(eval_ctx, scene, ob, dispbase, r_dm_final, for_render, for_orco, use_render_resolution);
+               BKE_displist_make_surf(depsgraph, scene, ob, dispbase, r_dm_final, for_render, for_orco, use_render_resolution);
        }
        else if (ELEM(ob->type, OB_CURVE, OB_FONT)) {
                ListBase dlbev;
@@ -1556,12 +1556,12 @@ static void do_makeDispListCurveTypes(
                }
 
                if (!for_orco)
-                       curve_calc_modifiers_pre(eval_ctx, scene, ob, &nubase, for_render, use_render_resolution);
+                       curve_calc_modifiers_pre(depsgraph, scene, ob, &nubase, for_render, use_render_resolution);
 
                BKE_curve_bevelList_make(ob, &nubase, for_render != false);
 
                /* If curve has no bevel will return nothing */
-               BKE_curve_bevel_make(eval_ctx, scene, ob, &dlbev, for_render, use_render_resolution);
+               BKE_curve_bevel_make(depsgraph, scene, ob, &dlbev, for_render, use_render_resolution);
 
                /* no bevel or extrude, and no width correction? */
                if (!dlbev.first && cu->width == 1.0f) {
@@ -1696,7 +1696,7 @@ static void do_makeDispListCurveTypes(
                                                                                        taper_fac -= (1.0f - lastblend) / len;
                                                                        }
 
-                                                                       fac = displist_calc_taper(eval_ctx, scene, cu->taperobj, taper_fac);
+                                                                       fac = displist_calc_taper(depsgraph, scene, cu->taperobj, taper_fac);
                                                                }
 
                                                                if (bevp->split_tag) {
@@ -1749,7 +1749,7 @@ static void do_makeDispListCurveTypes(
 
                if (!for_orco) {
                        if ((cu->flag & CU_PATH) ||
-                           DEG_get_eval_flags_for_id(eval_ctx->depsgraph, &ob->id) & DAG_EVAL_NEED_CURVE_PATH)
+                           DEG_get_eval_flags_for_id(depsgraph, &ob->id) & DAG_EVAL_NEED_CURVE_PATH)
                        {
                                calc_curvepath(ob, &nubase);
                        }
@@ -1757,7 +1757,7 @@ static void do_makeDispListCurveTypes(
 
                if (!for_orco) {
                        BKE_nurbList_duplicate(&ob->curve_cache->deformed_nurbs, &nubase);
-                       curve_calc_modifiers_post(eval_ctx, scene, ob, &nubase, dispbase, r_dm_final, for_render, use_render_resolution);
+                       curve_calc_modifiers_post(depsgraph, scene, ob, &nubase, dispbase, r_dm_final, for_render, use_render_resolution);
                }
 
                if (cu->flag & CU_DEFORM_FILL && !ob->derivedFinal) {
@@ -1768,7 +1768,7 @@ static void do_makeDispListCurveTypes(
        }
 }
 
-void BKE_displist_make_curveTypes(const EvaluationContext *eval_ctx, Scene *scene, Object *ob, const bool for_orco)
+void BKE_displist_make_curveTypes(Depsgraph *depsgraph, Scene *scene, Object *ob, const bool for_orco)
 {
        ListBase *dispbase;
 
@@ -1786,13 +1786,13 @@ void BKE_displist_make_curveTypes(const EvaluationContext *eval_ctx, Scene *scen
 
        dispbase = &(ob->curve_cache->disp);
 
-       do_makeDispListCurveTypes(eval_ctx, scene, ob, dispbase, &ob->derivedFinal, 0, for_orco, 0);
+       do_makeDispListCurveTypes(depsgraph, scene, ob, dispbase, &ob->derivedFinal, 0, for_orco, 0);
 
        boundbox_displist_object(ob);
 }
 
 void BKE_displist_make_curveTypes_forRender(
-        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase,
+        Depsgraph *depsgraph, Scene *scene, Object *ob, ListBase *dispbase,
         DerivedMesh **r_dm_final, const bool for_orco,
         const bool use_render_resolution)
 {
@@ -1800,22 +1800,22 @@ void BKE_displist_make_curveTypes_forRender(
                ob->curve_cache = MEM_callocN(sizeof(CurveCache), "CurveCache for Curve");
        }
 
-       do_makeDispListCurveTypes(eval_ctx, scene, ob, dispbase, r_dm_final, true, for_orco, use_render_resolution);
+       do_makeDispListCurveTypes(depsgraph, scene, ob, dispbase, r_dm_final, true, for_orco, use_render_resolution);
 }
 
 void BKE_displist_make_curveTypes_forOrco(
-        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, ListBase *dispbase)
+        Depsgraph *depsgraph, Scene *scene, Object *ob, ListBase *dispbase)
 {
        if (ob->curve_cache == NULL) {
                ob->curve_cache = MEM_callocN(sizeof(CurveCache), "CurveCache for Curve");
        }
 
-       do_makeDispListCurveTypes(eval_ctx, scene, ob, dispbase, NULL, 1, 1, 1);
+       do_makeDispListCurveTypes(depsgraph, scene, ob, dispbase, NULL, 1, 1, 1);
 }
 
 /* add Orco layer to the displist object which has got derived mesh and return orco */
 float *BKE_displist_make_orco(
-        const EvaluationContext *eval_ctx, Scene *scene, Object *ob, DerivedMesh *dm_final,
+        Depsgraph *depsgraph, Scene *scene, Object *ob, DerivedMesh *dm_final,
         const bool for_render,
         const bool use_render_resolution)
 {
@@ -1825,7 +1825,7 @@ float *BKE_displist_make_orco(
                dm_final = ob->derivedFinal;
 
        if (!dm_final->getVertDataArray(dm_final, CD_ORCO)) {
-               curve_calc_orcodm(eval_ctx, scene, ob, dm_final, for_render, use_render_resolution);
+               curve_calc_orcodm(depsgraph, scene, ob, dm_final, for_render, use_render_resolution);
        }
 
        orco = dm_final->getVertDataArray(dm_final, CD_ORCO);
index ee678dd4c416b5456ddd987ae09d976c84fc302a..6f0135616f00ae9a3c4be5564725b9ac65d345a0 100644 (file)
@@ -75,6 +75,7 @@
 #include "BKE_scene.h"
 
 #include "DEG_depsgraph.h"
+#include "DEG_depsgraph_query.h"
 
 /* for image output    */
 #include "IMB_imbuf_types.h"
@@ -2065,7 +2066,7 @@ static void canvas_copyDerivedMesh(DynamicPaintCanvasSettings *canvas, DerivedMe
  *     Updates derived mesh copy and processes dynamic paint step / caches.
  */
 static void dynamicPaint_frameUpdate(
-        DynamicPaintModifierData *pmd, const struct EvaluationContext *eval_ctx, Scene *scene,
+        DynamicPaintModifierData *pmd, struct Depsgraph *depsgraph, Scene *scene,
         Object *ob, DerivedMesh *dm)
 {
        if (pmd->canvas) {
@@ -2129,7 +2130,7 @@ static void dynamicPaint_frameUpdate(
                                else if (can_simulate) {
                                        /* calculate surface frame */
                                        canvas->flags |= MOD_DPAINT_BAKING;
-                                       dynamicPaint_calculateFrame(surface, eval_ctx, scene, ob, current_frame);
+                                       dynamicPaint_calculateFrame(surface, depsgraph, scene, ob, current_frame);
                                        canvas->flags &= ~MOD_DPAINT_BAKING;
 
                                        /* restore canvas derivedmesh if required */
@@ -2149,14 +2150,14 @@ static void dynamicPaint_frameUpdate(
 
 /* Modifier call. Processes dynamic paint modifier step. */
 DerivedMesh *dynamicPaint_Modifier_do(
-        DynamicPaintModifierData *pmd, const struct EvaluationContext *eval_ctx, Scene *scene,
+        DynamicPaintModifierData *pmd, struct Depsgraph *depsgraph, Scene *scene,
         Object *ob, DerivedMesh *dm)
 {
        if (pmd->canvas) {
                DerivedMesh *ret;
 
                /* Update canvas data for a new frame */
-               dynamicPaint_frameUpdate(pmd, eval_ctx, scene, ob, dm);
+               dynamicPaint_frameUpdate(pmd, depsgraph, scene, ob, dm);
 
                /* Return output mesh */
                ret = dynamicPaint_Modifier_apply(pmd, ob, dm);
@@ -2165,7 +2166,7 @@ DerivedMesh *dynamicPaint_Modifier_do(
        }
        else {
                /* Update canvas data for a new frame */
-               dynamicPaint_frameUpdate(pmd, eval_ctx, scene, ob, dm);
+               dynamicPaint_frameUpdate(pmd, depsgraph, scene, ob, dm);
 
                /* Return output mesh */
                return dynamicPaint_Modifier_apply(pmd, ob, dm);
@@ -3348,7 +3349,7 @@ typedef struct BrushMaterials {
 /* Initialize materials for brush object:
  *  Calculates inverse matrices for linked objects, updates
  *  volume caches etc. */
-static void dynamicPaint_updateBrushMaterials(const EvaluationContext *eval_ctx, Object *brushOb, Material *ui_mat, Scene *scene, BrushMaterials *bMats)
+static void dynamicPaint_updateBrushMaterials(Depsgraph *depsgraph, Object *brushOb, Material *ui_mat, Scene *scene, BrushMaterials *bMats)
 {
        /* Calculate inverse transformation matrix
         *  for this object */
@@ -3363,13 +3364,13 @@ static void dynamicPaint_updateBrushMaterials(const EvaluationContext *eval_ctx,
                if (tot) {
                        bMats->ob_mats = MEM_callocN(sizeof(Material *) * (tot), "BrushMaterials");
                        for (i = 0; i < tot; i++) {
-                               bMats->ob_mats[i] = RE_sample_material_init(eval_ctx, give_current_material(brushOb, (i + 1)), scene);
+                               bMats->ob_mats[i] = RE_sample_material_init(depsgraph, give_current_material(brushOb, (i + 1)), scene);
                        }
                }
                bMats->tot = tot;
        }
        else {
-               bMats->mat = RE_sample_material_init(eval_ctx, ui_mat, scene);
+               bMats->mat = RE_sample_material_init(depsgraph, ui_mat, scene);
        }
 }
 
@@ -3740,7 +3741,7 @@ static void dynamic_paint_brush_velocity_compute_cb(
 }
 
 static void dynamicPaint_brushMeshCalculateVelocity(
-        const struct EvaluationContext *eval_ctx, Scene *scene,
+        struct Depsgraph *depsgraph, Scene *scene,
         Object *ob, DynamicPaintBrushSettings *brush, Vec3f **brushVel, float timescale)
 {
        float prev_obmat[4][4];
@@ -3763,7 +3764,7 @@ static void dynamicPaint_brushMeshCalculateVelocity(
        scene->r.subframe = prev_sfra;
 
        BKE_object_modifier_update_subframe(
-                   eval_ctx, scene, ob, true, SUBFRAME_RECURSION, BKE_scene_frame_get(scene), eModifierType_DynamicPaint);
+                   depsgraph, scene, ob, true, SUBFRAME_RECURSION, BKE_scene_frame_get(scene), eModifierType_DynamicPaint);
        dm_p = CDDM_copy(brush->dm);
        numOfVerts_p = dm_p->getNumVerts(dm_p);
        mvert_p = dm_p->getVertArray(dm_p);
@@ -3774,7 +3775,7 @@ static void dynamicPaint_brushMeshCalculateVelocity(
        scene->r.subframe = cur_sfra;
 
        BKE_object_modifier_update_subframe(
-                   eval_ctx, scene, ob, true, SUBFRAME_RECURSION, BKE_scene_frame_get(scene), eModifierType_DynamicPaint);
+                   depsgraph, scene, ob, true, SUBFRAME_RECURSION, BKE_scene_frame_get(scene), eModifierType_DynamicPaint);
        dm_c = brush->dm;
        numOfVerts_c = dm_c->getNumVerts(dm_c);
        mvert_c = dm_p->getVertArray(dm_c);
@@ -3805,7 +3806,7 @@ static void dynamicPaint_brushMeshCalculateVelocity(
 }
 
 /* calculate velocity for object center point */
-static void dynamicPaint_brushObjectCalculateVelocity(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, Vec3f *brushVel, float timescale)
+static void dynamicPaint_brushObjectCalculateVelocity(struct Depsgraph *depsgraph, Scene *scene, Object *ob, Vec3f *brushVel, float timescale)
 {
        float prev_obmat[4][4];
        float cur_loc[3] = {0.0f}, prev_loc[3] = {0.0f};
@@ -3824,14 +3825,14 @@ static void dynamicPaint_brushObjectCalculateVelocity(const struct EvaluationCon
        scene->r.cfra = prev_fra;
        scene->r.subframe = prev_sfra;
        BKE_object_modifier_update_subframe(
-                   eval_ctx, scene, ob, false, SUBFRAME_RECURSION, BKE_scene_frame_get(scene), eModifierType_DynamicPaint);
+                   depsgraph, scene, ob, false, SUBFRAME_RECURSION, BKE_scene_frame_get(scene), eModifierType_DynamicPaint);
        copy_m4_m4(prev_obmat, ob->obmat);
 
        /* current frame dm */
        scene->r.cfra = cur_fra;
        scene->r.subframe = cur_sfra;
        BKE_object_modifier_update_subframe(
-                   eval_ctx, scene, ob, false, SUBFRAME_RECURSION, BKE_scene_frame_get(scene), eModifierType_DynamicPaint);
+                   depsgraph, scene, ob, false, SUBFRAME_RECURSION, BKE_scene_frame_get(scene), eModifierType_DynamicPaint);
 
        /* calculate speed */
        mul_m4_v3(prev_obmat, prev_loc);
@@ -4203,7 +4204,7 @@ static void dynamic_paint_paint_mesh_cell_point_cb_ex(
        }
 }
 
-static int dynamicPaint_paintMesh(const struct EvaluationContext *eval_ctx, DynamicPaintSurface *surface,
+static int dynamicPaint_paintMesh(struct Depsgraph *depsgraph, DynamicPaintSurface *surface,
                                   DynamicPaintBrushSettings *brush,
                                   Object *brushOb,
                                   BrushMaterials *bMats,
@@ -4219,7 +4220,7 @@ static int dynamicPaint_paintMesh(const struct EvaluationContext *eval_ctx, Dyna
        const MLoop *mloop = NULL;
 
        if (brush->flags & MOD_DPAINT_USES_VELOCITY)
-               dynamicPaint_brushMeshCalculateVelocity(eval_ctx, scene, brushOb, brush, &brushVelocity, timescale);
+               dynamicPaint_brushMeshCalculateVelocity(depsgraph, scene, brushOb, brush, &brushVelocity, timescale);
 
        if (!brush->dm)
                return 0;
@@ -4709,7 +4710,7 @@ static void dynamic_paint_paint_single_point_cb_ex(
 }
 
 static int dynamicPaint_paintSinglePoint(
-        const struct EvaluationContext *eval_ctx, DynamicPaintSurface *surface, float *pointCoord, DynamicPaintBrushSettings *brush,
+        struct Depsgraph *depsgraph, DynamicPaintSurface *surface, float *pointCoord, DynamicPaintBrushSettings *brush,
         Object *brushOb, BrushMaterials *bMats, Scene *scene, float timescale)
 {
        PaintSurfaceData *sData = surface->data;
@@ -4717,7 +4718,7 @@ static int dynamicPaint_paintSinglePoint(
        Vec3f brushVel;
 
        if (brush->flags & MOD_DPAINT_USES_VELOCITY)
-               dynamicPaint_brushObjectCalculateVelocity(eval_ctx, scene, brushOb, &brushVel, timescale);
+               dynamicPaint_brushObjectCalculateVelocity(depsgraph, scene, brushOb, &brushVel, timescale);
 
        const MVert *mvert = brush->dm->getVertArray(brush->dm);
 
@@ -5039,7 +5040,7 @@ static void dynamic_paint_prepare_effect_cb(
 }
 
 static int dynamicPaint_prepareEffectStep(
-        const struct EvaluationContext *eval_ctx, DynamicPaintSurface *surface, Scene *scene, Object *ob, float **force, float timescale)
+        struct Depsgraph *depsgraph, DynamicPaintSurface *surface, Scene *scene, Object *ob, float **force, float timescale)
 {
        double average_force = 0.0f;
        float shrink_speed = 0.0f, spread_speed = 0.0f;
@@ -5050,7 +5051,7 @@ static int dynamicPaint_prepareEffectStep(
 
        /* Init force data if required */
        if (surface->effect & MOD_DPAINT_EFFECT_DO_DRIP) {
-               ListBase *effectors = pdInitEffectors(eval_ctx, scene, ob, NULL, surface->effector_weights, true);
+               ListBase *effectors = pdInitEffectors(depsgraph, scene, ob, NULL, surface->effector_weights, true);
 
                /* allocate memory for force data (dir vector + strength) */
                *force = MEM_mallocN(sData->total_points * 4 * sizeof(float), "PaintEffectForces");
@@ -6007,7 +6008,7 @@ static int dynamicPaint_generateBakeData(DynamicPaintSurface *surface, const Vie
 /*
  * Do Dynamic Paint step. Paints scene brush objects of current state/frame to the surface.
  */
-static int dynamicPaint_doStep(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, DynamicPaintSurface *surface, float timescale, float subframe)
+static int dynamicPaint_doStep(struct Depsgraph *depsgraph, Scene *scene, Object *ob, DynamicPaintSurface *surface, float timescale, float subframe)
 {
        PaintSurfaceData *sData = surface->data;
        PaintBakeData *bData = sData->bData;
@@ -6035,7 +6036,7 @@ static int dynamicPaint_doStep(const struct EvaluationContext *eval_ctx, Scene *
                Base *base = NULL;
                Object *brushObj = NULL;
                ModifierData *md = NULL;
-               ViewLayer *view_layer = eval_ctx->view_layer;
+               ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph);
 
                /* backup current scene frame */
                int scene_frame = scene->r.cfra;
@@ -6082,12 +6083,12 @@ static int dynamicPaint_doStep(const struct EvaluationContext *eval_ctx, Scene *
                                        /* update object data on this subframe */
                                        if (subframe) {
                                                scene_setSubframe(scene, subframe);
-                                               BKE_object_modifier_update_subframe(eval_ctx, scene, brushObj, true, SUBFRAME_RECURSION,
+                                               BKE_object_modifier_update_subframe(depsgraph, scene, brushObj, true, SUBFRAME_RECURSION,
                                                                                    BKE_scene_frame_get(scene), eModifierType_DynamicPaint);
                                        }
                                        /* Prepare materials if required        */
                                        if (brush_usesMaterial(brush, scene))
-                                               dynamicPaint_updateBrushMaterials(eval_ctx, brushObj, brush->mat, scene, &bMats);
+                                               dynamicPaint_updateBrushMaterials(depsgraph, brushObj, brush->mat, scene, &bMats);
 
                                        /* Apply brush on the surface depending on it's collision type */
                                                if (brush->psys && brush->psys->part &&
@@ -6101,11 +6102,11 @@ static int dynamicPaint_doStep(const struct EvaluationContext *eval_ctx, Scene *
                                                }
                                        /* Object center distance: */
                                        if (brush->collision == MOD_DPAINT_COL_POINT && brushObj != ob) {
-                                               dynamicPaint_paintSinglePoint(eval_ctx, surface, brushObj->loc, brush, brushObj, &bMats, scene, timescale);
+                                               dynamicPaint_paintSinglePoint(depsgraph, surface, brushObj->loc, brush, brushObj, &bMats, scene, timescale);
                                        }
                                        /* Mesh volume/proximity: */
                                        else if (brushObj != ob) {
-                                               dynamicPaint_paintMesh(eval_ctx, surface, brush, brushObj, &bMats, scene, timescale);
+                                               dynamicPaint_paintMesh(depsgraph, surface, brush, brushObj, &bMats, scene, timescale);
                                        }
 
                                        /* free temp material data */
@@ -6115,7 +6116,7 @@ static int dynamicPaint_doStep(const struct EvaluationContext *eval_ctx, Scene *
                                        if (subframe) {
                                                scene->r.cfra = scene_frame;
                                                scene->r.subframe = scene_subframe;
-                                               BKE_object_modifier_update_subframe(eval_ctx, scene, brushObj, true, SUBFRAME_RECURSION,
+                                               BKE_object_modifier_update_subframe(depsgraph, scene, brushObj, true, SUBFRAME_RECURSION,
                                                                                    BKE_scene_frame_get(scene), eModifierType_DynamicPaint);
                                        }
 
@@ -6150,7 +6151,7 @@ static int dynamicPaint_doStep(const struct EvaluationContext *eval_ctx, Scene *
                                return setError(canvas, N_("Not enough free memory"));
 
                        /* Prepare effects and get number of required steps */
-                       steps = dynamicPaint_prepareEffectStep(eval_ctx, surface, scene, ob, &force, timescale);
+                       steps = dynamicPaint_prepareEffectStep(depsgraph, surface, scene, ob, &force, timescale);
                        for (s = 0; s < steps; s++) {
                                dynamicPaint_doEffectStep(surface, force, prevPoint, timescale, (float)steps);
                        }
@@ -6175,7 +6176,7 @@ static int dynamicPaint_doStep(const struct EvaluationContext *eval_ctx, Scene *
  * Calculate a single frame and included subframes for surface
  */
 int dynamicPaint_calculateFrame(
-        DynamicPaintSurface *surface, const struct EvaluationContext *eval_ctx,
+        DynamicPaintSurface *surface, struct Depsgraph *depsgraph,
         Scene *scene, Object *cObject, int frame)
 {
        float timescale = 1.0f;
@@ -6185,7 +6186,8 @@ int dynamicPaint_calculateFrame(
                dynamicPaint_applySurfaceDisplace(surface, surface->canvas->dm);
 
        /* update bake data */
-       dynamicPaint_generateBakeData(surface, eval_ctx->view_layer, cObject);
+       ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph);
+       dynamicPaint_generateBakeData(surface, view_layer, cObject);
 
        /* don't do substeps for first frame */
        if (surface->substeps && (frame != surface->start_frame)) {
@@ -6194,10 +6196,10 @@ int dynamicPaint_calculateFrame(
 
                for (st = 1; st <= surface->substeps; st++) {
                        float subframe = ((float) st) / (surface->substeps + 1);
-                       if (!dynamicPaint_doStep(eval_ctx, scene, cObject, surface, timescale, subframe))
+                       if (!dynamicPaint_doStep(depsgraph, scene, cObject, surface, timescale, subframe))
                                return 0;
                }
        }
 
-       return dynamicPaint_doStep(eval_ctx, scene, cObject, surface, timescale, 0.0f);
+       return dynamicPaint_doStep(depsgraph, scene, cObject, surface, timescale, 0.0f);
 }
index 2018962eb6270ceede4e5e54c8ebe80b5aa85184..4281443220d457d65fdfad95eb6a97c15ea43891 100644 (file)
@@ -2176,14 +2176,14 @@ static void cage_mapped_verts_callback(
        }
 }
 
-float (*BKE_editmesh_vertexCos_get(const struct EvaluationContext *eval_ctx, BMEditMesh *em, Scene *scene, int *r_numVerts))[3]
+float (*BKE_editmesh_vertexCos_get(struct Depsgraph *depsgraph, BMEditMesh *em, Scene *scene, int *r_numVerts))[3]
 {
        DerivedMesh *cage, *final;
        BLI_bitmap *visit_bitmap;
        struct CageUserData data;
        float (*cos_cage)[3];
 
-       cage = editbmesh_get_derived_cage_and_final(eval_ctx, scene, em->ob, em, CD_MASK_BAREMESH, &final);
+       cage = editbmesh_get_derived_cage_and_final(depsgraph, scene, em->ob, em, CD_MASK_BAREMESH, &final);
        cos_cage = MEM_callocN(sizeof(*cos_cage) * em->bm->totvert, "bmbvh cos_cage");
 
        /* when initializing cage verts, we only want the first cage coordinate for each vertex,
index 2927354241c1a76a6b611c0328f5dcde4aceb952..e68f11f6274f1af5c38bcf29ff3623d7e5e51511 100644 (file)
@@ -547,4 +547,4 @@ BVHTreeOverlap *BKE_bmbvh_overlap(const BMBVHTree *bmtree_a, const BMBVHTree *bm
        data.epsilon = max_ff(BLI_bvhtree_get_epsilon(bmtree_a->tree), BLI_bvhtree_get_epsilon(bmtree_b->tree));
 
        return BLI_bvhtree_overlap(bmtree_a->tree, bmtree_b->tree, r_overlap_tot, bmbvh_overlap_cb, &data);
-}
\ No newline at end of file
+}
index f725a1793b4f42780d560b36f62ddd73cedeae32..9e8b4fa87826e25a1686ad3bed0b271fb4e39ffa 100644 (file)
@@ -428,4 +428,4 @@ void BKE_editmesh_loop_tangent_calc(
        } /* else tangent has been built from orco */
 }
 
-/** \} */
\ No newline at end of file
+/** \} */
index a919353644d3a27ce9aab03e7c4d80e01cfaca1c..8bdc74edffd300557a51635bfdf8920707794abc 100644 (file)
@@ -74,6 +74,7 @@
 #include "BKE_smoke.h"
 
 #include "DEG_depsgraph.h"
+#include "DEG_depsgraph_query.h"
 
 #include "RE_render_ext.h"
 #include "RE_shader_ext.h"
@@ -148,10 +149,10 @@ void free_partdeflect(PartDeflect *pd)
        MEM_freeN(pd);
 }
 
-static EffectorCache *new_effector_cache(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob, ParticleSystem *psys, PartDeflect *pd)
+static EffectorCache *new_effector_cache(struct Depsgraph *depsgraph, Scene *scene, Object *ob, ParticleSystem *psys, PartDeflect *pd)
 {
        EffectorCache *eff = MEM_callocN(sizeof(EffectorCache), "EffectorCache");
-       eff->eval_ctx = eval_ctx;
+       eff->depsgraph = depsgraph;
        eff->scene = scene;
        eff->ob = ob;
        eff->psys = psys;
@@ -159,7 +160,7 @@ static EffectorCache *new_effector_cache(const struct EvaluationContext *eval_ct
        eff->frame = -1;
        return eff;
 }
-static void add_object_to_effectors(ListBase **effectors, const struct EvaluationContext *eval_ctx, Scene *scene, EffectorWeights *weights, Object *ob, Object *ob_src, bool for_simulation)
+static void add_object_to_effectors(ListBase **effectors, struct Depsgraph *depsgraph, Scene *scene, EffectorWeights *weights, Object *ob, Object *ob_src, bool for_simulation)
 {
        EffectorCache *eff = NULL;
 
@@ -177,14 +178,14 @@ static void add_object_to_effectors(ListBase **effectors, const struct Evaluatio
        if (*effectors == NULL)
                *effectors = MEM_callocN(sizeof(ListBase), "effectors list");
 
-       eff = new_effector_cache(eval_ctx, scene, ob, NULL, ob->pd);
+       eff = new_effector_cache(depsgraph, scene, ob, NULL, ob->pd);
 
        /* make sure imat is up to date */
        invert_m4_m4(ob->imat, ob->obmat);
 
        BLI_addtail(*effectors, eff);
 }
-static void add_particles_to_effectors(ListBase **effectors, const struct EvaluationContext *eval_ctx, Scene *scene, EffectorWeights *weights, Object *ob, ParticleSystem *psys, ParticleSystem *psys_src, bool for_simulation)
+static void add_particles_to_effectors(ListBase **effectors, struct Depsgraph *depsgraph, Scene *scene, EffectorWeights *weights, Object *ob, ParticleSystem *psys, ParticleSystem *psys_src, bool for_simulation)
 {
        ParticleSettings *part= psys->part;
 
@@ -198,20 +199,20 @@ static void add_particles_to_effectors(ListBase **effectors, const struct Evalua
                if (*effectors == NULL)
                        *effectors = MEM_callocN(sizeof(ListBase), "effectors list");
 
-               BLI_addtail(*effectors, new_effector_cache(eval_ctx, scene, ob, psys, part->pd));
+               BLI_addtail(*effectors, new_effector_cache(depsgraph, scene, ob, psys, part->pd));
        }
 
        if (part->pd2 && part->pd2->forcefield && (!for_simulation || weights->weight[part->pd2->forcefield] != 0.0f)) {
                if (*effectors == NULL)
                        *effectors = MEM_callocN(sizeof(ListBase), "effectors list");
 
-               BLI_addtail(*effectors, new_effector_cache(eval_ctx, scene, ob, psys, part->pd2));
+               BLI_addtail(*effectors, new_effector_cache(depsgraph, scene, ob, psys, part->pd2));
        }
 }
 
 /* returns ListBase handle with objects taking part in the effecting */
 ListBase *pdInitEffectors(
-        const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob_src, ParticleSystem *psys_src,
+        struct Depsgraph *depsgraph, Scene *scene, Object *ob_src, ParticleSystem *psys_src,
         EffectorWeights *weights, bool for_simulation)
 {
        ViewLayer *view_layer;
@@ -222,11 +223,11 @@ ListBase *pdInitEffectors(
                view_layer = weights->group->view_layer;
        }
        /* TODO(mai): the check for view_layer shouldnt be needed, remove when render engine api is updated for this */
-       else if (eval_ctx && eval_ctx->view_layer) {
-               view_layer = eval_ctx->view_layer;
+       else if (depsgraph && DEG_get_evaluated_view_layer(depsgraph)) {
+               view_layer = DEG_get_evaluated_view_layer(depsgraph);
        }
        else {
-               /* eval_ctx is NULL during deg build */
+               /* depsgraph is NULL during deg build */
                view_layer = BKE_view_layer_context_active_PLACEHOLDER(scene);
        }
 
@@ -236,20 +237,20 @@ ListBase *pdInitEffectors(
                }
 
                if (base->object->pd && base->object->pd->forcefield) {
-                       add_object_to_effectors(&effectors, eval_ctx, scene, weights, base->object, ob_src, for_simulation);
+                       add_object_to_effectors(&effectors, depsgraph, scene, weights, base->object, ob_src, for_simulation);
                }
 
                if (base->object->particlesystem.first) {
                        ParticleSystem *psys= base->object->particlesystem.first;
 
                        for (; psys; psys=psys->next) {
-                               add_particles_to_effectors(&effectors, eval_ctx, scene, weights, base->object, psys, psys_src, for_simulation);
+                               add_particles_to_effectors(&effectors, depsgraph, scene, weights, base->object, psys, psys_src, for_simulation);
                        }
                }
        }
 
        if (for_simulation) {
-               pdPrecalculateEffectors(eval_ctx, effectors);
+               pdPrecalculateEffectors(depsgraph, effectors);
        }
 
        return effectors;
@@ -271,7 +272,7 @@ void pdEndEffectors(ListBase **effectors)
        }
 }
 
-static void precalculate_effector(const struct EvaluationContext *eval_ctx, EffectorCache *eff)
+static void precalculate_effector(struct Depsgraph *depsgraph, EffectorCache *eff)
 {
        unsigned int cfra = (unsigned int)(eff->scene->r.cfra >= 0 ? eff->scene->r.cfra : -eff->scene->r.cfra);
        if (!eff->pd->rng)
@@ -283,7 +284,7 @@ static void precalculate_effector(const struct EvaluationContext *eval_ctx, Effe
                Curve *cu= eff->ob->data;
                if (cu->flag & CU_PATH) {
                        if (eff->ob->curve_cache == NULL || eff->ob->curve_cache->path==NULL || eff->ob->curve_cache->path->data==NULL)
-                               BKE_displist_make_curveTypes(eval_ctx, eff->scene, eff->ob, 0);
+                               BKE_displist_make_curveTypes(depsgraph, eff->scene, eff->ob, 0);
 
                        if (eff->ob->curve_cache->path && eff->ob->curve_cache->path->data) {
                                where_on_path(eff->ob, 0.0, eff->guide_loc, eff->guide_dir, NULL, &eff->guide_radius, NULL);
@@ -304,19 +305,19 @@ static void precalculate_effector(const struct EvaluationContext *eval_ctx, Effe
        if (eff->ob) {
                float old_vel[3];
 
-               BKE_object_where_is_calc_time(eval_ctx, eff->scene, eff->ob, cfra - 1.0f);
+               BKE_object_where_is_calc_time(depsgraph, eff->scene, eff->ob, cfra - 1.0f);
                copy_v3_v3(old_vel, eff->ob->obmat[3]);
-               BKE_object_where_is_calc_time(eval_ctx, eff->scene, eff->ob, cfra);
+               BKE_object_where_is_calc_time(depsgraph, eff->scene, eff->ob, cfra);
                sub_v3_v3v3(eff->velocity, eff->ob->obmat[3], old_vel);
        }
 }
 
-void pdPrecalculateEffectors(const struct EvaluationContext *eval_ctx, ListBase *effectors)
+void pdPrecalculateEffectors(struct Depsgraph *depsgraph, ListBase *effectors)
 {
        if (effectors) {
                EffectorCache *eff = effectors->first;
                for (; eff; eff=eff->next)
-                       precalculate_effector(eval_ctx, eff);
+                       precalculate_effector(depsgraph, eff);
        }
 }
 
@@ -615,7 +616,7 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin
                }
                else {
                        ParticleSimulationData sim= {NULL};
-                       sim.eval_ctx = eff->eval_ctx;
+                       sim.depsgraph = eff->depsgraph;
                        sim.scene= eff->scene;
                        sim.ob= eff->ob;
                        sim.psys= eff->psys;
index d0d3317b4776031a7eb7a2f4f6f072e06346b3b6..c79b2bb4aee4b036b746e51750e7710f7242d0dd 100644 (file)
@@ -64,7 +64,7 @@
 // file handling
 //-------------------------------------------------------------------------------
 
-void initElbeemMesh(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *ob,
+void initElbeemMesh(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
                     int *numVertices, float **vertices,
                     int *numTriangles, int **triangles,
                     int useGlobalCoords, int modifierIndex)
@@ -77,7 +77,7 @@ void initElbeemMesh(const struct EvaluationContext *eval_ctx, struct Scene *scen
        float *verts;
        int *tris;
 
-       dm = mesh_create_derived_index_render(eval_ctx, scene, ob, CD_MASK_BAREMESH, modifierIndex);
+       dm = mesh_create_derived_index_render(depsgraph, scene, ob, CD_MASK_BAREMESH, modifierIndex);
 
        mvert = dm->getVertArray(dm);
        mloop = dm->getLoopArray(dm);
index 7566d370c45e8e51866c16434308f6f187c55e30..ae031d21b881cfe5abd587c0a604201bedf47368 100644 (file)
@@ -334,7 +334,7 @@ static void group_replaces_nla(Object *parent, Object *target, char mode)
  * you can draw everything, leaves tags in objects to signal it needs further updating */
 
 /* note: does not work for derivedmesh and render... it recreates all again in convertblender.c */
-void BKE_group_handle_recalc_and_update(const struct EvaluationContext *eval_ctx, Scene *scene, Object *UNUSED(parent), Group *group)
+void BKE_group_handle_recalc_and_update(struct Depsgraph *depsgraph, Scene *scene, Object *UNUSED(parent), Group *group)
 {
 #if 0 /* warning, isn't clearing the recalc flag on the object which causes it to run all the time,
           * not just on frame change.
@@ -354,7 +354,7 @@ void BKE_group_handle_recalc_and_update(const struct EvaluationContext *eval_ctx
                                go->ob->recalc = go->recalc;
                                
                                group_replaces_nla(parent, go->ob, 's');
-                               BKE_object_handle_update(eval_ctx, scene, go->ob);
+                               BKE_object_handle_update(depsgraph, scene, go->ob);
                                group_replaces_nla(parent, go->ob, 'e');
                                
                                /* leave recalc tags in case group members are in normal scene */
@@ -372,7 +372,7 @@ void BKE_group_handle_recalc_and_update(const struct EvaluationContext *eval_ctx
                FOREACH_GROUP_OBJECT_BEGIN(group, object)
                {
                        if (object->id.recalc & ID_RECALC_ALL) {
-                               BKE_object_handle_update(eval_ctx, scene, object);
+                               BKE_object_handle_update(depsgraph, scene, object);
                        }
                }
                FOREACH_GROUP_OBJECT_END;
@@ -381,9 +381,9 @@ void BKE_group_handle_recalc_and_update(const struct EvaluationContext *eval_ctx
 
 /* ******** Dependency graph evaluation ******** */
 
-void BKE_group_eval_view_layers(const struct EvaluationContext *eval_ctx,
+void BKE_group_eval_view_layers(struct Depsgraph *depsgraph,
                                 Group *group)
 {
        DEG_debug_print_eval(__func__, group->id.name, group);
-       BKE_layer_eval_view_layer(eval_ctx, &group->id, group->view_layer);
+       BKE_layer_eval_view_layer(depsgraph, &group->id, group->view_layer);
 }
index c41ad78977ede1601c645d3139725601397be459..b9e6e0e8fa969ee22e62b7409d6717701436bd6d 100644 (file)
@@ -1026,7 +1026,7 @@ void BKE_lattice_vertexcos_apply(struct Object *ob, float (*vertexCos)[3])
        }
 }
 
-void BKE_lattice_modifiers_calc(const struct EvaluationContext *eval_ctx, Scene *scene, Object *ob)
+void BKE_lattice_modifiers_calc(struct Depsgraph *depsgraph, Scene *scene, Object *ob)
 {
        Lattice *lt = ob->data;
        VirtualModifierData virtualModifierData;
@@ -1053,7 +1053,7 @@ void BKE_lattice_modifiers_calc(const struct EvaluationContext *eval_ctx, Scene
                if (mti->type != eModifierTypeType_OnlyDeform) continue;
 
                if (!vertexCos) vertexCos = BKE_lattice_vertexcos_get(ob, &numVerts);
-               mti->deformVerts(md, eval_ctx, ob, NULL, vertexCos, numVerts, 0);
+               mti->deformVerts(md, depsgraph, ob, NULL, vertexCos, numVerts, 0);
        }
 
        /* always displist to make this work like derivedmesh */
@@