Another summer update, and another major release!
This latest update brings a medley of interface features, changes, and improvements to make the main Gaffer application that much friendlier to use. The most prominent changes are to the interface itself, which has received a visual overhaul, the addition of drag-and-dock tabs and multi-window layouts, different editor following states, and the new UV Inspector. A flexible window and tab system has been one of the most requested interface enhancements for a few years now, and we’re very proud to have finally brought it to fruition.
On the node side of things, we’ve made notable improvements to the way you interact with OSLObject and OSLImage nodes. We’ve also added a few new nodes into the mix, such as the Arnold LightBlocker node.
As with our last major release, there are some breaking changes with older scripts that you should check up on, as well as some new articles for your perusal and edification in the documentation.
The changelogs for this release are here and here, but they are very long reads, in full. To save you some time, we’ve provided a summary of the most important changes below.
- New Editor linking and following:
- Editors can be linked. For example, editor A () can be linked to editor B () to match whichever node that editor B is viewing.
- Editors can follow the scene selection (), viewing the node that generates the selected object.
- New UV Inspector:
- Displays the scene’s unwrapped meshes and textures in UV space.
- Updated Node menu search:
- Now uses improved fuzzy matching, giving you far better results.
- Much improved detection of partial words:
- Terms can be out-of-order:
mat osl →
- The order of search results is more intelligent, prioritising whole-word matches over partials.
- Searches with no results appear red.
- Updated Window layouts:
- Each open graph now supports multiple editors in multiple windows.
- You can now rearrange tabs, drag tabs between panels, drag tabs between windows, and detach panels and tabs into their own separate windows.
- Saving a layout will now preserve the position, size, and full-screen state of all windows.
- Updated UI Editor:
- You can now assign custom icons to a node:
- An implementation of Arnold’s scene-space light blocker.
- Converts primvar orientation representations, and optionally randomizes their rotations.
- Supports Euler angle, matrix, aim vector, quaternion, and axis-angle representations.
- Shades objects in the Viewer with colors based on their set memberships.
- Supports both random and chosen colors.
- Added a new interface for writing primvars. This replaces all of the OSL Out[Primvar] nodes. You no longer need to terminate OSL shader networks with an Out[Primvar] + OutObject node combination.
- Added a Use Attributes plug, which allows OSL shaders to query the scene’s attributes.
- The node’s interface now supports image channel management. This replaces the OutImage, OutLayer, and OutChannel nodes.
- Added the Default Format plug. This allows OSLImage to be used to generate images/patterns without an input image.
- Added a filter input so that these nodes can operate on multiple locations in the input scene at once. For example, one Instancer node could instance an asset (
/assets/flower) onto multiple point clouds (
/assets/bed2/points) from a single scene input, whereas before you would need multiple Instancer nodes to accomplish this.
- OSL networks saved in Gaffer 0.54 will not open in earlier versions. If you have critical production graphs built in 0.53 or earlier, do not open and save them with 0.54. If you save a script with OSLObject/OSLImage nodes in Gaffer 0.54, they will only work with Gaffer 0.54 – there’s no going back.
- OSL networks saved before Gaffer 0.45.0.0 are no longer compatible.
- For OSL networks saved before Gaffer 0.54.0.0 that query object transforms, the OSLObject’s new
useTransform plug must be checked.
- Removed support for the
scene:path context variable in all shader and OSL networks. To enable temporary backwards compatibility for rendering, use the following environment variables:
- ShaderAssignment node: Set
- OSLObject node: Set the