Releases: GafferHQ/gaffer
Releases · GafferHQ/gaffer
Gaffer 1.1.9.0
Improvements
- Arnold : Disabled ADP more thoroughly, using
ARNOLD_ADP_DISABLE=1
for Arnold 7.1.4.0 and greater. SetARNOLD_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
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 asColor4
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
andai:GI_specular_depth
options now default to2
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
andai:GI_specular_depth
options.
Build
- Cortex : Updated to 10.4.4.0. 1
Gaffer 1.1.8.0
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 asColor4
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
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 separatewidth
andheight
parameters, and renamedsize
parameter of disk lights towidth
. - Added
use_camera
,use_caustics
andnormalize
parameters to lights.
- Replaced
- 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 thatuseAttributes
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 acycles:light
attribute instead ofcycles: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 astd::filesystem::path
object in C++ and apathlib.Path
object in Python.
- Added a constructor that accepts a
Build
- 3Delight : Updated to 3Delight version 2.9.17.
Gaffer 1.1.7.0
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 separatewidth
andheight
parameters, and renamedsize
parameter of disk lights towidth
. - Added
use_camera
,use_caustics
andnormalize
parameters to lights.
- Replaced
- 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 thatuseAttributes
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 acycles:light
attribute instead ofcycles: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
- 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
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 thesoloLights
set, it will emit. - Lights : Added a
mute
toggle, which can be accessed in the node editor from theLight 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.
- A light can be muted by setting the
- 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 throwAttributeError
for an attribute advertised bydir()
. - 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 awith 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
andpathlib.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()
andimportFile()
now takefilesystem::path
arguments. - Reference :
load()
now takes afilesystem::path
argument.fileName()
now returns afilesystem::path
argument.
- Box :
exportForReference()
now takes afilesystem::path
argument. - ApplicationRoot :
savePreferences()
now takes afilesystem::path
argument.preferencesLocation()
now returns afilesystem::path
.
- StringPlug : Added a
setValue()
overload taking afilesystem::path
. - Dispatcher :
jobDirectory()
now returns afilesystem::path
. - Backups : File names are now represented using
pathlib.Path
. - TestCase :
temporaryDirectory()
now returns apathlib.Path
. - ShaderView :
registerReferenceScene()
now takes afilesystem::path
. - Catalogue :
save()
andload()
take afilesystem::path
, andgenerateFileName()
returns one. - ExtensionAlgo :
exportExtension()
now takes apathlib.Path
in thedirectory
argument.
- ScriptNode :
- PathColumn : Added
buttonPressSignal()
,buttonReleaseSignal()
andbuttonDoubleClickSignal()
. 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()
, andaffectsVisibleSet()
methods. - SceneGadget : Added
setVisibleSet()
, andgetVisibleSet()
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()
andparallelGetValue()
. - SceneTestCase : Added
assertParallelGetValueComputesObjectOnce()
. This can be used to check that expensive computes are using an appropriate cache policy. - Gaffer ( Python module ) : Added
rootPath()
andexecutablePath()
methods.
Breaking Changes
- Signal : Removed
disconnect( slot )
method. This was a performance hazard because it was linear in the number of connections. UseConnection::disconnect()
instead, which is constant time. - GafferTest : Removed
expectedFailure()
decorator. Useunittest.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 toSceneInterface::writeTags()
for all non-legacy file formats.
- SceneReader :
SceneInterface::readSet()
is now used in preference toSceneInterface::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 accessingui:scene:expandedPaths
should instead use thegetExpandedPaths()/setExpandedPaths()/expand()/expandDescendants()
methods provided byContextAlgo
. - SceneGadget : Removed
setExpandedPaths()
andgetExpandedPaths()
methods.setVisibleSet()
andgetVisibleSet()
are now used instead. - GafferUI : Removed the
setReadOnly()
andgetReadOnly()
methods from the following widgets :GafferUI.PlugValueWidget
GafferUI.NodeEditor
GafferUI.NodeUI
GafferUI.PlugLayout
- Reference : The
fileName()
Python binding now returns apathlib.Path
argument, orNone
for empty file names. - ApplicationRoot : The
preferencesLocation()
Python binding now returns apathlib.Path
argument. - StringPlug :
setValue( std::filesystem::path & )
now usespath.generic_string()
for the value, whereas before an automatic conversion would have usedpath.string()
(the native string).- Dispatcher : the
jobDirectory()
Python binding now returns apathlib.Path
, orNone
if it is empty.
- Dispatcher : the
- 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
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 theimage_texture
shader.
Gaffer 1.0.6.5
Fixes
- NodeEditor : Fixed updates for the green "non-default-value" dots in plug labels.
Gaffer 1.1.6.0
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 thecatalogue:imageName
. If you want to provide a custom icon for your custom mode, Gaffer will search for an icon namecatalogueOutput{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 tofileSystemPath: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 forAnimation.Interpolation
enum values that is used to generate UI tooltips. - Added
description
metadata forAnimation.TieMode
enum values that is used to generate UI tooltips.
- Added