After 10+ years (honestly, we’ve lost count), and 300 released versions, Gaffer has turned 1.0.
We’re extremely proud to announce the release of Gaffer 22.214.171.124, bringing significant improvements in usability and interoperability. Not to mention the first release of a major update to the Viewer providing support for hybrid rendering, allowing high quality preview of lighting and shading while interacting with scenes.
The Viewer is now configurable between the traditional OpenGL mode, and a new hybrid render mode where raytraced geometry is combined with OpenGL representations of manipulators, lights and cameras.
With a focus on interactivity, a number of presets are provided to help optimise viewport renders independently of traditional interactive or batch renders. Further customization of this behaviour can be easily achieved by modifying the renderer specific Viewer settings, conveniently editable as a Gaffer script.
Arnold is currently supported, with other renderers to be added in the future.
Multi-part OpenEXR Improvements
We’ve improved support for reading multi-part EXR files written from other DCCs, particularly improving support for reading multi-part EXR files written from Nuke. The ImageReader’s new channelInterpretation plug provides control over the input mapping. With additional modes supporting strict adherence to the OpenEXR specification, as well as a legacy mode providing backward compatibility with previous Gaffer releases.
New functionality has been added to the ImageWriter to allow for writing multi-part EXR files. The ImageWriter’s new layout plug provides control over the part and channel naming of the output image. A number of presets are provided here allowing for writing images conforming to the OpenEXR standards, or matching the behaviour of other DCCs such as Nuke. A “custom” mode provides fine grained control over both part and channel naming.
Image nodes can now output multiple “views”. Views can be thought of as independent images supporting separate data windows, formats, channels and metadata. Traditionally multi-view images have been used mainly for stereo work, but in Gaffer we’re keen to use them as a general purpose mechanism for passing multiple images in a single data stream. For instance, views can also be a mix of deep and flat images, allowing for convenient packaging of deep and flat data while working with images within Gaffer.
The Viewer provides a new UI widget for selecting the view to display, as well as hotkeys for toggling between views.
UsdLux lights can now be loaded from USD files, with each being read as a generic light ready for conversion to lights specific to your desired renderer. Currently this conversion can be performed manually via the ShaderQuery node introduced in Gaffer 0.61.9.0, but we plan to include automatic conversion for supported renderers in the near future.
The UsdLayerWriter node introduced in Gaffer 0.61.13.0 compares two scenes and writes the differences to disk as a minimal USD file. This enables workflows such as using Gaffer to author shaders within a USD based pipeline, where the shader networks and their assignments are written to their own file ready to be layered with geometry and animation in Gaffer or other hosts with USD support.
Other more general scene modifications representable in USD are supported here too, such as in the example below.
We’ve added ContextQuery – a node that provides simple and direct access to context variables. ContextQuery provides significantly increased performance over the use of Python expressions for querying context variables, and is the now recommended approach.
Other Notable Improvements
Image channel names are now sorted in “natural order”, where numerical parts of channel names are sorted by value rather than alphabetically. This allows for “lightGroup10” to appear more naturally sorted after “lightGroup9”, rather than “lightGroup1”.
We’ve improved performance of the Light Editor & Scene View Inspector when viewing complex scenes.
Arnold render outputs now support custom naming of channels in EXR outputs via the layerName string parameter.
Arnold render outputs now support a layerPerLightGroup boolean parameter, which automatically splits outputs into separate layers, one for each light group.
Spreadsheet nodes now have an added activeRowIndex plug, which outputs the index of the currently active row.
We’ve added support for reading and writing JPEG 2000 (.jp2) images.
The full list of new features, improvements, and fixes released in Gaffer 126.96.36.199 can be found here.