Depsgraph: Avoid transitive relation from local transform to final

There is always an uber eval node on the way. so we can avoid creating
some relations here in order to speed up both construction time and
evaluation.
This commit is contained in:
Sergey Sharybin 2016-12-05 15:59:31 +01:00
parent 5c4c2bebaa
commit 10ce1eea3f
1 changed files with 12 additions and 6 deletions

View File

@ -406,12 +406,18 @@ void DepsgraphRelationBuilder::build_object(Main *bmain, Scene *scene, Object *o
add_relation(ob_ubereval_key, final_transform_key, DEPSREL_TYPE_COMPONENT_ORDER, "Temp Ubereval");
}
else {
/* operation order */
add_relation(base_op_key, final_transform_key, DEPSREL_TYPE_COMPONENT_ORDER, "Object Transform");
// XXX
add_relation(base_op_key, ob_ubereval_key, DEPSREL_TYPE_COMPONENT_ORDER, "Temp Ubereval");
add_relation(ob_ubereval_key, final_transform_key, DEPSREL_TYPE_COMPONENT_ORDER, "Temp Ubereval");
/* NOTE: Keep an eye here, we skip some relations here to "streamline"
* dependencies and avoid transitive relations which causes overhead.
* But once we get rid of uber eval node this will need reconsideration.
*/
add_relation(base_op_key,
ob_ubereval_key,
DEPSREL_TYPE_COMPONENT_ORDER,
"Temp Ubereval");
add_relation(ob_ubereval_key,
final_transform_key,
DEPSREL_TYPE_COMPONENT_ORDER,
"Temp Ubereval");
}