Skip to content

Releases: GafferHQ/gaffer

Gaffer 1.1.9.0

10 Feb 15:10
Compare
Choose a tag to compare

Improvements

  • Arnold : Disabled ADP more thoroughly, using ARNOLD_ADP_DISABLE=1 for Arnold 7.1.4.0 and greater. Set ARNOLD_ADP_DISABLE=0 before running Gaffer if you wish to use ADP.
  • Cycles :
    • Added warning when a shader contains a parameter which does not exist in Cycles.
    • Added warning when a shader contains a parameter with an unsupported datatype.
    • Added warning when a shader contains an enum parameter with an invalid value.
    • Added support for passing InternedStringData to enum and string parameters.

Fixes

  • Backups : Fixed error when a backup file contained characters that couldn't be represented using the current locale. This could be triggered by a separate bug in OpenShadingLanguage that caused the locale to be changed unnecessarily (#5048).
  • Viewer :
    • Fixed crash when switching from Cycles to OpenGL rendering (#5051).
    • Fixed potential crash when destroying a raytraced viewport.
  • Cyles :
    • Fixed crashes caused by providing unsupported data types in shader parameters.
    • Fixed support for Color4f values on colour shader parameters. This can be useful when loading non-standard USD files.
    • Fixed support for V[23]i values on vector shader parameters.
    • Fixed handling of colour array parameters.

API

  • TestCase : Added scopedLocale() method.

Gaffer 1.2.0.0a3

30 Jan 12:57
Compare
Choose a tag to compare
Gaffer 1.2.0.0a3 Pre-release
Pre-release

Features

  • MeshSegments : Added a node for identifying faces in contiguous segments. 1

Improvements

  • Viewer : If Arnold is available, then it is preferred over Appleseed for performing OSL shader previews. If neither is available, then Cycles will be used (#5084).
  • FormatPlugValueWidget, ChannelPlugValueWidget, ChannelMaskPlugValueWidget, RGBAChannelsPlugValueWidget, ViewPlugValueWidget : Added support for showing multiple plugs at once, as needed when multiple Spreadsheet cells are selected for editing.
  • Spreadsheet : Improved display of image formats.
  • USD : 1
    • Added support for Arnold-USD's convention for representing connections to individual indices of an array.
    • Added loading of float4 USD shader parameters as Color4 parameters in Gaffer.

Fixes

  • Viewer : Fixed bug which made it impossible to switch back to a previously used display transform 1.
  • Cycles : Disabled auto-tiling mode for the viewport/interactive render mode, which caused odd/glitchy behaviour on larger than 2k renders 1.
  • Arnold : The ai:GI_diffuse_depth and ai:GI_specular_depth options now default to 2 when they are left unspecified, matching the default values on the ArnoldOptions node.
  • Menu buttons : Fixed missing dropdown menu indicators.
  • CompoundNumericPlugValueWidget : Fixed failure to construct with an empty list of plugs.
  • ChannelPlugValueWidget : Fixed compatibility with multi-view images.
  • FilteredSceneProcessor :
    • Fixed bugs which allowed read-only nodes to be edited.
    • Fixed undo for Remove menu item in Filter tab.
  • 3Delight : Fixed bug preventing 3delight from loading on Windows. (#5081). This also caused errors in the light editor at startup : IECore.Exception: File "maya/osl/pointLight" could not be found. 2
  • NodeEditor : Fixed bugs in handling of "green dot" non-default-value indicators with nested plugs.
  • GUI App : Fixed error on Windows when launching the gui app after a previous launch loaded a script with \ in the path. 2
  • HierarchyView : Fixed P and N editor focus hotkeys 1.

API

  • PlugAlgo : Added findDestination() utility method.

Breaking Changes

  • Arnold : Changed the default values for the ai:GI_diffuse_depth and ai:GI_specular_depth options.

Build

  • Cortex : Updated to 10.4.4.0. 1
  1. Changes inherited from 1.x. Can be omitted from the release notes for the final release of 1.2. 2 3 4 5 6

  2. Changes made to features introduced in 1.2.0.0ax. Can be omitted from the release notes for the final release of 1.2. 2

Gaffer 1.1.8.0

30 Jan 13:04
Compare
Choose a tag to compare

Features

  • MeshSegments : Added a node for identifying faces in contiguous segments.

Improvements

  • USD :
    • Added support for Arnold-USD's convention for representing connections to individual indices of an array.
    • Added loading of float4 USD shader parameters as Color4 parameters in Gaffer.

Fixes

  • Viewer : Fixed bug which made it impossible to switch back to a previously used display transform.
  • Cycles : Disabled auto-tiling mode for the viewport/interactive render mode, which caused odd/glitchy behaviour on larger than 2k renders.
  • HierarchyView : Fixed P and N editor focus hotkeys.

Build

  • Cortex : Updated to 10.4.4.0.

Gaffer 1.2.0.0a2

13 Jan 12:05
Compare
Choose a tag to compare
Gaffer 1.2.0.0a2 Pre-release
Pre-release

Features

  • ContextVariableTweaks : Added a new node for tweaking the context used to evaluate upstream nodes 1.

Improvements

  • Light Editor :
    • Added a "Mute" column for toggling a light's mute attribute on and off.
    • Added a "Disable Edit" command to the right-click menu, to easily disable tweaks in EditScopes (shortcut D).
    • Added a "Remove Attribute" command to the right-click menu, to delete attributes using the EditScope (shortcut Delete).
  • Cycles 1 :
    • Replaced size on portals and quad lights with separate width and height parameters, and renamed size parameter of disk lights to width.
    • Added use_camera, use_caustics and normalize parameters to lights.
  • TweakPlug : Added a CreateIfMissing mode, to only create a new value if one does not currently exist 1.
  • OSLObject : Added support for attribute substitutions using <attr:myAttrName> syntax in string parameters, provided that useAttributes is turned on 1.
  • UIEditor : Increased maximum size of the "Button Click Code" editor 1.
  • HierarchyView : Inclusions and Exclusions column header icons now update to show when one or more locations have been added to or excluded from the Visible Set 2.
  • Light : Added an enable/disable toggle to the mute plug 2.
  • AttributeTweaks : Added Remove mode.
  • NodeEditor : Added "Promote Value and Switch" context menu item for promoting NameValuePlugs to Boxes 1.

Fixes

  • Viewer 1 :
    • Fixed Default display transform so that it updates correctly when the default is changed via the Preferences dialogue, and when the context changes.
    • Fixed drawing of image pixels to the left of the display window.
  • 3Delight : Fixed rendering with recent versions of 3Delight, which no longer use the DL_DISPLAYS_PATH to search for display drivers.
  • Metadata :
    • Fixed memory leak.
    • Fixed thread safety bug that prevented concurrent access to metadata for the same plug or node from multiple threads.
  • Cycles 1 :
    • Fixed custom AOVs (for SVM shading mode only, Cycles doesn't support custom AOVs in OSL mode) (#5044).
    • Fixed units for distant light angle (now degrees and not radians).
    • Fixed assignment of emission shader. Previously this was being assigned as a cycles:light attribute instead of cycles:surface (#5058).
    • Hid internal shader plugs which shouldn't be exposed to the user (e.g. surface_mix_weight).
  • ImageViewer : Fixed drawing of pixels to the left of the display window 1.
  • UVInspector : Fixed update delay when changing display transform 1.
  • Random : Fixed GIL management bug which could lead to hangs 1.
  • ShufflePrimitiveVariables, ShuffleAttributes, OptionQuery, PrimitiveVariableQuery, ShaderQuery, ContextQuery, CreateViews, SetVisualiser, OSLImage, OSLObject, OSLCode, Outputs : Fixed bugs which allowed read-only nodes to be edited.
  • ShaderTweaks : Fixed Remove mode 1.
  • FilterQuery : Fixed bug which prevented the output from updating when the input scene changed (#5066) 1.
  • Arnold : Fixed rendering of token enum parameter values loaded from USD 1.

API

  • PlugValueWidget : Added new API to provide asynchronous updates. The old _updateFromPlugs() and _plugConnections() methods are deprecated, and support for them will be removed in a future version.
  • PlugAlgo : Added dependsOnCompute() utility method.
  • FileSystemPath :
    • Added a constructor that accepts a filesystem::path.
    • Added a standardPath() method returning a std::filesystem::path object in C++ and a pathlib.Path object in Python.

Build

  • 3Delight : Updated to 3Delight version 2.9.17.
  1. Changes inherited from 1.x. Can be omitted from the release notes for the final release of 1.2. 2 3 4 5 6 7 8 9 10 11 12 13 14

  2. Changes made to features introduced in 1.2.0.0ax. Can be omitted from the release notes for the final release of 1.2. 2

Gaffer 1.1.7.0

13 Jan 11:52
Compare
Choose a tag to compare

Features

  • ContextVariableTweaks : Added a new node for tweaking the context used to evaluate upstream nodes.

Improvements

  • Cycles :
    • Replaced size on portals and quad lights with separate width and height parameters, and renamed size parameter of disk lights to width.
    • Added use_camera, use_caustics and normalize parameters to lights.
  • TweakPlug : Added a CreateIfMissing mode, to only create a new value if one does not currently exist.
  • OSLObject : Added support for attribute substitutions using <attr:myAttrName> syntax in string parameters, provided that useAttributes is turned on.
  • UIEditor : Increased maximum size of the "Button Click Code" editor.
  • NodeEditor : Added "Promote Value and Switch" context menu item for promoting NameValuePlugs to Boxes.

Fixes

  • Viewer :
    • Fixed Default display transform so that it updates correctly when the default is changed via the Preferences dialogue, and when the context changes.
    • Fixed drawing of image pixels to the left of the display window.
  • Cycles :
    • Fixed custom AOVs (for SVM shading mode only, Cycles doesn't support custom AOVs in OSL mode) (#5044).
    • Fixed units for distant light angle (now degrees and not radians).
    • Fixed assignment of emission shader. Previously this was being assigned as a cycles:light attribute instead of cycles:surface (#5058).
    • Hid internal shader plugs which shouldn't be exposed to the user (e.g. surface_mix_weight).
  • UVInspector : Fixed update delay when changing display transform.
  • Random : Fixed GIL management bug which could lead to hangs.
  • ShaderTweaks : Fixed Remove mode.
  • FilterQuery : Fixed bug which prevented the output from updating when the input scene changed (#5066).
  • Arnold : Fixed rendering of token enum parameter values loaded from USD.

Gaffer 1.0.6.6

13 Jan 11:44
Compare
Choose a tag to compare
  • ShaderTweaks : Fixed Remove mode.
  • FilterQuery : Fixed bug which prevented the output from updating when the input scene changed (#5066).
  • Random : Fixed GIL management bug which could lead to hangs.
  • Arnold : Fixed rendering of token enum parameter values loaded from USD.

Gaffer 1.2.0.0a1

20 Dec 09:25
Compare
Choose a tag to compare
Gaffer 1.2.0.0a1 Pre-release
Pre-release

This version enables Cycles support by default, as we believe we have made sufficient progress to allow wider testing. We may continue to make behaviour-changing updates if necessary though, so support is not yet considered final.

Note : Python 2 support has been removed. All builds are now using Python 3.

Features

  • Windows : Added official builds for Windows.
  • Mute/Solo : Added the ability to mute and solo lights.
    • A light can be muted by setting the light:mute attribute. If that attribute is not present, the light will not be muted.
    • One or more lights can be enabled exclusively via membership in the soloLights set. If that set has one or more members, only the lights in that set will emit. If the set is empty, all lights emit according to their mute state. If a light is both muted and in the soloLights set, it will emit.
    • Lights : Added a mute toggle, which can be accessed in the node editor from the Light Linking tab.
    • Added a visual indication to lights in the viewport when they are muted. Muted lights use a dark gray outline instead of yellow.
    • Cycles : Muted lights are disabled in renders.
    • Arnold : Muted lights are disabled in renders.
  • HierarchyView : Added control over the Visible Set, which defines the locations within the scene that are loaded and rendered by the Viewer.
    • The Inclusions column adds locations to the Visible Set, so that they and their descendants are rendered in the Viewer without needing to be expanded in the HierarchyView.
    • The Exclusions column excludes locations from the Visible Set, so that they and their descendants are never rendered in the Viewer, regardless of any other expansions or inclusions.
    • Locations can have their Visible Set inclusion or exclusion toggled by clicking within the appropriate column. Shift-clicking will remove the location and any of its descendants from the Visible Set. When multiple locations are selected, edits to any of the selected locations will affect all selected locations.

Improvements

  • SceneReader :
    • Improved read performance for sets in USD files, with a benchmark reading a moderately large set seeing more than 2x speedup.
    • Improved cancellation responsiveness when reading large sets from USD files.
  • SceneWriter : Improved performance when writing sets to USD files.

Fixes

  • CodeWidget : Fixed auto-complete for pathlib.Path objects, and any other classes which throw AttributeError for an attribute advertised by dir().
  • Expression : Fixed non-deterministic parsing order for Python expressions (#4935).
  • FileSequencePathFilter : Fixed bug whereby files were considered to be part of a sequence if they were in a numbered directory. Now only numbers in the file's name are considered.
  • BoolWidget : Fixed bug triggered by calling setImage() from within a with widgetContainer block.
  • LevelSetOffset, MeshToLevelSet, LevelSetToMesh, SphereLevelSet : Fixed bugs which could cause unnecessary repeated computations, or in the worst case, lead to deadlock.
  • ValuePlug : Fixed rare deadlock when a TaskParallel compute recurses to a Legacy compute with the same hash.
  • GafferTest : Fixed bug which caused parallelGetValue() to use the wrong context.
  • LightEditor : Fixed bug which could cause attribute edits to be made for a parent location instead of the desired one.
  • BackgroundMethod : Fixed bug that could cause the postCall to be called on a widget that had already been removed from the UI.

API

  • Filesystem path handling : Adopted std::filesystem::path and pathlib.Path in the C++ and Python APIs respectively, with automatic conversion between the two. These simplify common use cases, and provide for more elegant cross-platform path handling.
    • ScriptNode : serialiseToFile(), executeFile() and importFile() now take filesystem::path arguments.
    • Reference :
      • load() now takes a filesystem::path argument.
      • fileName() now returns a filesystem::path argument.
    • Box : exportForReference() now takes a filesystem::path argument.
    • ApplicationRoot :
      • savePreferences() now takes a filesystem::path argument.
      • preferencesLocation() now returns a filesystem::path.
    • StringPlug : Added a setValue() overload taking a filesystem::path.
    • Dispatcher : jobDirectory() now returns a filesystem::path.
    • Backups : File names are now represented using pathlib.Path.
    • TestCase : temporaryDirectory() now returns a pathlib.Path.
    • ShaderView : registerReferenceScene() now takes a filesystem::path.
    • Catalogue : save() and load() take a filesystem::path, and generateFileName() returns one.
    • ExtensionAlgo : exportExtension() now takes a pathlib.Path in the directory argument.
  • PathColumn : Added buttonPressSignal(), buttonReleaseSignal() and buttonDoubleClickSignal(). These allow a PathColumn to implement its own event handling.
  • Capsule : Removed attempts to detect invalidated Capsules.
  • VisibleSet/VisibleSetData : Added struct used to define a subset of the scene to be rendered based on expansions, inclusions, and exclusions. This is used to allow scene locations to be defined as always or never renderable, overriding the usual UI expansion behaviour.
  • ContextAlgo : Added setVisiblesSet(), getVisibleSet(), and affectsVisibleSet() methods.
  • SceneGadget : Added setVisibleSet(), and getVisibleSet() methods.
  • EditScopeAlgo : Added methods to modify and query modifications to set members in an Edit Scope.
  • Widget : Added support for a _postContructor() method, which is called after the widget is fully constructed. This can be useful for performing post-initialisation work from a base class.
  • GafferTest : Added ObjectPlug overloads for repeatGetValue() and parallelGetValue().
  • SceneTestCase : Added assertParallelGetValueComputesObjectOnce(). This can be used to check that expensive computes are using an appropriate cache policy.
  • Gaffer ( Python module ) : Added rootPath() and executablePath() methods.

Breaking Changes

  • Signal : Removed disconnect( slot ) method. This was a performance hazard because it was linear in the number of connections. Use Connection::disconnect() instead, which is constant time.
  • GafferTest : Removed expectedFailure() decorator. Use unittest.expectedFailure() instead.
  • Python : Removed support for Python 2.
  • SceneWriter :
    • Sets are now only written on the first frame for each file written.
    • SceneInterface::writeSet() is now used in preference to SceneInterface::writeTags() for all non-legacy file formats.
  • SceneReader : SceneInterface::readSet() is now used in preference to SceneInterface::readTags() for all non-legacy formats.
  • CatalogueUI : Hid OutputIndexColumn from public API.
  • ContextAlgo : Removed use of the ui:scene:expandedPaths context variable. Any code directly accessing ui:scene:expandedPaths should instead use the getExpandedPaths()/setExpandedPaths()/expand()/expandDescendants() methods provided by ContextAlgo.
  • SceneGadget : Removed setExpandedPaths() and getExpandedPaths() methods. setVisibleSet() and getVisibleSet() are now used instead.
  • GafferUI : Removed the setReadOnly() and getReadOnly() methods from the following widgets :
    • GafferUI.PlugValueWidget
    • GafferUI.NodeEditor
    • GafferUI.NodeUI
    • GafferUI.PlugLayout
  • Reference : The fileName() Python binding now returns a pathlib.Path argument, or None for empty file names.
  • ApplicationRoot : The preferencesLocation() Python binding now returns a pathlib.Path argument.
  • StringPlug : setValue( std::filesystem::path & ) now uses path.generic_string() for the value, whereas before an automatic conversion would have used path.string() (the native string).
    • Dispatcher : the jobDirectory() Python binding now returns a pathlib.Path, or None if it is empty.
  • Context::EditableScope, ImagePlug::ChannelDataScope, ScenePlug::PathScope/SetScope : Removed deprecated functions which don't take pointers and require duplicating data.
  • ViewportGadget : Removed deprecated gadgetsAt() signature.

Build

  • Cortex : Updated to version 10.4.3.0.

Gaffer 1.1.6.1

19 Dec 15:28
Compare
Choose a tag to compare

Fixes

  • NodeEditor : Fixed updates for the green "non-default-value" dots in plug labels.
  • Cycles :
    • Fixed handling of OSL shader component connections (#4926).
    • Fixed crash when attempting to use a non-existent OSL shader.
    • Fixed Unsupported socket "tiles" warning when loading the image_texture shader.

Gaffer 1.0.6.5

19 Dec 15:22
Compare
Choose a tag to compare

Fixes

  • NodeEditor : Fixed updates for the green "non-default-value" dots in plug labels.

Gaffer 1.1.6.0

07 Dec 09:40
Compare
Choose a tag to compare

Features

  • SetQuery : Added a new node for querying the set memberships of a location.

Improvements

  • UIEditor : Added Allow Custom Values checkbox to the Widget Settings section for the Presets Menu widget. When on, this allows the user to enter their own custom values in addition to choosing presets from the menu.
  • Image View : Added support for custom presets for choosing catalogue outputs to compare to. This can be set up like Gaffer.Metadata.registerNodeValue( GafferImageUI.ImageView, "compare.catalogueOutput", "preset:MyPreset", "myNamespace:specialImage" ). The Catalogue won't know how to deal with a request for "myNamespace:specialImage", and will just output an error image, but this could be useful in pipelines where Catalogue's are wrapped in custom nodes that can respond to this special value of the catalogue:imageName. If you want to provide a custom icon for your custom mode, Gaffer will search for an icon name catalogueOutput{preset name}.png.
  • Animation Editor : Added UI tooltips to menu items for TieMode and Interpolation.
  • CopyPrimitiveVariables : Added ignoreIncompatible plug which will cause the node to not error when attempting to copy primitive variables from the source object that are imcompatible with the destination object.
  • Arnold : Enabled support for using the layerName parameter with non-LPE outputs. This requires a minimum of Arnold 7.1.3.0, because it contains a fix for ARNOLD-12282.
  • ShaderQuery : Added "From Selection" menu item to the popup menus for the shader plug and parameter adder.
  • File browsers : Excessively long filter labels are now truncated, instead of making the widget too wide.
  • PathParameterValueWidget : The extensions specified by the parameter are now translated to fileSystemPath:extensions metadata, enabling filtering in the Gaffer file browser.

Fixes

  • Viewer : Added missing bookmarks 1-4 to the image comparison menu.
  • MessagesBinding : Fixed GIL management bug that could cause crashes when performing an interactive render.
  • Spreadsheet : Fixed crash when connecting a StringVectorDataPlug to a row's name plug.
  • Documentation : Fixed "In this article" navigation column contents on pages containing figures.

API

  • Animation :
    • Added description metadata for Animation.Interpolation enum values that is used to generate UI tooltips.
    • Added description metadata for Animation.TieMode enum values that is used to generate UI tooltips.