Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes.cc21
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.cc14
-rw-r--r--source/blender/depsgraph/intern/node/deg_node_operation.cc1
-rw-r--r--source/blender/depsgraph/intern/node/deg_node_operation.h3
4 files changed, 17 insertions, 22 deletions
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. */