Blender Git Commit Log

Git Commits -> Revision 5353ae3

Revision 5353ae3 by Lukas Toenne (object_nodes, strand_nodes)
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)
By: Miika HämäläinenLast update: Nov-07-2014 14:18MiikaHweb | 2003-2021