Gaffer released

Gaffer ALab USD scene courtesy of Animal Logic and the DPEL. Animal Logic ALab Copyright 2022 Animal Logic Pty Limited. All rights reserved.

Gaffer is now available. This release has a major focus on improvements to colour management, with the 3D and UV Viewers now colour managed, new workflows to configure OCIO at both the script and context level, and the ACES Studio OpenColorIO config now used by default. Gaffer 1.3 is a big step forward for all things colour.

In addition to the colour management improvements, the Gaffer release also features significant improvements to image performance, new and updated nodes, a new light tool for manipulating spot lights in the Viewer, further improvements to expansion management, an update to Cycles 3.5, and a variety of other features, fixes, updates and improvements.

Read on for more details, and please refer to the releases page for downloads and the full list of changes.

Color Management Improvements

Updated Default OpenColorIO Config

Gaffer 1.3 uses the ACES Studio OCIO config by default.


Note: This config changes the image working space from linear-sRGB to ACEScg.

For compatibility with existing projects, the previous OCIO config is still available and can be used by setting the $OCIO environment variable to the openColorIO/config.ocio file found in the Gaffer install directory, or configuring the openColorIO.config plug in the script settings to Legacy (Gaffer 1.2).

Colour Managed 3D & UV Viewers

The Scene and UV Viewers now join the Image Viewer in being colour managed, with updated controls to set the View and Display, adjust the viewer exposure and gamma, and solo channels.

The new colour managed 3D Viewer.
Choice of both View and Display.

Gamma Adjustments applied after display Transform

Viewer gamma adjustments are now applied after the display transform. This behaves more like a “display-referred” exposure adjustment and matches common behaviour established in other compositing applications and players.

Script OpenColorIO Settings

The OpenColorIO settings have moved from the application Preferences to the script Settings, allowing per-script customisation of the OCIO configuration.

We have replaced the displayColorSpace plug with a number of new plugs designed to allow greater control over a script’s OpenColorIO configuration.

The script settings window with OCIO plugs
The script Settings window with OCIO plugs.


The config plug defines the OpenColorIO config to use for the current script. This defaults to respecting the $OCIO environment variable, falling back to the ACES Studio 1.3 config when $OCIO is undefined.

Choice of OCIO config for the current script.

Gaffer provides three OCIO configs out-of-the-box:

Working Space

The workingSpace plug defines the color space in which Gaffer performs image processing. ImageReaders will automatically load images into this space, and ImageWriters will automatically convert images from this space.

Choice of working space for the current script.

This defaults to the scene_linear role of the current OCIO config.

UI Display Transform

The colour transform used for showing colours in the UI – in swatches, colour pickers, etc. This is a combination of an OpenColorIO Display and View.

Choice of UI Display Transform for the current script.


Note : The UI Display Transform does not affect Viewers, they each have their own display transform configured in the Viewer itself.

ImageReader Color Space “Automatic” Preset

The “None” preset has been renamed to “Automatic” and now updates to display the name of the automatically chosen colorspace for the file currently being read.

ImageReader nodes using the Automatic colorspace preset. Note how the EXR file shows “Automatic (Working Space)”, while the PNG shows “Automatic (sRGB – Texture)”.

The list of presets displayed in the colorSpace menu is now grouped by family and filtered using the "file-io" category, if the current OpenColorIO config provides it.

ColorSpace presets grouped by family and ordered to match the OCIO config.

OpenColorIOContext Node

OpenColorIOContext is a new node that creates Gaffer context variables to override the OpenColorIO config, working space and variables used by upstream nodes, allowing these to be varied by context.

The OpenColorIOContext node.

The existing context plugs on other OCIO nodes have been deprecated in favour of this node, which provides more functionality and can override multiple upstream nodes at once rather than having to edit the context plugs on each individual node. These plugs will still be visible in existing scripts on nodes where they were already in use, but will be hidden on newly created nodes or nodes without context overrides.

Improved Color Transform Performance

We’ve improved the performance of color transforms and the detection of no-op transforms when converting between the same colorspace via a different name (such as between “scene_linear” and “ACEScg”, which are equivalent in the default ACES 1.3 Studio Config).

Image Performance Improvements

We have significantly improved performance of image nodes that require bulk sampling of pixel data, such as Dilate, Erode, Median, Resize, ImageTransform, Blur & VectorWarp. For example, a Blur with a large radius is now almost 6x faster than it was in Gaffer 1.2.

Performance comparison of GafferImage nodes between Gaffer and Lower results are faster.


VectorWarp has a new Bilinear filter option, for faster but lower quality warping.

New and Updated Nodes


The MeshNormals node can generate smooth (vertex), faceted (uniform), or mixed (face varying) normals, with additional control over the weighting method used to calculate the normal and the thresholdAngle used to determine whether a face varying normal should be faceted or smooth.

The name of the primitive variable containing the computed normal can be specified on the normal plug, allowing for custom normal data to be generated without overwriting the original.


The VolumeScatter node can distribute points throughout a volume, with control over point density and which grid is used for distribution.

Scatter (a.k.a. the node formerly known as Seeds)

The Seeds node has been renamed to Scatter and includes faster performance and a variety of new features.

Scatter can now directly sample primitive variables from the source mesh onto the scattered points via the new primitiveVariables plug.

referencePosition plug has been added to allow point distribution to remain consistent on animated meshes, for example using a Pref primitive variable containing rest positions rather than P.

uv plug has been added to specify the UV set used for point generation.

Scatter also includes:

  • Support for density primitive variable values above 1.
  • Improved numerical accuracy.


Existing scripts using the Seeds node will be automatically updated to use Scatter when loaded in Gaffer 1.3.

ImageReader fileValid Plug

The ImageReader node has a new fileValid plug that outputs True if the required file exists for the current frame.

This joins the availableFrames plug added in Gaffer to simplify image QC networks and make it easier to report missing frames.

The new fileValid plug.

Light Manipulator

Spot lights can now be edited in the Viewer with the new Light Tool.

Adjusting the cone and penumbra angles of a Spotlight with the new Light Tool.

The light manipulator is available by pressing the A shortcut or by enabling it from the Viewer tool bar.

The new light tool icon visible at the bottom of the Viewer tool bar.

With this initial release, spot light cone and penumbra angles can be adjusted. Quad light width and height adjustments are in development and will appear in a future release.

An arc is drawn while the cone or penumbra angle is being adjusted, this provides a visual guide to the current angle and reference to the previous value.

While hovering over or interacting with a light handle, the target plug or edit scope is displayed next to the mouse cursor.

Expansion Management

Gaffer 1.3 includes further expansion improvements, building on the changes released in Gaffer 1.2.

Leaf-level inclusion and exclusion

Visible Set inclusions and exclusions can now be applied to leaf level locations, allowing for even greater control over visibility of individual objects.

Isolating locations in the Viewer by including them and collapsing the hierarchy.
Selectively excluding scene locations while still viewing their siblings.

F shortcut to expand and frame

Prior to Gaffer 1.3, selecting a scene location would result in all Hierarchy Views automatically expanding to and framing that location. We have now replaced this automatic behaviour with user-controlled updates via the new F shortcut. Pressing F while hovered over a Hierarchy View will expand the ancestors of all selected locations, and scroll to the first location found.

Using F to frame selected scene locations in the Hierarchy View.

Red bounds for excluded locations

The bounding boxes of locations excluded from the Visible Set are now subtly tinted red in the Viewer as a hint that the location has been excluded and cannot be expanded.

An excluded bounding box (right) next to a regular expandable bounding box (left).

Cycles 3.5

Cycles has been updated to 3.5 with improved light tree sampling of lights and emissive materials. Light tree sampling is enabled by default, and can be disabled via the CyclesOptions node. The emission sampling method can be adjusted via the CyclesAttributes node.

Gaffer 1.3 also adds support for rendering with path guiding. Path guiding is disabled by default, and can be enabled and configured via the CyclesOptions node.

Appleseed Removal

Since 2014, Gaffer has supported rendering with Appleseed, included out-of-the-box via an integration generously contributed by Esteban Tovagliari.

Unfortunately, as Appleseed hasn’t seen a release since the Appleseed 2.1.0-beta in 2019, maintaining its integration has become increasingly difficult, so we have removed Appleseed support in Gaffer 1.3. Gaffer continues to ship with an open source renderer out-of-the-box, now in the form of Cycles.

Many thanks to Esteban and the entire Appleseed team for all their contributions and for playing such an important role in Gaffer’s journey to this point.

Dependency Updates

USD has been updated to 23.05 and is now built with MaterialX 1.38.4.
OpenImageIO has been updated to
OpenColorIO has been updated to 2.2.1.
OpenEXR has been updated to 3.1.7.
Imath has been updated to 3.1.7. Release Notes

For a full list of improvements and changes in Gaffer please refer to the release notes.

Leave a Reply