Depsgraph: Bind base by it's index

For the performance we convert object bases list to an array
during view layer evaluation. This makes it possible to have
very cheap index-based base lookup.

The goal of this change is to get rid of base used for function
binding, and avoid scene datablock expansion at the depsgraph
construction time.
This commit is contained in:
2018-04-11 12:39:36 +02:00
parent 9c406b786f
commit fac1892e11
9 changed files with 53 additions and 25 deletions

View File

@@ -171,10 +171,10 @@ struct DepsgraphNodeBuilder {
ViewLayer *view_layer,
eDepsNode_LinkedState_Type linked_state);
void build_group(Group *group);
void build_object(Base *base,
void build_object(int base_index,
Object *object,
eDepsNode_LinkedState_Type linked_state);
void build_object_flags(Base *base,
void build_object_flags(int base_index,
Object *object,
eDepsNode_LinkedState_Type linked_state);
void build_object_data(Object *object);
@@ -242,6 +242,7 @@ protected:
/* State which demotes currently built entities. */
Scene *scene_;
ViewLayer *view_layer_;
GHash *cow_id_hash_;
BuilderMap built_map_;