0.17.0.0¶
This release brings several major features in addition to the usual enhancements and bug fixes. Of particular interest are the addition of a basic keyframing system, support for using OSL expressions alongside the existing Python expressions, and several new image processing nodes exposing OpenColorIO functionality.
Core¶
- Added Animation node, providing basic support for keyframed animation.
 - Added frames-per-second support to Contexts, to map between frames and a time in seconds.
 - Expression
- Fixed bug when identical expressions acted on different plug types.
 - Added support for calling 
context.getTime(). - Added support for calling 
context.getFramesPerSecond(). - Fixed bugs when a plug or node is renamed.
 - Fixed bugs when manually disconnecting an output or input of an expression.
 - Improved error reporting in the UI.
 
 - Fixed InputGenerator backwards compatibility bug introduced in 0.16.0.0.
 - Box
- Promoting a plug now properly copies plug metadata (#1468).
 
 - Plug
- Fixed rare crash during dirty propagation.
 - Fixed bug in child connection tracking behaviour.
 
 
UI¶
- NodeEditor
- Plug context menus
- Added keyframing menu items for numeric and bool plugs.
 - Added Lock/Unlock meu items.
 - Added menu item for creating an OSL expression.
 
 - Tool menu
- Added “Revert to Defaults” menu item.
 
 
 - Plug context menus
 - NodeGraph
- Added right click menu items for reordering plugs on Boxes.
 - Fixed bugs triggered by the dynamic hiding and showing of plugs via the UIEditor.
 
 - Dot
- Added optional labels. These can be derived from the dot node name or the upstream node name or may be specified directly.
 
 - Shader loading dialogues
- Added bookmarks.
 
 - Viewer
- Fixed bug which could mean the camera would move unexpectedly even when look-through mode is not enabled.
 - Fixed OpenColorIO configs.
 
 - UIEditor
- Fixed renaming of empty user sections.
 - Prevented renaming of section to invalid names like “”.
 - Added default Settings section.
 - Fixed presets UI to update values when the selected preset changes.
 - Ignores user plugs on box nodes.
 
 - Box
- Added default Settings section.
 - Disabled plug addition button in User section.
 
 - Fixed bug which could cause the display of corrupted icons.
 - ShaderSwitch
- Fixed UI to provide access to each input rather than just the array input as a whole (#1461).
 
 - Numeric fields
- Ensured that keyboard-nudged numbers have an extra 0 added as necessary to ensure that the same digit is always being modified.
 
 
Image¶
- New OpenColorIO nodes
- LUT
 - CDL
 - DisplayTransform
 
 - ImageWriter
- Added file format options.
 - Made sure OIIO queries for nchannel and alpha support are respected.
 
 - Merge
- Fixed artifacts when the data windows differ between layers.
 - Fixed crash.
 
 - Resize
- Fixed artifacts when upsizing with the sinc filter (#1457).
 
 - Changed convention for image bounding boxes to specify that the maximum coordinates are exclusive (outside the box).
 - Fixed Crop UI for images with the default format.
 - Resample
- Fixed incorrect input sample region.
 
 
Scene¶
- Fixed loading of UnionFilters from Gaffer 0.15.0.0 (#1474).
 - Fixed loading of FilterSwitches from Gaffer 0.15.0.0 (#1474).
 - Attributes are now output to the renderer before shaders at the same location. This works around a bug in 3delight’s shader construction.
 - Fixed crash when loading sets from an empty SceneReader.
 - Added support for frames-per-second to SceneReader, AlembicSource and SceneWriter.
 
OSL¶
- Added support for using OSL as a general purpose expression language.
 
Cortex¶
- Fixed issue where non-ValuePlugs were not syncing during setPlugValue().
 - Fixed OpHolder node summaries.
 
API¶
- Expression
- Redesigned API to better support multiple languages.
 
 - Context
- Added “framesPerSecond” variable and time accessors.
 
 - Metadata
- Added nodesWithMetadata() and plugsWithMetadata() methods.
 
 - StandardNodeGadget
- Removed orientation constructor parameter. Use metadata instead.
 - Added dynamic nodule reordering controlled by metadata.
 
 - ScriptNode
- Fixed undo merging for CompoundNumericPlugs (#422).
 
 - Plug
- Made setFlags() undoable.
 
 - PlugLayout
- Ignore custom widgets with type “”. This allows a widget inherited from a base class to be removed by a derived class or instance metadata.
 
 - Removed UserPlugValueWidget.
 - Added UserPlug namespace.
 - Deprecated use of arbitrary Widget constructor keyword arguments
for auto-parenting. The 
parentingargument should be used instead. - Image
- Renamed GafferImage::OpenColorIO to ColorSpace.
 - Changed convention for image bounding boxes to specify that the
maximum coordinates are exclusive (outside the box).
- Added image window utility methods to assist with this change.
 
 - Added OpenColorIOTransform abstract base class. This makes it easy to implement nodes whose processing is performed via OpenColorIO.
 - Sampler
- Remove sample window accessors.
 - Deprecated constructor taking a filter.
 
 
 - Added NumericWidget.valueToString() method.
 
Incompatibilities¶
- Redesigned expression API to better support multiple languages.
 - Changed convention for image bounding boxes to specify that the maximum coordinates are exclusive (outside the box).
 - NodeGadget
- Added noduleAddedSignal() and noduleRemovedSignal().
 
 - StandardNodeGadget
- Removed orientation constructor parameter. Use metadata instead.
 
 - GraphComponentWrapper
- Improved constructors to allow any type to be passed to the single argument constructor.
 
 - Removed UserPlugValueWidget.
 - Deprecated use of arbitrary Widget constructor keyword arguments
for auto-parenting. The 
parentingargument should be used instead. - Renamed GafferImage::OpenColorIO to ColorSpace.
 - Sampler
- Remove sample window accessors.
 - Deprecated constructor taking a filter.