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 |
|