Blender Git Commit Log
Git Commits -> Revision 5353ae3
December 16, 2015, 12:25 (GMT) |
Separation of dependencies of node trees and their users for compiling vs. evaluation. So far any change in a node tree would cause both a recompile of bvm functions as well as a re-evaluation of any users of that function. This is quite inefficient and should be separated to allow caching of the bvm functions independent from their users. To this end the nodes now have 2 callbacks: one for getting compile deps, the other for getting eval deps. * Compile dependencies are typically other node trees (node groups). In the future this could also be Text datablocks, similar to how OSL script nodes work. * Eval dependencies are all the blend_data blocks that a function might access. For modifier nodes these could typically be meshes, curves; for shaders could be images, textures; and so forth. Separating these dependencies means the bvm functions will have to be recompiled only when the actual bNodes change (add/remove, linking, socket values). Conversely when some modifier input data changes (editing, cfra) the modifier function will be re-evaluated. |
Commit Details:
Full Hash: 5353ae384df3cd28172b9c6e87d8a97703e4876d
Parent Commit: d736d80
Lines Changed: +160, -90
17 Modified Paths:
/release/scripts/nodes/common_nodes.py (+11, -30) (Diff)
/release/scripts/nodes/geometry_nodes.py (+10, -8) (Diff)
/release/scripts/nodes/group_nodes.py (+9, -3) (Diff)
/release/scripts/nodes/object_nodes.py (+18, -6) (Diff)
/source/blender/blenkernel/intern/depsgraph.c (+1, -1) (Diff)
/source/blender/blenkernel/intern/texture.c (+1, -1) (Diff)
/source/blender/blenvm/BVM_api.h (+3, -7) (Diff)
/source/blender/blenvm/CMakeLists.txt (+1, -0) (Diff)
/source/blender/blenvm/intern/bvm_api.cc (+41, -12) (Diff)
/source/blender/depsgraph/CMakeLists.txt (+1, -0) (Diff)
/source/blender/depsgraph/intern/depsgraph_build.cc (+24, -2) (Diff)
/source/blender/depsgraph/intern/depsgraph_build.h (+2, -1) (Diff)
/source/blender/depsgraph/intern/depsgraph_build_nodes.cc (+7, -4) (Diff)
/source/blender/depsgraph/intern/depsgraph_build_relations.cc (+18, -6) (Diff)
/source/blender/depsgraph/intern/depsnode_opcodes.h (+5, -0) (Diff)
/source/blender/makesrna/intern/rna_nodetree.c (+6, -7) (Diff)
/source/blender/render/intern/source/render_texture.c (+2, -2) (Diff)
/release/scripts/nodes/geometry_nodes.py (+10, -8) (Diff)
/release/scripts/nodes/group_nodes.py (+9, -3) (Diff)
/release/scripts/nodes/object_nodes.py (+18, -6) (Diff)
/source/blender/blenkernel/intern/depsgraph.c (+1, -1) (Diff)
/source/blender/blenkernel/intern/texture.c (+1, -1) (Diff)
/source/blender/blenvm/BVM_api.h (+3, -7) (Diff)
/source/blender/blenvm/CMakeLists.txt (+1, -0) (Diff)
/source/blender/blenvm/intern/bvm_api.cc (+41, -12) (Diff)
/source/blender/depsgraph/CMakeLists.txt (+1, -0) (Diff)
/source/blender/depsgraph/intern/depsgraph_build.cc (+24, -2) (Diff)
/source/blender/depsgraph/intern/depsgraph_build.h (+2, -1) (Diff)
/source/blender/depsgraph/intern/depsgraph_build_nodes.cc (+7, -4) (Diff)
/source/blender/depsgraph/intern/depsgraph_build_relations.cc (+18, -6) (Diff)
/source/blender/depsgraph/intern/depsnode_opcodes.h (+5, -0) (Diff)
/source/blender/makesrna/intern/rna_nodetree.c (+6, -7) (Diff)
/source/blender/render/intern/source/render_texture.c (+2, -2) (Diff)