From BlenderWiki

Jump to: navigation, search

Blender 2.67: Compositing Nodes

Border Compositing

Border for compositor viewer node is now supported, (r55093).

This border is used to define area of interest of viewer node which restricts compositing to this area. Used for faster previews by skipping compositing outside of the defined area of interest. This is only a preview option, final compositing does not depend on this border.

Border is defined using CtrlB on a backdrop in nodes editor.

Border Rendering

Restrict compositing to a render border to speed up overall rendering time, (r55450).

Using border rendering with cropping enabled will give proper compositing results, (r55469). Before alpha-over a rendered objects on footage was a way off from where it shall be.

Optimization

  • Disable viewer nodes and previews when rendering in background mode, (r55240).
  • Skip composite output nodes when editing node tree and render result is not visible. Same for viewer nodes - skip them if no backdrop or image viewer images are visible, (r55451)

Buffer Groups

There's an option called Buffer Groups which deserves more detailed explanation.

What it does is faster improving compositing speed in cost of more memory usage. It'll only be noticeable when there're group nodes in the compositing setups and complex operations (such as blur, lens distortion, etc) are used in or after group nodes.

Let's see how this node setup will work with and without Buffer Groups enabled.

Blender2.67 GroupBufferNodeSetup.png

Gamma Correct and RGB Curves are simple operations, which depends on a single input pixel. Bokeh Blur is a complex operation which depends on multiple pixels.

Gamma Correct will call Bokeh Blur operation for every pixel in the frame. Bokeh Blur will run RGB Curves operation multiple times for every pixel in the frame.

So, this leads to a situation when every compositor output node will run RGB Curves multiple times for the same pixel. This is slow, but it keeps memory usage low.

Now, when Buffer Group is enabled, Group (which in this case only consists of a single node) will be surrounded by additional image buffers, with the size of render resolution.

This makes it so, Bokeh Blur will run RGB Curves one single time for given pixel and will store result in group's input buffer. This value will be reused by all other pixels of compositor output which depends on it.

Same goes to nodes after Group: they'll run operations from this group one single time for every pixel, and if some nodes depends on multiple pixels first value will be reused.

This leads to faster compositing, but more memory usage. In this simple example case speed improvement will be not so much noticeable, but imagine you've got hundreds of nodes in group, and the same huge number of nodes after/before group. In this case it caching result of subtree makes compositing much noticeable faster, because it avoid re-running lots of operations for the same pixel.

Smaller Features

  • Print compositor execution statistics (tile number, memory usage) when rendering in background mode, (r55217, r55241).