1.3.0.0
Features
MeshNormals : Added a new node for adjusting mesh normals.
VolumeScatter : Added a new node for scattering points throughout a volume.
Cycles : Updated to version 3.5.0.
LightTool : Added 3d viewer tool for manipulating lights. Manipulation of spot light cone and penumbra angles is currently supported.
Improvements
3D Viewer :
Added OpenColorIO colour management.
Added exposure, gamma and solo channel settings.
Ancestors and siblings of locations included in the Visible Set are no longer drawn while their ancestors are collapsed.
Added red wireframe colour to the bounding box of locations excluded from the Visible Set.
UVInspector : Added exposure, gamma and solo channel settings.
ImageReader : The
colorSpacewidget now displays the name of the assumed colorspace when inAutomaticmode.ImageReader, ImageWriter : The
colorSpacemenu is now filtered using thefile-iocategory, if the current OpenColorIO config provides it.ImageReader, OpenImageIOReader : Added
fileValidBoolPlug that outputsTrueif the required file exists for the current frame.OpenColorIO :
Updated default config to ACES Studio 1.3.
Added
openColorIOplug to ScriptNode, allowing the OpenColorIO config, working space, variables and display transform to be customised on a per-script basis.Improved colorspace menus :
Organised colorspaces into submenus by family.
Removed unwanted title-casing, so that names are now displayed verbatim.
Added control over the presence of roles by registering
openColorIO:includeRolesmetadata to the relevant plugs.
Improved View display transform menu :
Ordered menu items to match the order in the OpenColorIO config.
Removed “Default” view.
Added menu options for changing the current Display.
Allowed the available views to be filtered using an
openColorIO:activeViewsmetadata value registered on the View’sdisplayTransform.nameplug. Values should be space-separated names, optionally containing wildcards.
OpenColorIOContext : Added a new node that creates Gaffer context variables to define the OpenColorIO config used by upstream nodes. This allows different OpenColorIO configs to be used in different Gaffer contexts.
OpenColorIOTransform :
Improved performance.
Improved detection of no-op transforms, such as when converting between colorspace aliases like
scene_linearandACEScg.
ColorSpace : Defaulted the input and output space to the current working space.
DisplayTransform : Defaulted the input space to the current working space, and the display and view to the defaults defined by the current OpenColorIO config.
ArnoldColorManager : Improved defaults to match Gaffer’s current OpenColorIO configuration.
Seeds :
Renamed to Scatter.
Added sampling of primitive variables from the source mesh onto the scattered points, controlled using the new
primitiveVariablesplug.Added
referencePositionplug to allow point distribution to be fixed on animated meshes.Added
uvplug to allow the space within which the points are scattered to be controlled.Added support for density primitive variable values above
1.Improved numerical accuracy.
Improved performance.
VectorDataPlugValueWidget : Computation errors are now reflected by a red background colour.
VectorWarp : Added
Bilinearfilter, for faster but lower quality warping.Dilate, Erode, Median, Resample, Resize, ImageTransform, Blur, VectorWarp : Improved performance significantly. For example, a Blur with a large radius is now almost 6x faster.
RotateTool : Added the ability to rotate an axis whose plane of rotation is parallel or nearly parallel to the view.
OptionQuery : Added support for querying generic
IECore::Objectvalues using anObjectPlug.HierarchyView :
Added support for inclusion and exclusion of leaf level locations to the Visible Set.
Added F shortcut to expand ancestors and frame selected paths. This replaces the previous behaviour of automatic updates to expansion and framing in the HierarchyView on selection change.
CyclesOptions :
Added
useLightTreeplug.Added path guiding options.
CyclesAttributes :
Added
emissionSamplingMethodplug.Added
isCausticsCasterandisCausticsReceiverplugs.
Render : Improved clearing of the compute and hash caches prior to rendering, potentially providing more memory to the renderer. Note that clearing is now only performed in the
executeanddispatchapps.
Fixes
UVInspector : Removed display transform from UV wireframes and grid.
Viewer :
Gamma is now applied after the display transform, not before.
Fixed image viewer’s active tile indicators from becoming stuck when a computation was cancelled.
Expression : Fixed parsing of Python expressions combining subscripts (
[]) andcontextmethods (#3088, #3613, #5250).ConnectionCreatorWrapper : Fixed bug which forced PlugAdder derived classes to implement
updateDragEndPoint()unnecessarily.Plug : Fixed bug which caused stale values to be retrieved from the cache for plugs that had been renamed.
ValuePlug : Fixed results when graph edits and computes are interleaved within a DirtyPropagationScope (#1971).
OpenColorIOTransform : Fixed error processing deep image tiles containing no samples.
Seeds :
Fixed duplicate points at triangle edges.
Fixed handling of points exactly at the density threshold.
ObjectSource, Group : Prevented the creation of locations with invalid names -
..,...or anything containing/or a filter wildcard.BranchCreator : Prevented the use of
...and other filter wildcards in thedestination.TranslateTool : Fixed dragging in a plane parallel to an orthographic view. Translation in that case now behaves the same as dragging an axis.
Window : Fixed handling of
**kwconstructor arguments. These were being passed to theQWidgetconstructor where they caused errors, instead of being passed to the ContainerWidget base class.PresetsPlugValueWidget : Fixed label update for context-sensitive presets.
PlugValueWidget : Fixed value update when auxiliary plugs depend on the context but the primary plugs do not.
Cycles : Fixed handling of
cycles:shader:volume_sampling_methodandcycles:shader:volume_interpolation_methodattributes, which were being ignored previously.OptionQuery : Fixed bug which allowed duplicate queries to be added in the UI.
API
GraphComponent :
Added an
oldNameargument tonameChangedSignal()slot signature.Added a
nameChanged()protected virtual method, which can be overridden to receive notifications of name changes before they are made public bynameChangedSignal().Colon (
:) is now an allowed character in names.
View : Added DisplayTransform add-on class which can be used to add colourspace management to any View.
ViewportGadget : A post-process shader can now be applied to any layer, not just the main one.
SceneGadget : Added
setLayer()andgetLayer()methods, which allow the destinationGadget::Layerto be specified.TestCase : Added
ignoreMessage()method, to register messages that should not be treated as test failures.OpenColorIOTransform : Automated image pass-throughs when the
transform()method returns a no-op. Derived classes no longer need to implement their own pass-through.OpenColorIOTransformUI :
Added support for
openColorIO:categoriesandopenColorIO:includeRolesmetadata tocolorSpacePresetNames(). These may be registered on a per-plug basis to control the colorspaces shown for that plug.Added support for
openColorIO:extraPresetNamesandopenColorIO:extraPresetValuesmetadata to add presets not defined by the OpenColorIO config.
OpenColorIOAlgo : Added a new namespace that allows the OpenColorIO config and working space to be defined via the Gaffer context.
OpenColorIOConfigPlug : Added a new plug type to aid in configuring the OpenColorIO context for a ScriptNode.
ImageReader/ImageWriter : Added a
configargument to theDefaultColorSpaceFunctiondefinition. This is passed the OpenColorIO config currently being used by the node.ValuePlug :
Added Python bindings for derived classes’
ValueTypetype alias.Added
nowargument toclearHashCache()method.
Color4fVectorDataPlug : Added a plug type for storing arrays of
Color4f.TypedObjectPlug : Added default value for
directionanddefaultValueconstructor arguments.VectorDataWidget : Added
setErrored()andgetErrored()methods to control an error state. Errors are reflected by a red background colour.PlugLayout :
Added support for
layout:minimumWidthmetadata.Tabs are now hidden if all their child plugs are hidden by
layout:visibilityActivatormetadata.
PlugValueWidget :
Added
typeMetadataargument tocreate()to use an alternative key toplugValueWidget:typewhen looking up widget type.Added
_valuesDependOnContext()method which may be overridden by derived classes.
PresetsPlugValueWidget : Added
presetsPlugValueWidget:customWidgetTypemetadata, to allow the type for the custom widget to be specified.TabbedContainer : Added
setTabVisible()andgetTabVisible()methods.Removed use of
RTLD_GLOBALfor loading Python modules.SceneAlgo : Added
validateName()function.Sampler : Added
visitPixels()method, which provides an optimised method for accessing all pixels in a region.Handle::AngularDrag : Added
isLinearDrag()method.Widget : Added per-widget control over colour display transforms via new
setDisplayTransform(),getDisplayTransform()anddisplayTransform()methods.VisibleSet : Added
VisibleSet::Visibilitystruct containingdrawModeanddescendantsVisiblemembers.ValuePlug : Improved
getValue()performance, particularly when retrieving previously computed values from the cache. One benchmark shows a 50% reduction in runtime when the cache is under heavy contention from many threads.PathListingWidget :
Added
expandToSelection()method.Added
scrollToFirst()method to scroll to the first path found in the provided PathMatcher.
Breaking Changes
Appleseed : Removed Appleseed support. We suggest Cycles as an actively maintained open-source alternative.
ColorSwatch, ColorChooser, ColorChooserDialogue : Removed
useDisplayTransformconstructor argument. UseWidget.setDisplayTransform()instead.GraphComponent : Changed slot signature for
nameChangedSignal().GLWidget :
A GL context is no longer available in
_resize().Removed
BufferOptions.Double.
GadgetWidget : Removed
bufferOptionsconstructor argument.ImageView :
Removed
lutGPUplug.Removed DisplayTransform methods. Use
View::DisplayTransforminstead.Moved
exposure,gamma,clippingandsoloChannelplugs under adisplayTransformparent plug.Moved the
displayTransformplug todisplayTransform.name.
ViewportGadget : Changed function signature for
setPostProcessShader()andgetPostProcessShader().UVInspector : Moved the
displayTransformplug todisplayTransform.name.ImageReader : Renamed
Nonepreset toAutomatic.ImageReader/ImageWriter : Added a
configargument toDefaultColorSpaceFunction. If implementing such a function in Python, it can be compatible with both Gaffer 1.2 and 1.3 if the argument is declared asconfig = PyOpenColorIO.GetCurrentConfig().OpenColorIOTransform :
Removed
availableColorSpaces()andavailableRoles()methods.Deprecated
contextplug.
OpenColorIO : Changed default config.
PathListingWidget : Removed
expandNonLeafargument fromsetSelection()andsetSelectedPaths()methods.Subprocess32 : Removed Python module.
Six : Removed Python module.
Gaffer : Class constructors are now declared explicit disabling implicit conversions.
Seeds :
Renamed to Scatter.
Bugs fixes have made small changes to the point distribution.
ColorProcessor : Refactored virtual methods that must be implemented by derived classes :
Replaced
processColorData()withcolorProcessor()method that returns aColorProcessorFunction.Replaced
affectsColorData()withaffectsColorProcessor()andhashColorData()withhashColorProcessor().Simplified implementation of pass-throughs when the color processor is a no-op. Derived classes may simply return an empty
ColorProcessorFunction, and everything else is taken care of in the base class.
PlugValueWidget :
Removed support for deprecated
layout:widgetTypemetadata. UseplugValueWidget:typemetadata instead.Removed
useTypeOnlyargument fromcreate()function. PasstypeMetadata = Noneinstead.
MeshTangents : Changed the edge used by
Mode::FirstEdge.Handle::AngularDrag : Fixed mismatch between comment and implementation regarding the axis for zero rotation. The constructor arguments
axis0andaxis1were changed tonormalandaxis0respectively.Preferences : Removed
displayColorSpaceplug. Use the ScriptNode’sopenColorIOplug instead.GafferUI.DisplayTransform : Removed. Use
Widget.setDisplayTransform()instead.ColorSpace : The
inputSpaceandoutputSpacedefault values are now interpreted as the working space rather than as invalid spaces. This means that a node where only one space has been specified is no longer a pass-through as it was before.DisplayTransform :
The
inputSpacedefault value is now interpreted as the working space rather than as an invalid space. This means that a node withoutinputSpacespecified is no longer a pass-through as it was before.The
displayandviewdefault values are now interpreted as the default defined by the current OpenColorIO config, rather than as invalid values. This means that a node withoutdisplayorviewspecified is no longer a pass-through as it was before.
gaffer test : Replaced
-performanceOnlyflag with-categoryargument which may be set toperformancefor the same as the old-performanceOnly, orstandardfor the converse.VisibleSet : Renamed
VisibleSet::match()tovisibility()and changed return type.SceneView : Removed
gridPlug()method.TypedPlug : Moved implementation code from
TypedPlug.inltoTypedPlugImplementation.h.TypedObjectPlug : Moved implementation code from
TypedObjectPlug.inltoTypedObjectPlugImplementation.h.Xerces : Removed. This library was only needed by Appleseed.
CyclesAttributes : Replaced
useMiswithemissionSamplingMethod.
Build
Boost :
Updated to version 1.80.0.
Stopped linking unnecessarily to
iostreams,date_time,waveandsystemlibraries.
Cortex : Updated to version 10.5.0.0.
Cycles : Updated to version 3.5.0.
Imath : Added version 3.1.7.
MaterialX : Added version 1.38.4.
Minizip : Added version 3.0.9.
OpenColorIO : Updated to version 2.2.1.
OpenEXR :
Updated to version 3.1.7.
Stopped linking unnecessarily to the
IlmImflibrary.
OpenImageIO : Updated to version 2.4.11.0.
OpenPGL : Added version 0.4.1.
Partio : Added version 1.14.6.
PCG : Added latest version.
PyBind11 : Updated to version 2.10.4.
PySide : Updated to version 5.15.8.
Qt : Updated to version 5.15.8.
USD : Updated to version 23.05.
ZLib : Added version 1.2.13.