Commit: 700e3cc2a87a20f2ce3f8af31ece4df1b13e0ba8
Author: Sergey Sharybin
Date:   Fri Feb 1 10:37:14 2019 +0100
Branches: master
https://developer.blender.org/rB700e3cc2a87a20f2ce3f8af31ece4df1b13e0ba8

Depsgraph: Use operation code for geometry evaluation init

Makes it more explicit and avoids strings comparisons during build.

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

M       source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
M       source/blender/depsgraph/intern/builder/deg_builder_relations.cc
M       source/blender/depsgraph/intern/node/deg_node_operation.cc
M       source/blender/depsgraph/intern/node/deg_node_operation.h

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

diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc 
b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index 2f22d4b2087..26169b5b900 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -1246,12 +1246,14 @@ void DepsgraphNodeBuilder::build_object_data_geometry(
        OperationNode *op_node;
        Scene *scene_cow = get_cow_datablock(scene_);
        Object *object_cow = get_cow_datablock(object);
-       /* Temporary uber-update node, which does everything.
-        * It is for the being we're porting old dependencies into the new 
system.
-        * We'll get rid of this node as soon as all the granular update 
functions
-        * are filled in.
-        *
-        * TODO(sergey): Get rid of this node. */
+       /* Entry operation, takes care of initialization, and some other
+        * relations which needs to be run prior actual geometry evaluation. */
+       op_node = add_operation_node(&object->id,
+                                    NodeType::GEOMETRY,
+                                    NULL,
+                                    OperationCode::GEOMETRY_EVAL_INIT);
+       op_node->set_as_entry();
+       /* Geometry evaluation. */
        op_node = add_operation_node(&object->id,
                                     NodeType::GEOMETRY,
                                     function_bind(BKE_object_eval_uber_data,
@@ -1260,13 +1262,6 @@ void DepsgraphNodeBuilder::build_object_data_geometry(
                                                   object_cow),
                                     OperationCode::GEOMETRY_EVAL);
        op_node->set_as_exit();
-
-       op_node = add_operation_node(&object->id,
-                                    NodeType::GEOMETRY,
-                                    NULL,
-                                    OperationCode::PLACEHOLDER,
-                                    "Eval Init");
-       op_node->set_as_entry();
        /* Materials. */
        if (object->totcol != 0) {
                if (object->type == OB_MESH) {
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc 
b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index 65b235dac1f..75b4ae44169 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -1936,16 +1936,14 @@ void DepsgraphRelationBuilder::build_shapekeys(Key *key)
  *        and also for the links coming from the shapekey datablocks
  * - Animation/Drivers affecting the parameters of the geometry are made to
  *   trigger updates on the obdata geometry component, which then trigger
- *   downstream re-evaluation of the individual instances of this geometry.
- */
+ *   downstream re-evaluation of the individual instances of this geometry. */
 void DepsgraphRelationBuilder::build_object_data_geometry(Object *object)
 {
        ID *obdata = (ID *)object->data;
        /* Init operation of object-level geometry evaluation. */
        OperationKey geom_init_key(&object->id,
                                   NodeType::GEOMETRY,
-                                  OperationCode::PLACEHOLDER,
-                                  "Eval Init");
+                                  OperationCode::GEOMETRY_EVAL_INIT);
        /* Get nodes for result of obdata's evaluation, and geometry evaluation
         * on object. */
        ComponentKey obdata_geom_key(obdata, NodeType::GEOMETRY);
@@ -1981,7 +1979,7 @@ void 
DepsgraphRelationBuilder::build_object_data_geometry(Object *object)
                        }
                }
        }
-       /* Grease Pencil Modifiers */
+       /* Grease Pencil Modifiers. */
        if (object->greasepencil_modifiers.first != NULL) {
                ModifierUpdateDepsgraphContext ctx = {};
                ctx.scene = scene_;
@@ -1999,7 +1997,7 @@ void 
DepsgraphRelationBuilder::build_object_data_geometry(Object *object)
                        }
                }
        }
-       /* Shader FX */
+       /* Shader FX. */
        if (object->shader_fx.first != NULL) {
                ModifierUpdateDepsgraphContext ctx = {};
                ctx.scene = scene_;
@@ -2040,9 +2038,7 @@ void 
DepsgraphRelationBuilder::build_object_data_geometry(Object *object)
        if (ELEM(object->type, OB_MESH, OB_CURVE, OB_LATTICE)) {
                // add geometry collider relations
        }
-       /* Make sure uber update is the last in the dependencies.
-        *
-        * TODO(sergey): Get rid of this node. */
+       /* Make sure uber update is the last in the dependencies. */
        if (object->type != OB_ARMATURE) {
                /* Armatures does no longer require uber node. */
                OperationKey obdata_ubereval_key(&object->id,
diff --git a/source/blender/depsgraph/intern/node/deg_node_operation.cc 
b/source/blender/depsgraph/intern/node/deg_node_operation.cc
index 68a359a09ed..90044519596 100644
--- a/source/blender/depsgraph/intern/node/deg_node_operation.cc
+++ b/source/blender/depsgraph/intern/node/deg_node_operation.cc
@@ -64,6 +64,7 @@ const char *operationCodeAsString(OperationCode opcode)
                case OperationCode::RIGIDBODY_TRANSFORM_COPY:
                        return "RIGIDBODY_TRANSFORM_COPY";
                /* Geometry. */
+               case OperationCode::GEOMETRY_EVAL_INIT: return 
"GEOMETRY_EVAL_INIT";
                case OperationCode::GEOMETRY_EVAL: return "GEOMETRY_EVAL";
                case OperationCode::GEOMETRY_SHAPEKEY: return 
"GEOMETRY_SHAPEKEY";
                /* Object data. */
diff --git a/source/blender/depsgraph/intern/node/deg_node_operation.h 
b/source/blender/depsgraph/intern/node/deg_node_operation.h
index 480b33fad83..3cb49ccebfe 100644
--- a/source/blender/depsgraph/intern/node/deg_node_operation.h
+++ b/source/blender/depsgraph/intern/node/deg_node_operation.h
@@ -84,6 +84,9 @@ enum class OperationCode {
 
        /* Geometry. 
------------------------------------------------------------ */
 
+       /* Initialize evaluation of the geometry. Is an entry operation of 
geometry
+        * component. */
+       GEOMETRY_EVAL_INIT,
        /* Evaluate the whole geometry, including modifiers. */
        GEOMETRY_EVAL,
        /* Evaluation of a shape key. */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to