Great news! This will make a lot of people happy ;) > * Noodles * > I assume (but have not investigated) that when noodles are > created/modified/removed the system just sets all nodes to modified. > When you know the connected sockets before and after the action you can > find the actual nodes that needs to be recalculated. Lukas did a patch > on this, but we need to research how to incorporate it into the > compositor code.
Some explanation: The old compo system used a single per-node flag "need_exec", which was basically set every time anything in the node tree changed. The patch [1] replaces this system with a more flexible solution: 1) Both nodes and sockets now have "update" flags (iirc similar to "recalc" in other parts of Blender, maybe rename it). These can store a variety of flags to distinguish different update types, such as property changes or relinks. All updates can be handled locally (nodes do not need to look beyond their own state): if a node is added or removed it will tag connected nodes and trigger correct updates that way. 2) Tagging nodes from updates and then invalidating a cache or flagging for execution are two separate steps. The node editor only sets generic update flags, while the compositor itself is then responsible for deducing cache state from that (this happens in a general tree callback). This way the system is open to future use without a comparable cache feature. If more detailed information about types of changes is required for the cache system it can be added, but i think the flags are quite exhaustive already. Regards, Lukas [1] http://www.pasteall.org/39259/diff _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
