Blender Git Commits

Blender Git "depsgraph_refactor" branch commits.

Page: 15 / 59

December 29, 2014, 23:52 (GMT)
Fix for scons
December 29, 2014, 23:34 (GMT)
Temporary placeholder solution for getting dependencies on geometry working again

The real solution here is to ensure that we have the proper/intended entry/exit ops
(with the corresponding opcodes) included in the graph
December 29, 2014, 23:34 (GMT)
Added some asserts, suggested by Sergey
December 29, 2014, 15:29 (GMT)
Depsgraph: Reshuffle functions so it's more clear what is a stub and what is to be re-implemented
December 29, 2014, 15:23 (GMT)
Depsgraph: Get rid of redundant depsgraph initialization call

Better to keep it a single public function call which we'll just
rename in the future.
December 29, 2014, 13:45 (GMT)
Depsgraph: Add option to disable legacy depsgraph

This way it's becoming simplier to see missing parts from outside
of the depsgraph core in order to port all the things into the new
system.

Old dependency graph is enabled by default for all build systems.
December 29, 2014, 12:35 (GMT)
Merge branch 'master' into depsgraph_refactor
December 24, 2014, 09:46 (GMT)
Depsgraph: Implement real node layers flush

It's not optimal at this moment, to optimize such a traversal we'd need to have
some ID level dependencies, so we can query much faster which IDs depends on
which else IDs.
December 24, 2014, 08:07 (GMT)
Merge branch 'master' into depsgraph_refactor
December 19, 2014, 14:07 (GMT)
Depsgraph: Initial support for skipping invisible IDs update

General idea is quite simple here:

- Store layers in the IDDepsNode (same as we did in the old dependency graph).

This layer would correspond to ID layers themselves plus layers of nodes which
depends on it.

Here's where first tricky part begins: i'm not sure how we could flush layers
between nodes. Basically because it's totally unclear how do we perform full
DFS nowadays. Previously it was simple because of having root node and knowing
for sure nodes which doesn't have dependencies. Would need to think a bit how
to do it now.

- We keep track of currently visible layers.

Here's where tricky parts continues. basically the question is: where do we
store currently visible layers? Evaluation context comes in mind, but that'd
be wrong idea. basically because evaluation context is shared between scenes
and since it's possible to have two different scenes visible we can not store
single value.

So for now we store visible layers in the depsgraph itself. This way we're
decoupling visible layers between scenes. This is temporary solution for
until we'll have some more centralized storage. Should be easy to move stuff
around anyway, so wouldn't be so much fussed about this.

Another tricky part here is the render engines. Currently there's no visibility
check performed for render engine update.

So after all it seems we'll need to store visible layers somewhere and pass
what layers we're currently interested in to the depsgraph evaluation, making
it so we can easily use the same graph for viewport and render engine and
perform all the visibility checks we want.

- We don't schedule invisible IDs during evaluation.

We instead put them to the "to be updated when becoming visible list". Now,
this list is a bit of an overkill, would be better to have some sort of legacy
(ID->flag & ID_NEEDS_UPDATE) flag, but since we're currently not really sure
what the storage for such a flags would look like we'll keep a temp list for
now. Again, it'll be easy to change in the future, so wouldn't be fussed here
as well.

- When visibility changes depsgraph updates visible layers and re-schedules
updates of previously invisible objects.

TODOs:

- Implement layers visibility flush.
- Make sure set scenes works all nice.
- Move temp storage to somewhat final storage (well, implement that final
storage first :)
December 19, 2014, 13:18 (GMT)
Depsgraph: Remove unused includes
December 19, 2014, 12:54 (GMT)
Tweaks to where placeholder ops for geometry eval go

The original intention here was that operation nodes for geometry would go
on the geometry datablocks. Currently, these are added to the object datablock
instead so that it works with old files.

The main result of this change is a lot of the relation-building code now works
correctly again, since there's only a single node again in the geometry component there.
December 19, 2014, 12:54 (GMT)
Stop handling pose eval in obdata ubereval
December 19, 2014, 12:50 (GMT)
Depsgraph: Fix wrong memory access in debug dump

It's not possible to have stuff like

const char *foo = bar().c_str()

in cases when bar() returns dynamically allocated string.
December 19, 2014, 09:17 (GMT)
Depsgraph: Add utility functions for eval_ctx allocation/free

This started as an experiment about different aspect of dependency graph,
but this is gonna to be handy anyway when we'll need to couple evaluation
context with the storage.
December 19, 2014, 08:51 (GMT)
Merge branch 'master' into depsgraph_refactor
December 19, 2014, 08:42 (GMT)
Depsgraph: Code cleanup, unneeded forward declarations
December 19, 2014, 00:54 (GMT)
Drivers affecting modifiers now get hooked up to the relevant modifier node
December 19, 2014, 00:14 (GMT)
Code cleanup: Reshuffled + removed duplicate lookup
December 18, 2014, 15:37 (GMT)
Depsgraph: Code cleanup, no need to have public deg_schedule_children now
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021