[Bf-committers] Compositor tile cache [2/2]

Lukas Tönne lukas.toenne at gmail.com
Tue Jan 29 12:58:44 CET 2013


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


More information about the Bf-committers mailing list