Compositor improvements

Blender’s compositor is a great tool, but it needs some love. With this thread I’m hoping to collect enough user ideas and feedback to eventually create a complete and valuable proposal for improving the compositor.
Once we have a good pool of ideas we will start working on a design document and possible functionality mockups so we can give the foundation or an interested developer a good base layer to work from.

On an initial phase all ideas are welcome, please post all of your ideas, they don’t need to be fully developed. I will collect them all in a document that we can then use to organize ideas by priority, and elaborate proposals for each one.

All ideas show be presented in the following format.

Idea name – Brief description of the idea – Additional notes

This will help collect all ideas in a consistent way.

Please note, this thread is not intended as a criticism of Blender developers or the work they’ve done in the compositor but instead it should be a forum for constructive ideas and a place where we’ll create helpful, complete and detailed proposals that the developers can then build upon.

13 Likes

Here’s my initial list of improvements I’d like to see in the compositor. I’ll keep adding more as I think about them…

  • Scene node – A node that allows to import the render of a scene – This node could have it’s one render settings, like render engine, sampling and camera to render, and would allow to include a scene anywhere in the composite.
  • Texture out node – A node that allows to output a node chain as a texture to be used in materials, modifiers, etc… – This would allow for example, for 2D graphics created in the compositor to be used in 3D comps.
  • Caching node – A node that allows to cache to disk the result of the node tree up that that point – This allows to improve performance by not having to recalculate the whole node tree everytime.
  • Texture nodes – Several nodes to generate textures, like checkerboard, clouds, gradient, etc… – Textures are used for all sorts of things in compositing workflows (masking, graphics, etc).
  • Independent compositor – Add an option to use the compositor separate from a scene. With it’s own resolution, inputs and outputs – This will allow the compositor to be used a a real compositing tool and not just a complement to the 3D workflow.
  • Multiple viewers – Allow for the possibility of having multiple viewers connected to different points in the node graph – This is often needed to compare color and effects, or to work on parts of the composite while seeing the final result in a different viewer.
  • 2D Text – Add a node to create text – The name says it all.
  • Time remapping node – A node to slow down/accelerate footage items – This node could allow for frame blending as well as OpticalFlow like slowing down of footage as well as non linear remapping.
  • Channel combiner node – A node to re-arrange or combine channels of one or multiple images. – Right now this is kind of possible by using several Separate RGBA with Combine RGBA nodes. But this is an unnecessarily complicated workflow. This node would allow to just pick what channel from each input image you’d like to keep and output a new image with said channels.
  • Distortion nodes – Add additional distortion nodes to allow for geometrically manipulate images, like mesh warp, reshape or displacement map – Especially mesh work is essential in compositing workflows as it allows to manipulate images to fit the desired needs.
  • Particle system node – A simple particle system for compositor use – An advanced 3D particle system is not always needed. Sometimes a simple 2D/3D particle system is all that is needed to add some compositing effects in post.
  • File output render – Add separate render button for the file output node – The file output node should be able to render it’s output separately from the master render button. This would also allow to have multiple file output nodes and render them as needed.
  • Better Gizmos – Nodes with transform controls nodes should have gizmos to facilitate moving them in the viewer – This would not only improve workflow but also match functionality with other parts of blender 2.8 series. Additionally other controls could have gizmos too…
  • Sync playback – Have an option to sync the playback on the timeline to the compositor output – It should be possible to playback the result of the compositor without skipping frames. Even if it comes at cost of not playing in realtime.
  • Timeline caching – Cache the timeline after an initial play-through so on a second play through the video can play in real time – This is needed to be able to preview animation and other effects in a composite.
  • Revised Keymap and UI for the mask editor – The UI and Keymap for compositing should be inline with rest of Blender – The mask editor still uses some outdated keyboard shortcuts that don’t match the rest of Blender and are not shown anywhere in the UI. The toolbar does not reflect blender’s 2.8 new UI.
  • Better tracker integration – The motion tracker should be better integrated with the compositor – Right now the tracker is separate from the compositor. It would be better if we could have it as a node so we could more easily use the results in the compositor.
  • Range on file output node – Allow for in and out frame range to be set on file output node separately from scene – The file output node should be able to set a specific frame range.
15 Likes

First and foremost, better performance: ⚓ T74491 Compositor improvement plan :slight_smile:

6 Likes

I agree, better performance is important. But it doesn’t mean we can’t gather ideas for future features. Things take time to develop and formalize.
Performance improvements already have a task, which is great. Maybe when that task gets completed we have a good suggestion list for further improvements.

This suggestion is similair to Jomo’s suggestion regarding a cache node, but is more automated.

Whenever a node in the network is changed, the pixel result before that node is cached automatically, since its likely that the used will continue to change that node or a node later in the node connection.

10 Likes

Performance is by far the biggest compositor issue, IMO. No matter how many features you add, the compositor isn’t going to be significantly better to work in if every change requires a 10sec update. The feature set is perfectly fine for slap-comps and render finishing, it’s just incredibly slow.

2 Likes

What about a node for anti-aliasing, some render passes don’t have anti-aliasing so this node could be helpful when you’re using a render pass without anti-aliasing

5 Likes

This is a great idea. Alternatively, if this is too resource intensive or we want more control over the caching there could be a “cache” checkbox in every node that when checked would cache everything up to that point.

That’s an interesting idea and I imagine could be done with something like FXAA for example.

But I believe some of the non-anti-aliased passes are like that on purpose. I’ve always heard that z-depth should not be anti-aliased for example…

1 Like

Ever since the Z-depth was invented people tried to “anti-alias” it which is complete nonsense… :joy:

2 Likes

https://developer.blender.org/D2411

2 Likes

Agreed, performance is a big issue. As @ThinkingPolygons mentioned, it’s already being addressed, or at least considered.
But once we have better performance, there’s some features missing IMO. The current toolset is ok for a simple comp or color correction, but it’s limited if we want to do any serious compositing work.

1 Like

Sequencer integration by having a Sequencer Strip In/Out node.

9 Likes

How about support for OpenFx ?!

8 Likes

I’m open to that. Assuming the OpenFX license is compatible with Blender’s license this could easily give Blender access to hundreds of tools overnight.

3 Likes

Natron is GPL and uses OpenFX. So I guess it shouldn’t be a problem.
IMHO if you’re calling something “OpenFX” then it better be open!!! :joy:

3 Likes

Color Space Transformation Node

6 Likes

i hate to say, that for the most part, i jump into aftereffects for additional comping and mastering after blending.
i dream of the ability to place a strip on the timeline, than double click it, thereby transfering to a separate comp/scene, automaticaly generated for this strip, with its standalone compositor, its own timelines
(track/vse-timelines you would place footage on - or scenes - and where you place them would directly affect in and out of that clip in the comp, one could use these tracks in this sub-compositor as a node similar to renderlayers - track1-node) - exiting out, you only comped/changed that particular strip in the mastertimeline

similar to Pre-Comps in Aftereffects or Containers on Avid Systems

would that be a sequencer strip @tintwotin?

it helps tie ends together doing it this way

4 Likes

@Jomo Small note. This topic will inevitably turn into mess at some point, probably really fast. :wink: I suggest to add a deadline for gathering ideas and brainstorming and after that close topic (ask mods for that). Then proceed to making structured technical proposal with few most active topic contributors.
Ideas are “free” and take no time, proper design takes ages.

6 Likes

If I recall correctly, years ago I asked for this, and the developers talked about how clunky and slow OpenFX tools are, and that’s it’s much more efficient for the to create specific tools themselves.

1 Like