← All ideas
  • Published 28 Aug 2019

compositor re-render upstream nodes only

compositor re calculates all nodes, even those downstream from changes. This should be changed so only upstream nodes are re-calculated.

Makes no sense waiting 10 seconds for the denoise node to re-process if you add a colour correct node after it...

100%

Development Status: Open

Upvote 15 Downvote 0
3di
28 Aug 2019

7 Comments

jason

I'm pretty sure this is being worked on. The issue is that Blender's compositor doesn't currently cache results at each node, so every change requires rebuilding the output image. And the solution is a little bit more complex than "just add caches at every node in the tree" because that can get to be expensive (memory-wise) really quickly. So a structure needs to be designed that can cache node results efficiently.

Maybe the interim solution is to just implement caching on computationally time-consuming nodes (easy enough to figure that out with a profiler). Of course, because that's a case-by-case implementation, it's not exactly generalized or scalable (and therefore more difficult to maintain).

2
lsscpp

* @Jason van Gumster * Another approach could be to let the user set the cache in some "waypoints" of the node tree. The node then should visually tell that it is cached.

I had in mind to make a similar proposal just for the split viewer node: it's so damn dumb to revaluate the whole tree if you just use the slider!

2
3di Author

* @Jason van Gumster * perhaps the change at each node could be cached to the render cache as set up in preferences IO section? Ram wouldn't be an issue then, and loading from disk would still be much faster than re-processing (because you'd only have to reload the node before the one you're tweaking as oppose to all of the downstream nodes).

I don't think only caching expensive node's is a good solution, because you might have one node that takes 10 seconds to process (which would get cached), but then there could be 50 nodes before it that take 0.2 seconds....so you'd still be waiting 10 seconds each time you tweaked an upstream node.

3di Author

* @ Lsscpp * this is a good idea, perhaps in the form of a freeze option on each node, or maybe better a "cache node", as this could give the user the option of where to cache to (ram or disk), so they can avoid tying up ram if necessary.

3di Author

I made an addon which now provides this feature + caching and real time compositing, it's called turbo tools and is available from 3d-illusions.co.uk

lsscpp

yes all what you said!