November 7, 2014, 11:47 (GMT) |
Depsgraph: Experiment with time source dependnecy update Goal is to be able to play animation back for investigating how flush happens, how object dependencies are being evaluated and all the rest of the stuff which isn't so visible with the static scene. Main idea here is to have a relations in the depsgraph between the time source node and all the nodes which depends on time. We go with the relations approach in order to make it fast to figure out which nodes are to be tagged for updated when the time changes. It is faster to iterate over the time dependencies rather than iterating over the whole depsgraph, Now, currently dependency graph's relations links only possible between operation nodes. For this reason we don't use actual dependency structure to define relations between time and nodes, but we've got a list of nodes which depends on time stored in the time source node. This is the most simple way to deal for now. Currently we use relation between time and ID nodes, which corresponds to how current depsgraph works, in the future we'll likely need to make it relation betteen time source and individual components. Or maybe even revisit the time flushes.. |
November 7, 2014, 10:03 (GMT) |
Merge branch 'master' into depsgraph_refactor |
November 6, 2014, 13:11 (GMT) |
Depsgraph: Add dedicated file for all possible object update callbacks Currently it's quite small, but in the future we'll have all possible depsgraph update callbacks in there. |
November 6, 2014, 12:49 (GMT) |
Depsgraph: Add ubernode which evaluates the whole object This way we mimic old depsgraph behavior where each object is effectively a single node in the dependency graph which takes care of all the updates. But actually this node only takes care of the modifiers, expecting that the constraints and so are solved by the local object transform node. Not sure how much valid the assumption at this state, but it's something to aim to. |
November 6, 2014, 12:32 (GMT) |
Depsgraph: Evaluation callbacks now accepts evaluation context as a parameter This is how current actual update functions are expected to behave, plus it'll be needed in the future for such things as copy-on-write and so. |
November 6, 2014, 10:36 (GMT) |
Depsgraph: Playback doesn't crash now The time source is expected to be in the root depsgraph node for now, so we should add it to there instead of the scene node. This raises some questions: - Who don't we have Scene ID node in the graph so far? - Do we really need a time as an operation node, or it's something more up to the EvaluationContext. Later one raises the bigger design question: what should we try to do with the depsgraph and what is we're gonna to solve with the evaluation context? The answer here should be: everything which describes the (sub)graph state should be in the evaluation context. This way this context will finally become some key which totally corresponds to the (sub)scene state. |
November 6, 2014, 10:25 (GMT) |
Depsgraph: Make update for new frame closer to the master as well |
November 6, 2014, 10:15 (GMT) |
Depsgraph: Remove RNA call to rebuild the DAG It is now should happen automatically from the scene update, should be no need in manual tricks now. |
November 6, 2014, 10:14 (GMT) |
Depsgraph: Make scene evaluation closer to the master This means BKE_scene_update_tagged() will now do the same callbacks and sound system updates as the old implementation does and will only replace scene update with new code. This is aimed to solve the following issues: - Adding new objects doesn't abort anymore, this is because old code was rebuilding the depsgraph from the scene update function in cases DAG is NULL. Don't see why not to do the same with the new dependency graph for now. - Callbacks are being executed properly, which should make scripts happy. Well, nobody uses this branch yet, but it's good thing to do and easy to support anyway. - Hopefully rendered viewport will be also happier now because the render engine update is now called for new depsgraph as well. |
November 6, 2014, 10:03 (GMT) |
Merge remote-tracking branch 'origin/master' into depsgraph_refactor |
November 6, 2014, 09:29 (GMT) |
Depsgraph: Solve some compilation issues on my laptop All the changes seems small but still legit to have so everyone is happy. |
November 5, 2014, 18:20 (GMT) |
Depsgraph: Don't use smart templated ID pointer casts Replace smart templated functions which used to cast ID pointers with explicit id struct member usage. This makes code easier to follow and understand what exactly is going on, don't introduce overhead into code. Plus it's helps with debugging by skipping entering all that internal template methods things. |
November 5, 2014, 17:08 (GMT) |
Merge branch 'master' into depsgraph_refactor |
October 20, 2014, 09:42 (GMT) |
Merge branch 'master' into depsgraph_refactor |
October 13, 2014, 14:20 (GMT) |
use proper evaluation context instead of enum flag Depsgraph evaluation would need to have proper evaluation context in the future anyway, where some COW data might be stored. it was also kind of weird to have another set of enum flags defining how evaluation should happen. |
October 13, 2014, 13:44 (GMT) |
Experiment with a real local object transform calculation Now moving object with the new DAG appears to work. |
October 13, 2014, 13:09 (GMT) |
Cleanup: Use generic task scheduler instead of own one helps to get rid of some of the utility structures which only adds extra complexity to the code. Let's keep new depsgraph as clean and small as possible! :) |
October 13, 2014, 12:28 (GMT) |
Cleanup: Remove transformation matrix classes Not sure why depsgraph should actually care about transformation, and for sure it's kinda weird to have wrappers. It's a blender core and better to avoid using wrappers/abstractions in here. The idea is to not store data in the depsgraph anyway, but use an evaluation context for this instead. |
October 13, 2014, 09:48 (GMT) |
Merge branch 'master' into depsgraph_refactor |
October 10, 2014, 14:52 (GMT) |
Merge branch 'master' into depsgraph_refactor Also made sure it compiles here. Conflicts: source/blender/blenkernel/intern/scene.c source/blender/blenlib/BLI_utildefines.h source/blender/editors/space_info/CMakeLists.txt source/creator/CMakeLists.txt |
|