From 8955ec6776db74b3e09f4ad8fb5cd3fd94f1caab Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Wed, 24 Apr 2019 11:24:45 +0200 Subject: Fix T55326: Massive slowdown when animating material in a highpoly mesh This is a dependency graph part, which is the last required bit to get the issue solved after all the rest of the work done by Clement. --- source/blender/blenkernel/intern/object_update.c | 8 -------- source/blender/depsgraph/intern/builder/deg_builder_nodes.cc | 6 ------ .../depsgraph/intern/builder/deg_builder_relations.cc | 12 ------------ 3 files changed, 26 deletions(-) (limited to 'source') diff --git a/source/blender/blenkernel/intern/object_update.c b/source/blender/blenkernel/intern/object_update.c index 66a3b418f3a..183bc968897 100644 --- a/source/blender/blenkernel/intern/object_update.c +++ b/source/blender/blenkernel/intern/object_update.c @@ -369,14 +369,6 @@ void BKE_object_eval_transform_all(Depsgraph *depsgraph, Scene *scene, Object *o BKE_object_eval_transform_final(depsgraph, object); } -void BKE_object_eval_update_shading(Depsgraph *depsgraph, Object *object) -{ - DEG_debug_print_eval(depsgraph, __func__, object->id.name, object); - if (object->type == OB_MESH) { - BKE_mesh_batch_cache_dirty_tag(object->data, BKE_MESH_BATCH_DIRTY_SHADING); - } -} - void BKE_object_data_select_update(Depsgraph *depsgraph, ID *object_data) { DEG_debug_print_eval(depsgraph, __func__, object_data->name, object_data); diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc index c4a2fc71d1b..a4c269886a3 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc @@ -1177,12 +1177,6 @@ void DepsgraphNodeBuilder::build_object_data_geometry(Object *object, bool is_ob op_node->set_as_exit(); /* Materials. */ if (object->totcol != 0) { - if (object->type == OB_MESH) { - add_operation_node(&object->id, - NodeType::SHADING, - OperationCode::SHADING, - function_bind(BKE_object_eval_update_shading, _1, object_cow)); - } for (int a = 1; a <= object->totcol; a++) { Material *ma = give_current_material(object, a); if (ma != NULL) { diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc index 87a8875f819..8955e6c08eb 100644 --- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc +++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc @@ -1904,12 +1904,6 @@ void DepsgraphRelationBuilder::build_object_data_geometry(Object *object) Material *ma = give_current_material(object, a); if (ma != NULL) { build_material(ma); - - if (object->type == OB_MESH) { - OperationKey material_key(&ma->id, NodeType::SHADING, OperationCode::MATERIAL_UPDATE); - OperationKey shading_key(&object->id, NodeType::SHADING, OperationCode::SHADING); - add_relation(material_key, shading_key, "Material Update"); - } } } } @@ -1923,12 +1917,6 @@ void DepsgraphRelationBuilder::build_object_data_geometry(Object *object) OperationKey obdata_ubereval_key( &object->id, NodeType::GEOMETRY, OperationCode::GEOMETRY_EVAL); add_relation(geom_init_key, obdata_ubereval_key, "Object Geometry UberEval"); - if (object->totcol != 0 && object->type == OB_MESH) { - ComponentKey object_shading_key(&object->id, NodeType::SHADING); - Relation *rel = add_relation( - obdata_ubereval_key, object_shading_key, "Object Geometry batch Update"); - rel->flag |= RELATION_FLAG_NO_FLUSH; - } } if (object->type == OB_MBALL) { Object *mom = BKE_mball_basis_find(scene_, object); -- cgit v1.2.3