0.58.0.0
Caution
References containing promoted Spreadsheets, when saved from Gaffer 0.58, can not be loaded in previous versions of Gaffer.
Features
Improvements
Caching : Improved interactive performance using an improved hash cache invalidation strategy.
SceneNode : Improved performance for all nodes that must propagate bounds from children to parents.
PointsType : Removed unnecessary bounds computation overhead.
OSLObject/ClosestPointSampler/CurveSampler : Improved performance for cases where multiple downstream computes require the same upstream object.
Stats app : Added
-locationargument, to allow profiling of a single location in a scene.AnimationEditor : Improved performance.
MessageWidget : Added alternate presentation options allowing log-style message display, search, etc.
Viewer : Added warning/error message count to Render Control overlay.
Fixes
GraphEditor : Implemented undo for node drags (#423).
Reference (#3810) :
Fixed bug which caused promoted Spreadsheet values to be lost when exporting a Box for referencing.
Fixed bug which caused promoted Spreadsheet cells to be duplicated by copy/paste.
Prevented addition and removal of rows and columns for promoted Spreadsheets, as changes will be lost when reloading the reference.
DeleteSets : Fixed bug which allowed the deletion of Gaffer’s internal
__lights,__camerasand__lightFilterssets. These are now always preserved, because they are needed to output the scene for rendering.TransformTool :
Fixed handle orientation for transforms with negative scaling.
Fixed handle positions for locations with PointConstraints or ParentConstraints applied.
Fixed translation and rotation of locations with a ParentConstraint applied.
Fixed rotation of locations with negative scaling.
ImageReader/ImageWriter : Fixed handling of errors in Python functions registered using
setDefaultColorSpaceFunction().StyleSheet : Fixed monospace font stack.
GafferUI : Fixed lingering highlight state if a Button was disabled whilst the cursor was over it.
Signal : Fixed hang which could occur if a result combiner implemented in Python tried to handle exceptions.
NumericWidget : Fixed errors when trying to use a virtual slider with an empty value.
GraphComponent : Fixed return value for
items()method. The returned keys are now regularstr()objects rather thanInternedString.Fixed dependency tracking bugs in the following nodes :
UDIMQuery
Shader
FilterResults
FreezeTransform
ImageMetadata
FlatImageProcessor
FlatToDeep
OpenImageIOReader
LevelSetOffset
MeshToLevelSet
CopyPrimitiveVariables
CopyAttributes
SubTree
MergeScenes
CollectScenes
Instancer
Duplicate
ClosestPointSampler
CurveSampler
DeleteSets
SetAlgo : Fixed
affectsSetExpression()to returnTrueforScenePlug::setNamesPlug().GafferTractor: Fixed evaluation of ‘tag’ and ‘service’ plugs on Task nodes. Previously, these plugs were evaluated in the default context, which prevented one from using custom context variables (e.g. from Wedge node) to compute tags or service keys dynamically.
NodeEditor : Reduced layout flicker when switching between nodes.
Spreadsheet : Fixed bug that could result in editor windows being placed partially off screen.
ValuePlug : Fixed bug that could cause the wrong plug to be reported in
ProcessExceptions.
API
ValuePlug
Improved interactive performance by not clearing the entire hash cache every time a plug is dirtied. Beware : this can reveal subtle bugs in
DependencyNode::affects()implementations, causing hashes to be reused if a plug has not been dirtied appropriately. These bugs may previously have gone unnoticed but will now need fixing as a matter of urgency. The GAFFER_HASHCACHE_MODE environment variable may be set to “Legacy” to enable legacy behaviour in the interim, or to “Checked” to enable a slow mode which throws exceptions at the source of hash cache cache errors caused by badaffects()implementations.Added
clearHashCache()static method.Added
resetDefault()method.
ScenePlug :
Added
existsPlug()accessor, and deprecated the argumentless overload of theexists()method.Added
childBoundsPlug(),childBounds()andchildBoundsHash()methods.
ObjectProcessor : Added
processedObjectComputeCachePolicy()virtual method. This should be overridden to choose an appropriate cache policy whencomputeProcessedObject()spawns TBB tasks.SceneNode :
Deprecated
hashOfTransformedChildBounds(). UseScenePlug::childBoundsHash()instead.Deprecated
unionOfTransformedChildBounds(). UseScenePlug::childBounds()instead.
IECorePreview::Renderer : Added optional message handler to renderer construction to allow output message streams to be re-directed if required (#3419).
InteractiveRender :
InteractiveRenderTest :
Scoped a
UIThreadCallHandlerfor all test methods, available viaself.uiThreadCallHandler.Refactored
_createInteractiveRendermethod to provide a default implementation that creates a render node with suitable error propagation.
Graphics : Renamed
errorNotificationSmallicon toerrorSmall.NotificationMessageHandler : Constructor now accepts
GafferUI.MessageWidgetconstructor kwargs to configure the widget.PlugValueWidget : Added the capability to edit more than one plug at a time.
Added
setPlugs()andgetPlugs()methods. The previoussetPlug()andgetPlug()methods remain as a convenience.Derived classes should now override
setPlugs()rather thansetPlug(), but backwards compatibility is preserved for classes which have not been converted yet.Derived classes should now implement
_updateFromPlugs()rather than_updateFromPlug(), but backwards compatibility is preserved for classes which have not been converted yet.create()now optionally accepts a list of plugs in place of a single plug.Updated the following subclasses to fully support multiple plugs :
NumericPlugValueWidget
CompoundNumericPlugValueWidget
ColorSwatchPlugValueWidget
ColorPlugValueWidget
StringPlugValueWidget
TweakPlugValueWidget
BoolPlugValueWidget
PresetsPlugValueWidget
SetAlgo : Added Python binding for
affectsSetExpression().Shader : Added
affectsAttributes()protected method.MessageWidget :
Added MessageSummaryWidget class to simplify the display of message counts in other UIs.
Added
scrollToNextMessage()andscrollToPreviousMessage()methods.
MetadataAlgo : Added
readOnlyReason, returning the outer-mostGraphComponentthat causes the specified component to be read-only.EditScopeAlgo : Added
prunedReadOnlyReason,transformEditReadOnlyReasonandparameterEditReadOnlyReasonto determine the outer-mostGraphComponentcausing and edit (or potential edit) to be read-only.Window : Changed
setPositionsuch that the whole window will remain on screen. SetforcePositiontoFalseto disable this behaviour.ImageGadget : Added support for GPU-based clipping, exposure, gamma and display transform.
TestCase : Added
failureMessageLevelattribute to control which messages trigger test failures.GafferSceneTest : Added
exposureFloatPlugtoTestLight.
Breaking Changes
Filter : Removed virtual
sceneAffectsMatch()method. Derived classes should implementaffects()instead.FilterPlug : Replaced
sceneAffectsMatch()method with a more generalsceneAffects()method. This should be used to replace any calls to the old method.PointsType : Changed base class from Deformer to ObjectProcessor.
Gaffer : Removed
lazyImport()method.GafferUI : Removed deprecated
_qtImport()method. Usefrom Qt importinstead.Startup :
Removed several compatibility shims for loading files from Gaffer versions prior to 0.20.0.0. Either resave the file from version 0.57.0.0 or adopt the appropriate shim into your own configuration. The following are affected :
RemoveChannels nodes.
OpenColorIO nodes.
Certain ImageWriter settings from version 0.17.0.0 and prior.
Expression nodes from version 0.18.0.0 and prior.
Invalid
Node.userplug inputs from version 0.18.0.0 and prior.Reformat nodes from version 0.19.0.0 and prior.
Crop nodes from version 0.20.0.0 and prior.
TaskNodes from version 0.20.0.0 and prior.
Removed several compatibility shims for running old Python code without modification. Either update your code or adopt the appropriate shim into your own configuration.
Gaffer.MetadataAlgoandGaffer.MonitorAlgocan no longer be accessed without namespace qualification.GafferImage.ImageAlgoandGafferImage.BufferAlgocan no longer be accessed without namespace qualification.GafferScene.SceneAlgocan no longer be accessed without namespace qualification.GafferDispatchattributes can no longer be accessed via theGaffernamespace.Gaffer.UndoContextis no longer an alias forGaffer.UndoScope.GafferDispatchUIattributes can no longer be accessed via theGafferUInamespace.GafferDispatch.ExecutableNodeis no longer an alias forGafferDispatch.TaskNode.GafferCortex.ParameterisedHolderExecutableNodeis no longer an alias forGafferCortex.ParameterisedHolderTaskNode.GafferCortexattributes can no longer be accessed via theGaffernamespace.GafferCortexUIattributes can no longer be accessed via theGafferUInamespace.
RecursiveChildIterator : Changed private member data. Source compatibility is maintained.
IECorePreview::Renderer : Changed signature for
createandregisterTypeto include optional message handler.ObjectProcessor : Added a virtual method.
PlugValueWidget :
Renamed
create()argument fromplugtoplugs. A single plug may still be passed.Renamed constructor argument from
plugtoplugs. A single plug may still be passed. The same applies to the constructors for the following subclasses :NumericPlugValueWidget
CompoundNumericPlugValueWidget
ColorSwatchPlugValueWidget
ColorPlugValueWidget
StringPlugValueWidget
TweakPlugValueWidget
BoolPlugValueWidget
PresetsPlugValueWidget
Removed connections to
plugFlagsChangedSignal(). In the unlikely event that a derived class depends on plug flags, it must now manage the updates itself.
InteractiveRender :
Changed base class from Node to ComputeNode, added members.
stateandrendererplugs can no longer be connected to compute node outputs due to dirty propagation constraints.
InteractiveRenderTest : Added
interactiveRenderNodeClassmember that must be populated with render node class by derived test cases (#3803).MessageWidget : Removed deprecated
appendMessagemethod, usemessageHandler().handle()instead.Shader : Added virtual method.
MetadataAlgo :
readOnly( None )will now raise an Exception instead of returningFalse.FormatPlug :
Removed private member.
Changed signature of
defaultValue()method.
ValuePlug : Added virtual method.
Build
Updated to GafferHQ/dependencies 1.6.0.