• Added shift+drag of node to panel to create duplicate editor (#575).
  • Added HSV readout for pixel below mouse in image viewer (#576).
  • Improved the UI for Attributes and Options, to distinguish between the boolean used to enable a setting and the boolean used to define the value (#65).
  • Fixed unwanted scaling of Button images.
  • Added a toolbar to the viewer, initially with only a single button for specifying the 3D display style (#114).
  • Improved MenuButton menu positioning.
  • Fixed bug where searchable menus kept keyboard focus after closing.
  • Fixed focus stealing problems apparent in Viewer and NodeGraph. They still take focus on mouse enter, but will not steal focus from text entry widgets (#555, #439).
  • Added per-column visibility for CompoundVectorParameterValueWidget. Visibility is specified using the standard [“UI”][“visible”] userData entries on the child parameters which provide the columns (#526).
  • Stopped plug controls accepting drags from themselves. This was causing trouble for users who were accidentally dragging and dropping a single line from a PathVectorDataPlugValueWidget onto itself, thus removing all the other lines.
  • Added drag start threshold, to make it harder to accidentally start a drag (#593).
  • Disabled “Remove input” menu item for read only plugs and uis.
  • Disabled Box promotion menus on read only UIs (#604).
  • Disabled ganging menu items for read only UIs.
  • Stopped standard graph layout reconnecting invisible nodes.


  • Prevented rogue connections being made to Shader “parameters” Plug.
  • Fixed bugs in computing hashes for transform, object and attributes at the scene root.


  • Added support for struct parameters.
  • Added shaders for doing basic vector arithmetic.
  • Added support for N global variable in OSLRenderer.
  • Fixed OSLShader hash bug. Because OSL shaders are the first shader type we’ve supported where a single shader can have multiple outputs, we weren’t taking into account which particular output was connected when computing the hash.
  • Prevented vector->color connections for OSLShader nodes. OSL itself doesn’t allow such connections so we mustn’t either. Also added a vectorToColor shader to help work around the restriction.


  • Started versioning documentation releases - they follow the app release version.
  • Changed modifier key styling in documentation content to match that used in interface.
  • NodeEditor content expanded.
  • NodeGraph content expanded.
  • New images.
  • New screen grab setups.
  • Simplified example light shader.


  • Renamed CheckBox to BoolWidget and added different display modes. CheckBox remains as an alias to BoolWidget for backwards compatibility.
  • Added stream insertion operator for GafferScene::ScenePlug::ScenePath.
  • Fixed RunTimeTyped declaration for SceneView. It was declared as deriving from View rather than View3D.
  • Fixed bug in Widget.widgetAt().
  • Added widget overlays to GLWidget. This allows any Widget subclass to be displayed as an overlay on top of the OpenGL contents.
  • Added setColumnVisible/getColumnVisible methods to VectorDataWidget.
  • Implemented VectorDataPlugValueWidget.setHighlighted().
  • Fixed StandardNodeUI.setReadOnly() to properly affect plug labels.
  • Implemented setPlug on a SectionedCompoundDataPlugValueWidget.
  • Fixed DependencyNode::enabledPlug() python bindings.
  • Added python binding for ValuePlug::setFrom().