Blender Git Commits

Blender Git "depsgraph_refactor" branch commits.

Page: 27 / 59

May 20, 2014, 19:16 (GMT)
Removed deprecated code.
May 20, 2014, 18:23 (GMT)
Inverted the direction of relations in graphviz debug output to get a better left->right direction and indicate the logical ordering of operations.
May 20, 2014, 18:22 (GMT)
Minor fix for indentation errors.
May 20, 2014, 17:59 (GMT)
Fix for operation categorization by type, NOOP is now the first real operation
type.
May 20, 2014, 16:25 (GMT)
Removed the IDKey for building relations, due to ambiguity and failing to add
relations.

To add a relations between operations we need to address a specific component or
operation directly.
May 19, 2014, 17:41 (GMT)
Transitive reduction optimization for operation relations.

This removed redundant relations between operations, implementing the
transitive reduction algorithm:
http://en.wikipedia.org/wiki/Transitive_reduction

The current implementation is a bit naive, but can be improved later.

Using this optimization gives more flexibility in the build procedure,
since we don't need to have fully defined relations in a component
before adding external relations.

Performance would only be improved in some extreme cases probably
(huge amount of redundant relations), it should be much more dependent
on a good scheduling heuristic.
May 19, 2014, 16:10 (GMT)
Added back registration of operation nodes in the central Depsgraph
container.

Ownership is still a bit mushy here, but at least this makes it easier
to apply algorithms on the operations with a single-level loop.
May 19, 2014, 10:30 (GMT)
Added a few missing debug function stubs for release mode.
May 19, 2014, 08:37 (GMT)
Merge branch 'master' into depsgraph_refactor
May 13, 2014, 16:33 (GMT)
Use current id->component->operation nesting for displaying debug
relations.

Eventually operations will get a single container in the graph, but this
is not working yet.
May 13, 2014, 16:25 (GMT)
Entry/Exit operations in components for replacing outer relations.

Each component now has one designated entry and one exit operation. If
all nodes depend on a single entry/exit already after the main build
step, these will be used directly. Otherwise an explicit No-Op node will
be created to cut down the number of necessary relations.
May 13, 2014, 09:10 (GMT)
Fix for crash when tagging new ID blocks which don't have a depsgraph
node yet.
May 13, 2014, 08:57 (GMT)
Removed the build_operations methods and OperationBuilder class again.

The few places where this has been used (pose and bone components) have
been integrated into the regular build functions.

Eventually we may want to do dispatching like this again, but for the
time being it's easier to keep these things in a central place until it
is clear how the build procedure is best organized.
May 12, 2014, 17:52 (GMT)
Added upcast functions for safely converting a generic ID pointer into
one of the DNA structs.

This uses the GS macro to compare an ID block's prefix to the associated
DNA struct. The static_cast_id variant only does contains an assert,
while the dynamic_cast_id variant safely checks and returns a NULL
pointer in case the ID type doesn't match.

A new utility header for type traits has been added. These are standard
techniques used in boost and C++11, but added as own implementation here
to avoid nasty dependencies.
May 11, 2014, 10:11 (GMT)
Replaced the `validate_links` method by `build_operations`.

The `build_operations` will need to be complemented with all the build
steps for operations currently mixed in with the node/relations builder.
May 11, 2014, 08:35 (GMT)
Added new node method 'build_operations' which will replace the current
'validate_link' for constructing the inner nodes from ID- and component
nodes.
May 11, 2014, 08:29 (GMT)
Removed the unused "Color" enum.

This was part of old depsgraph algorithms, but is not used in the new
code so far. Can be added back easily if required, but preferably in a
more transparent way (color meaning is far from intuitive).
May 11, 2014, 08:26 (GMT)
Clean up DepsNode flag fields.

The OperationDepsNode.flag field would shadow the DepsNode.flag field.
These flags are only used for eval tagging atm, so it's safe to move
these into the OperationDepsNode class.

If necessary, similar flags for "directly modified" etc. could be added
to ID nodes or components too, but they can and should be conceptually
separate and use a non-conflicting flag in the respective subclasses.
May 11, 2014, 06:46 (GMT)
Moved relations from generic DepsNode base class into OperationDepsNode.

Rationale here is that only relations between operations matter for the
final evaluation. Keeping this specific makes it easier to avoid
implicit assumptions and confusing upcasts in the evaluation code.

Relations between "outer" nodes (ID nodes and components) will be
translated directly into relations of their inner operation nodes (this
will require fully built operations lists at the time relations are
constructed). Higher level relations may be used for debugging purposes,
but they are not required for evaluation and should be handled in a
separate structure.
May 7, 2014, 13:53 (GMT)
Fix for strict compiler flags: Avoid variable declarations after code.
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021