Releases: GafferHQ/gaffer
Releases · GafferHQ/gaffer
Gaffer 1.4.15.0
Improvements
- Arnold : Added support for Int64Data and UInt64Data custom attributes, allowing USD's
instanceId
to be used as a custom attribute in the Instancer node. Warnings are emitted if values are out of range for Arnold's 32 bit ints.
Fixes
- SceneReader : Fixed crash reading facevarying normals skinned with UsdSkel.
- ShaderView : Fixed crash caused by a SceneCreator returning
None
.
Build
- Cortex : Updated to version 10.5.9.5.
Gaffer 1.5.0.0 alpha 2
Features
- PatternMatch : Added a new node for matching strings against wildcard patterns.
Improvements
- Arnold :
- Added location names to warning messages.
- A missing "P" primitive variable no longer aborts the render, but outputs a warning message instead.
- Instancer :
- Improved Arnold raytracing performance for encapsulated instancers with many prototypes. All instances are now output in a single top-level procedural rather than a top-level procedural per prototype, resulting in more optimal BVH traversals in Arnold.
- Reduced scene generation time for encapsulated instancers by around 20%.
- NodeEditor : Added Alt + middle-click action for showing context variable substitutions in strings.
- LightEditor, RenderPassEditor : History windows now use a context determined relative to the current focus node.
- NumericWidget : Added the ability to use Ctrl + scroll wheel to adjust values in the same manner as Up and Down (#6009).
- NodeEditor : Improved performance when showing a node with many colour plugs. Showing the Arnold
standard_surface
shader is now almost 2x faster. - GraphEditor : Added colour coding to the strike-throughs drawn for disabled nodes. Black indicates that the node is always disabled, and yellow indicates that its
enabled
plug has an input connection, and therefore might be context-sensitive. - ListContainer : Adding a child widget with non-default alignment no longer causes the container to take up all available space.
- PythonCommand : Added a
framesMode
plug which determines if the command is called once for each frame, once for each batch of frames, or once for each complete sequence.
Fixes
- Viewer, ImageGadget :
- Fixed partial image updates when an unrelated InteractiveRender was running (#6043).
- Fixed "colour tearing", where updates to some image channels became visible before updates to others.
- Fixed unnecessary texture updates when specific image tiles don't change.
- Viewer :
- Fixed drawing of custom mesh light texture visualisers (#6002).
- Fixed BackgroundTask warning when deleting the node being viewed.
- GraphEditor :
- Fixed lingering error badges (#3820).
- Fixed D shortcut to respect read-only metadata on
enabled
plugs. Previously only metadata on the node itself was respected. - Fixed D shortcut to handle multiple selection with some nodes enabled and some disabled. This will now consistently disabled all nodes if at least one is enabled, rather than toggling each individually.
- RenderPassEditor :
- Fixed history window to update on context changes, for example, when the current frame is changed.
- Fixed invalid
scene:path
context variables created by the history window.
Breaking Changes
- IECoreArnold : Added
messageContext
argument toNodeAlgo::Converter
andNodeAlgo::MotionConverter
. - Instancer : Renamed
encapsulateInstanceGroups
plug toencapsulate
. Encapsulation now produces a single capsule at the.../instances
location, instead of capsules at each.../instances/<prototypeName>
location. - GraphGadget : Moved D shortcut handling to GraphEditor.
- PythonCommand : Removed
sequence
plug. Settings from old files are remapped automatically to the newframesMode
plug on loading.
Gaffer 1.4.14.0
Improvements
- NumericWidget : Added the ability to use Ctrl + scroll wheel to adjust values in the same manner as Up and Down (#6009).
- NodeEditor : Improved performance when showing a node with many colour plugs. Showing the Arnold
standard_surface
shader is now almost 2x faster.
Fixes
- Viewer, ImageGadget :
- Fixed partial image updates when an unrelated InteractiveRender was running (#6043).
- Fixed "colour tearing", where updates to some image channels became visible before updates to others.
- Fixed unnecessary texture updates when specific image tiles don't change.
- Viewer : Fixed drawing of custom mesh light texture visualisers (#6002).
- ArrayPlug :
- Fixed error when
resize()
removed plugs with input connections. - Fixed error when
resize()
was used on an output plug.
- Fixed error when
- CreateViews : Fixed loading of files saved from Gaffer 1.5+.
- PythonCommand : Fixed loading of files saved from Gaffer 1.5+.
Gaffer 1.3.16.9
Fixes
- Viewer, ImageGadget :
- Fixed partial image updates when an unrelated InteractiveRender was running (#6043).
- Fixed "colour tearing", where updates to some image channels became visible before updates to others.
- Fixed unnecessary texture updates when specific image tiles don't change.
- Viewer : Fixed drawing of custom mesh light texture visualisers (#6002).
- ArrayPlug :
- Fixed error when
resize()
removed plugs with input connections. - Fixed error when
resize()
was used on an output plug.
- Fixed error when
- CreateViews : Fixed loading of files saved from Gaffer 1.5+.
- PythonCommand : Fixed loading of files saved from Gaffer 1.5+.
Gaffer 1.5.0.0 alpha 1
Note : Gaffer 1.5 marks the end of provision of GCC 9 builds on Linux. Use Gaffer 1.4 if you require GCC 9 builds.
Features
- MergeMeshes, MergePoints, MergeCurves : Added nodes for merging various primitive types.
Improvements
- CameraTweaks : Added
ignoreMissing
plug to align behaviour with the other Tweaks nodes. - AttributeTweaks : The
{source}
substitution forlinkedLights
now expands todefaultLights
if the attribute doesn't exist yet. This makes tweaks such as({source}) - unwantedLights
reliable even if no light links have been authored yet. - ImageReader : Non-standard "r", "g", "b" and "a" channel names are now automatically renamed to "R", "G", "B" and "A" on loading. As with other heuristics, this can be disabled by setting
channelInterpretation
to "EXR Specification". - Metadata : Metadata registered to a node or plug targeting a descendant plug will now override metadata registered locally to the target.
- OptionTweaks, ContextVariableTweaks : Added
Remove
mode. - Premultiply, Unpremultiply :
- Added
ignoreMissingAlpha
plug. - Optimised the pass-through of the alpha channel.
- Added
- GraphGadget :
- Improved highlighting of active nodes, with more accurate tracking of Loop node iterations.
- Annotation
{plug}
substitutions are now evaluated in a context determined relative to the focus node. - The strike-through for disabled nodes is now evaluated in a context determined relative to the focus node.
- Custom dot labels are now evaluated in a context determined relative to the focus node.
- LightEditor :
- Improved formatting of column headers containing whitespace.
- The "Double-click to toggle" tooltip is no longer displayed while hovering over non-editable cells, and a "Double-click to edit" tooltip is now displayed while hovering over other non-toggleable but editable cells.
- Spreadsheet : Added yellow underlining to the currently active row.
- PlugLayout : Summaries and activators are now evaluated in a context determined relative to the focus node.
- Editor : The node graph is now evaluated in a context determined relative to the focus node.
- LightEditor, RenderPassEditor : The "Disable Edit" right-click menu item and D shortcut now act as a toggle, where edits disabled in the current session via these actions can be reenabled with D or by selecting "Reenable Edit" from the right-click menu.
- EditScope : Setting a Viewer or Editor's target edit scope to "None" will now prevent edits from being made within any upstream edit scope. To make edits in an edit scope, it must be set as the target.
- FreezeTransform :
- Improved performance for large meshes by using multithreading.
- Improved UI responsiveness by supporting cancellation of long computes.
Fixes
- Editor : Fixed
Internal C++ object already deleted
errors when some editors were destroyed. - UVInspector : Fixed
Unable to find ScriptNode for UVView
warnings. - Scene Editors : Fixed update when ScenePlugs are added to or removed from the node being viewed.
- PrimitiveInspector : Fixed failure to update when the location being viewed ceases to exist, or is recreated.
- Shuffle, ShuffleAttributes, ShufflePrimitiveVariables : Fixed some special cases where shuffling a source to itself would fail to have the expected effect.
- GraphEditor :
- Fixed dimming of labels for BoxIn and BoxOut nodes.
- Fixed update of custom context-sensitive labels on Dot nodes.
- GafferCortexUI : Removed usage of legacy PlugValueWidget API.
- Dispatcher : Fixed crashes caused by a dispatcher's
SetupPlugsFn
attempting to access the TaskNode it was being called for. Dispatchers may now introspect the TaskNode and add different plugs based on type (#915). - ArrayPlug :
- Fixed error when
resize()
removed plugs with input connections. - Fixed error when
resize()
was used on an output plug.
- Fixed error when
- CreateViews : Fixed redundant serialisation of internal connections.
- LightEditor, RenderPassEditor : Removed ambiguous
The selected cells cannot be edited in the current Edit Scope
message when attempting to edit non-editable columns, such as theName
column. - SetEditor : Fixed right-click to ensure the item under the cursor is selected before the menu is shown.
- PrimitiveInspector :
- Fixed bug which prevented cancellation of long-running computes, making the UI unresponsive until they completed.
- Fixed thread-safety bug.
- HierarchyView, SetEditor : Fixed thread-safety bugs.
- FreezeTransform : Constant primitive variables with point/vector interpretations are now also transformed.
- usdview : Added Windows support (#5599).
- ContextTracker : Removed unnecessary reference increment/decrement from
isTracked()
,context()
andisEnabled()
. - Menu : Fixed bug causing a menu item's tooltip to not hide when moving the cursor to another menu item without a tooltip.
- Python : Fixed startup failures caused by conflicting Python modules in the user
site-packages
directory.
API
- Editor :
- Added
settings()
method, which returns a node hosting plugs specifying settings for the editor. - Added
_updateFromSettings()
method, which is called when a subclass should update to reflect changes to the settings.
- Added
- SceneEditor : Added new base class to simplify the creation of scene-specific editors.
- PlugValueWidget :
- A
DeprecationWarning
is now emitted for any subclasses still implementing the legacy_updateFromPlug()
or_updateFromPlugs()
methods. Implement_updateFromValues()
,_updateFromMetadata()
and_updateFromEditable()
instead. - A
DeprecationWarning
is now emitted by_plugConnections()
. Use_blockedUpdateFromValues()
instead. - Added
scriptNode()
convenience method.
- A
- NodeGadget, ConnectionGadget : Added
updateFromContextTracker()
virtual methods. - Path : Added
inspectionContext()
virtual method. - PathColumn :
- Added
contextMenuSignal()
, allowing the creation of custom context menus. - Added
instanceCreatedSignal()
, providing an opportunity to connect to the signals on any column, no matter how it is created. - Added
keyPressSignal()
andkeyReleaseSignal()
, allowing a PathColumn to handle key events.
- Added
- ArrayPlug :
- It is now legal to construct an ArrayPlug with a minimum size of 0. Previously the minimum size was 1.
- Added
elementPrototype()
method.
- View : Added
scriptNode()
method. - VisibleSet : Added Python constructor with keyword arguments for
expansions
,inclusions
andexclusions
. - ScriptNodeAlgo : Added new namespace with functions for managing shared UI state for GafferSceneUI.
- ContextAlgo : Deprecated. Use ScriptNodeAlgo instead.
- ContextTracker : Added support for plugs in Views and
Editor.Settings
nodes, which should use the tracked context for the node being viewed.
Breaking Changes
- CameraTweaks :
Replace
mode now errors if the input parameter does not exist. UseCreate
mode or the newignoreMissing
plug instead. - TweakPlug : Remove deprecated
MissingMode::IgnoreOrReplace
. - AttributeTweaks :
Replace
mode no longer errors if thelinkedLights
attribute doesn't exist. - ImageReader : Changed handling of lower-cased "r", "g", "b" and "a" channels.
- Metadata : Path based registrations to a Node or Plug now override equivalent registrations on its descendants.
- TweakPlugValueWidget : Removed support for
tweakPlugValueWidget:allowCreate
andtweakPlugValueWidget:allowRemove
metadata. - Editor : Removed arguments from
Settings
constructor. - Unpremultiply : Removed
image:channelName
from the context used to evaluate thealphaChannel
plug. - Shuffle, ShuffleAttributes, ShufflePrimitiveVariables : Changed behaviour when shuffling a source to itself.
- Editor, NodeToolbar, PlugLayout, PlugValueWidget :
- Removed
setContext()
methods. - Deprecated
getContext()
methods. Usecontext()
instead.
- Removed
- Loop : Removed
nextIterationContext()
method. - NodeGadget, ConnectionGadget : Removed
activeForFocusNode()
virtual methods. OverrideupdateFromContextTracker()
instead. - ArrayPlug :
- Renamed
element
constructor argument toelementPrototype
. - Deprecated the passing of
element = nullptr
to the constructor.
- Renamed
- View :
- Changed constructor arguments for View and all subclasses. A ScriptNode must now be passed.
- Changed
ViewCreator
signature. - Removed
contextChanged()
andcontextChangedConnection()
methods. - Removed
setContext()
andgetContext()
methods. Usecontext()
instead ofgetContext()
. - The
contextChangedSignal()
is now emitted for all changes to the context, whereas previously it was only emitted bysetContext()
. This simplifies context handling in Tools, which no longer need to connect toContext::changedSignal()
as well.
- LightTool : Removed
selection()
andselectionChangedSignal()
. - ArnoldRender, CyclesRender, DelightRender, OpenGLRender : Removed. Use the generic Render node instead.
- Render : Removed protected constructor for creating renderer-specific derived classes.
- Signal : The
connect()
andconnectFront()
methods now default toscoped = False
. If a scoped connection is required, passscoped = True
. - FreezeTransform : Constant primitive variables with point/vector interpretations are now also transformed (this is more correct, but it is a change in behaviour).
- ImageGadget : Remove non-const variant of
getContext()
. - LazyMethod :
deferUntilPlaybackStops
now requires that the Widget has ascriptNode()
method rather than acontext()
method. - Python : Gaffer now disables the user site-packages directory by setting
PYTHONNOUSERSITE=1
. To revert to the previous behaviour, setPYTHONNOUSERSITE=0
before launching Gaffer.
Build
- Cycles :
- Updated to version 4.2.0.
- Disabled CUDA binary generati...
Gaffer 1.4.13.0
Improvements
- NodeEditor, NameWidget : Invalid characters are automatically converted to
_
when renaming a node or plug, and:
is no longer treated as invalid.
Fixes
- SceneReader :
- Fixed loading of facevarying normals skinned with UsdSkel.
- Stopped loading USD
lightLinks
andshadowLinks
collections as sets. - USD asset paths on Windows now use
/
as the path separator, instead of\
. SetIECOREUSD_FORCE_ASSET_PATH_FORWARD_SLASH=0
to keep the previous behaviour.
- SceneWriter : Fixed crash when writing to a USD file that is already open elsewhere.
- Constraint : The
target
browser now shows locations from thetargetScene
if it has an input connection. Before it always showed locations from the main input. - ImageInspector : Fixed broken UI caused by double-clicking in the Image tab.
API
- ScenePathPlugValueWidget : The
scenePathPlugValueWidget:scene
metadata now accepts a space-separated list of plugs, taking the first plug which has an input connection. - VisibleSet : Added Python constructor with keyword arguments for
expansions
,inclusions
andexclusions
. - ScriptNodeAlgo : Added new namespace with functions for managing shared UI state for GafferSceneUI.
- ContextAlgo : Deprecated. Use ScriptNodeAlgo instead.
Build
- Cortex : Updated to version 10.5.9.4.
Gaffer 1.4.12.0
Features
- Viewer : Added support for Cycles GPU rendering via a new Device option in the Cycles viewer settings.
Improvements
- UI Editor :
- Added the ability to edit the scale of node icons.
- Improved layout of Box node plug creator visibility toggles.
- ArnoldShader : Moved the
toon
shader's*_tonemap_hue_saturation
parameters to appropriate sections in the UI. - File Browser : The "Type" column can now be sorted. This sorts directories separately from files, which are sorted by their extension.
Fixes
- SceneWriter : Fixed handling of ':' characters in set names when writing to USD. These were previously converted to '_' but are now preserved.
- SceneReader : Fixed loading of animated ModelAPI extents from USD.
- ResamplePrimitiveVariables : Fixed handling of periodic curves.
- VectorDataWidget : Fixed bug causing paths to display as "..." after the last visible "/" when the widget wasn't wide enough to show the entire path.
API
- MetadataWidget : Added
NumericMetadataWidget
class. - RenderPassWedge : Render adaptors may now be used to delete and/or disable render passes, by passing
client = "RenderPassWedge"
toSceneAlgo.registerRenderAdaptor()
.
Gaffer 1.3.16.8
Fixes
- VectorDataWidget : Fixed bug causing paths to display as "..." after the last visible "/" when the widget wasn't wide enough to show the entire path.
Gaffer 1.4.11.0
Improvements
- SetExpressions : Set Expressions containing only whitespace characters are now treated as empty rather than producing an error.
- ArnoldShader :
- Added a UI layout for the new
openpbr_surface
shader. - Moved Arnold 7.3.3.0's new
standard_volume.scatter_diffusion
parameters to a "Scatter Diffusion" section of the UI.
- Added a UI layout for the new
- Viewer : Added diagnostic shading mode for visualising the values of the
usd:purpose
attribute as colours :- White : Default
- Green : Render
- Blue : Proxy
- Red : Guide
- Catalogue : Added a handle for controlling the relative sizes of the listing and image property widgets.
- RenderPassEditor, LightEditor : Improved update performance for certain graph configurations, by optimising
SceneAlgo::history()
(#5199).
Fixes
- Arnold : Fixed bug preventing UI metadata for Imagers from being loaded for Arnold 7.3.
- WidgetAlgo : Fixed issue preventing
grab()
from capturing popup menus on Windows. - ShowURL : Fixed opening of "file://" URLs on Windows (#5861).
- Shader : Fixed "Revert to Defaults" menu item in NodeEditor (#1862).
- Catalogue :
- Fixed bug which allowed locked Catalogues to be edited.
- Fixed NodeEditor update when the first image is added or the last image is removed.
- NameWidget : Fixed bug which allowed plugs on locked nodes to be renamed.
- ValuePlug : Fixed the plug passed to
Monitor::forceMonitoring()
. PreviouslyProcess::destinationPlug()
was being passed instead ofProcess::plug()
.
API
- PathListingWidget : Added
columnContextMenuSignal()
, allowing multiple clients to collaborate on the creation of a column-specific context menu. - HierarchyView : Added
sceneListing()
method, to allow the context menu to be customised.
Documentation
- Windows : Documentation is now included in Windows release packages.
Gaffer 1.4.10.0
Improvements
- LightEditor :
- Values of inherited attributes are now displayed in the Light Editor. These are presented as dimmed "fallback" values. Values are inherited from an ancestor of the inspected location or from attributes created in the scene globals.
- Default values are now displayed as dimmed "fallback" values for attributes that don't exist in the scene.
- When a fallback value is displayed, the cell's tooltip includes a description of the source of the value.
- LightEditor, RenderPassEditor : Fallback values shown in the history window are displayed with the same dimmed text colour used for fallback values in editor columns.
- EditScope : Filtered the EditScope menu to show only nodes that are active in the relevant context.
Fixes
- ImageReader : Fixed crash caused by invalid OpenEXR
multiView
attributes. - LightEditor, RenderPassEditor : Added missing icon representing use of the
CreateIfMissing
tweak mode in the history window. - Slider : Fixed bug where two undo steps were needed to get back to the original value when dragging.
API
- ContextTracker : Added a new class that determines what contexts nodes are evaluated in relative to the focus node. This allows UI components to provide improved context-sensitive feedback to the user.
- Loop : Added
previousIteration()
method.