Skip to content

Releases: GafferHQ/gaffer

Gaffer 1.5.2.0

13 Dec 09:31
Compare
Choose a tag to compare

Caution : The GafferML features introduced in this release are considered experimental, and are not subject to the usual backwards compatibility guarantees that apply to the rest of Gaffer.

Features

  • GafferML : Added a new module with the following nodes for running machine learning models via ONNX Runtime :
    • DataToTensor : Converts Gaffer data to tensors.
    • Inference : Loads ONNX models and performs inference using an array of input tensors.
    • ImageToTensor : Converts images to tensors for use with the Inference node.
    • TensorToImage : Converts tensors back to images following inference.
  • VisualiserTool : Added tool to 3D viewer for visualising primitive variables on meshes.

Improvements

  • MergeScenes : Removed unnecessary temporary contexts.
  • RenderPassEditor :
    • Added support for entering custom values in the Type column. Custom types can be later configured with a downstream NameSwitch selecting based on the value of the renderPass:type option.
    • Columns that edit options now include the option name in their header tooltip.
    • Improved description of render:cameraExclusions and render:matteExclusions options.

Fixes

  • MergeScenes : Fixed bug handling input connections not originating from the output of another node. These could cause locations provided by other inputs to lose all their properties.
  • PathFilter : Fixed bug allowing dropping paths onto read-only PathFilter nodes in the graph.
  • VectorDataWidget : Fixed bug allowing dropping paths onto read-only widgets.
  • GraphEditor : Fixed errors when dragging an unknown file type into the GraphEditor.
  • Widget : Fixed event.sourceWidget for DragDropEvents generated from a Qt native drag within the same Gaffer process. This will now reference the GafferUI.Widget that the Qt source widget belongs to, if any.
  • Catalogue : Fixed bug which "stole" drags that crossed the image listing but which were destined elsewhere, for instance a drag from the HierarchyView to a PathFilter in the GraphEditor.
  • GadgetWidget : Fixed signal handling bug in setViewportGadget(). This could cause the widget to attempt to redraw unnecessarily when the old viewport requested a redraw.
  • EditScope : Fixed error updating the Global Edit Target in read-only files.
  • RandomChoice : Fixed errors right-clicking on non-value plugs in the NodeEditor.

API

  • PlugLayout : Activations may now depend on the presence of certain plugs, as they are now reevaluated when child plugs are added and removed.
  • IECoreArnold::ShaderNetworkAlgo : Added a new API to allow just-in-time substitutions to be made when translating shaders to Arnold. Use with care.

Gaffer 1.4.15.3

13 Dec 09:13
Compare
Choose a tag to compare

Fixes

  • ArrayPlug : Fixed loading of promoted plugs saved from Gaffer 1.5+.
  • GraphEditor : Fixed errors when dragging an unknown file type into the GraphEditor.
  • Widget : Fixed event.sourceWidget for DragDropEvents generated from a Qt native drag within the same Gaffer process. This will now reference the GafferUI.Widget that the Qt source widget belongs to, if any.
  • Catalogue : Fixed bug which "stole" drags that crossed the image listing but which were destined elsewhere, for instance a drag from the HierarchyView to a PathFilter in the GraphEditor.
  • GadgetWidget : Fixed signal handling bug in setViewportGadget(). This could cause the widget to attempt to redraw unnecessarily when the old viewport requested a redraw.
  • RandomChoice : Fixed errors right-clicking on non-value plugs in the NodeEditor.

Gaffer 1.5.1.0

22 Nov 14:44
Compare
Choose a tag to compare

Features

  • EditScope : Introduced the Global Edit Target, providing script-level control over the target used by editors. The Global Edit Target can be set from a new "Edit Target" menu in the menu bar, which displays all available edit targets upstream of the focus node.
    • Editors now follow the Global Edit Target by default, allowing for a simpler experience when switching multiple editors to a common target.
    • Individual editors can be overridden to use a specific edit target where necessary. An overridden editor can return to following the Global Edit Target via the new "Follow Global Edit Target" menu item.
    • While following the Global Edit Target, an editor's Edit Scope menu will shrink to only display an icon. When an Editor is overridden to a specific edit target, the menu grows to display the name of the target.

Improvements

  • Instancer :
    • Added inactiveIds plug for selecting primitive variables to disable some instances.
    • Added support for 64 bit integer ids (matching what is loaded from USD).
  • DeletePoints : Added modes for deleting points based on a list of ids.
  • Light Editor, Attribute Editor, Spreadsheet : Add original and current color swatches to color popups.
  • SceneView : Added fallback framing extents to create a reasonable view when SceneGadget is empty, for example if the grid is hidden.
  • ColorChooser :
    • Added an option to toggle the dynamic update of colors displayed in the slider and color field backgrounds. When enabled, the widget backgrounds update to show the color that will result from moving the indicator to a given position. When disabled, a static range of values is displayed instead.
    • Holding the Control key now constrains dragging in the color field to a single axis.
  • EditScope :
    • Simplified the Edit Scope menu UI :
      • Removed the dark background.
      • Changed the menu button color to be always blue.
      • Removed the "Navigation Arrow" button from the right side of the Edit Scope menu. Its actions have been relocated to a "Show Edits" submenu of the Edit Scope menu.
      • Hid the label. It can be made visible for a specific plug by registering editScopePlugValueWidget:showLabel metadata with a value of True.
    • Renamed "None" mode to "Source" and added icon.
    • The "Source" menu item now displays a checkbox when chosen.
    • Added a "No EditScopes Available" menu item that is displayed when no upstream EditScopes are available.
    • Increased menu item icon sizes.
    • A lock icon is now displayed next to read-only nodes.
  • RenderPassEditor : Changed the current render pass indicator to yellow to match other context-related UI elements.
  • GraphEditor : Moved "Show Input Connections" and "Show Output Connections" to "Connections" sub-menu and added "Show Input Labels" and "Show Output Labels" items.

Fixes

  • Render, InteractiveRender : Added default node name arguments to the compatibility shims for removed subclasses such as ArnoldRender.
  • GafferUITest : Fixed assertNodeUIsHaveExpectedLifetime() test for invisible nodes.
  • OpDialogue : Fixed postExecuteBehaviour handling.
  • LocalDispatcher : Fixed job status update when a job was killed immediately after being launched.
  • gaffer view : Fixed default OpenColorIO display transform.
  • AnimationEditor : Fixed changing of the current frame by dragging the frame indicator or clicking on the time axis.
  • ImageWriter : Matched view metadata to Nuke when using the Nuke options for layout. This should address an issue where EXRs written from Gaffer using Nuke layouts sometimes did not load correctly in Nuke (#6120). In the unlikely situation that you were relying on the old behaviour, you can set the env var GAFFERIMAGE_IMAGEWRITER_OMIT_DEFAULT_NUKE_VIEW = 1 in order to keep the old behaviour.
  • OSLObject : Fixed getattribute() to support 64 bit integer data, such as an instanceId primitive variable loaded from USD. Since OSL doesn't provide a 64 bit integer type, values are truncated to 32 bits.
  • MeshSplit : Vertex order is now preserved.
  • DispatchDialogue : Removed _DispatcherCreationWidget from shown nodes.

API

  • Int64VectorDataPlug : Added new plug type for passing vectors of int64.
  • OpenColorIOConfigPlugUI :
    • Added connectToApplication() function.
    • Deprecated connect() function. Use connectToApplication() instead.
  • SceneEditor : Added editScope() method.
  • Image : Added optional image argument to createSwatch() static method.
  • StandardNodeGadget : Added support for nodeGadget:inputNoduleLabelsVisible and nodeGadget:outputNoduleLabelsVisible metadata for setting nodule labels always on. If the metadata entry is not set or False, labels will be visible only when they are hovered over.

Build

  • Cortex : Updated to version 10.5.11.0.

Gaffer 1.4.15.2

22 Nov 11:03
Compare
Choose a tag to compare

Caution : Due to GitHub Actions no longer being compatible with CentOS 7 containers, the build process for the gcc9 builds has changed. The new builds should be entirely equivalent to earlier builds, but please notify us should any oddities appear.

Fixes

  • PathFilter : Fixed bug allowing dropping paths onto read-only PathFilter nodes in the graph.
  • VectorDataWidget : Fixed bug allowing dropping paths onto read-only widgets.

Gaffer 1.5.0.1

31 Oct 11:21
Compare
Choose a tag to compare

Fixes

  • CyclesShader : Fixed broken presets menus.
  • Windows :
    • Fixed handling of shader colour component to float connections in Cycles.
    • Added CORTEX_STARTUP_PATHS to match the Linux wrapper.
  • PlugPopup : Fixed error when displaying a popup with no PlugValueWidget.
  • Instancer : Fixed issue where wrong prototypes were sometimes used in encapsulated renders.

Gaffer 1.4.15.1

31 Oct 11:06
Compare
Choose a tag to compare

Fixes

  • PlugPopup : Fixed error when displaying a popup with no PlugValueWidget.

Gaffer 1.5.0.0

28 Oct 12:29
Compare
Choose a tag to compare

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

  • AttributeEditor : Added a new editor UI for inspecting and editing attributes. This can be found in the tab next to the RenderPassEditor in the Standard layouts.
  • ColorChooser :
    • Added sliders for TMI (temperature, magenta, intensity) color space.
    • Added color field, a widget giving control of two channels of "RGB", "HSV" or "TMI" triplets. The third channel is held constant.
    • The color field and RGB, HSV and TMI slider groups can now be toggled on or off.
    • Default visibility of the UI elements can now be set at startup by setting colorChooser:inline: and colorChooser:dialogue: entries for the inline chooser and dialogue chooser respectively, with the following suffixes :
      • visibleComponents : A string where each character is a visible component slider. Optional components are rgbhsvtmi.
      • staticComponent : A single character string for the component to use as the static component for the color field. The other two components in the "RGB", "HSV" and "TMI" triplets will be controllable in the widget.
      • colorFieldVisible : A boolean indicating if the color field should be visible or not.
    • Added a menu item to the color chooser settings to save the UI configuration for the inline color chooser and the dialogue color chooser as a startup script to persist the configuration across Gaffer restarts.
    • Changed the indicator for the color field and color sliders to an unfilled circle so the chosen color is visible in the center.
  • Cycles : Added support for OSL shading with Optix devices.
  • LevelSetToMesh : Added destination plug, allowing multiple input level sets to be merged into a single mesh at an arbitrary location.
  • MergeMeshes, MergePoints, MergeCurves : Added nodes for merging various primitive types.
  • MeshToLevelSet : Added destination plug, allowing multiple input meshes to be merged into a single level set at an arbitrary location.
  • MetadataOverlay : Added a new node for adding metadata overlays to images, with control over formatting, layout, font and drop shadow.
  • PatternMatch : Added a new node for matching strings against wildcard patterns.
  • UI : The entire UI is now "focus aware", meaning it uses the upstream contexts generated by the focus node. This greatly enhances useability for complex context-based workflows. Examples include :
    • The Viewer now views "pinned" nodes using the context in which they are evaluated by the focus node.
    • The NodeEditor correctly displays the results of expressions using context variables created by the focus node.
    • The GraphEditor shows when a node is disabled in the context in which it is evaluated by the focus node.

Improvements

  • Arnold :
    • Added location names to warning messages.
    • A missing "P" primitive variable no longer aborts the render, but outputs a warning message instead.
  • AttributeTweaks :
    • The {source} substitution for linkedLights now expands to defaultLights if the attribute doesn't exist yet. This makes tweaks such as ({source}) - unwantedLights reliable even if no light links have been authored yet.
    • AttributeTweaks : Added tooltips and presets for all attribute values.
  • CameraTweaks : Added ignoreMissing plug to align behaviour with the other Tweaks nodes.
  • Cycles :
    • Added is_sphere plug to spot and point lights. Disabling is_sphere is equivalent to enabling "Soft Falloff" in Blender, which reverts the light to the behaviour of Cycles 3.6 and earlier.
    • Changed sampling pattern to blue noise dithered sampling.
    • Spot, disk, quad and point light strength now better match Blender, Arnold and hdCycles. As a result these lights are now pi times brighter at the same intensity when compared with previous versions. If necessary, this adjustment can be disabled by setting the GAFFERCYCLES_USE_LEGACY_LIGHTS environment variable with a value of 1.
    • Simplified presentation of principled_bsdf, principled_hair_bsdf, and principled_volume shaders in the Graph Editor. A subset of parameter nodules are now visible by default, the remainder can be accessed by clicking on or connecting to the node's + icon and choosing the parameter to make visible.
  • CyclesOptions : Added denoiseDevice plug for configuring the device used for denoising.
  • Editor : The node graph is now evaluated in a context determined relative to the focus node.
  • 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.
  • GraphEditor :
    • 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.
    • 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.
  • 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".
  • 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%.
  • 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.
    • Added is_sphere column for Cycles lights.
  • 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.
    • History windows now use a context determined relative to the current focus node.
  • Metadata : Metadata registered to a node or plug targeting a descendant plug will now override metadata registered locally to the target.
  • NodeEditor : Added Alt + middle-click action for showing context variable substitutions in strings.
  • OptionTweaks, ContextVariableTweaks : Added Remove mode.
  • PlugLayout : Summaries and activators are now evaluated in a context determined relative to the focus node.
  • Premultiply, Unpremultiply :
    • Added ignoreMissingAlpha plug.
    • Optimised the pass-through of the alpha channel.
  • 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.
  • PythonEditor, PythonCommand, Expression, UIEditor, OSLCode : Added line numbers to code editors (#6091).
  • SceneReader : Added loading of invisibleIds and inactiveIds primitive variables from UsdGeomPointInstancer.
  • SceneWriter : Improved emulation of component-level shader connections when exporting Arnold and Cycles shaders to USD. Native adaptor shaders are now used instead of OSL shaders that may not be available in the destination DCC.
  • Spreadsheet : Added yellow underlining to the currently active row.
  • TweakPlug : Improved performance when dealing with large lists.
  • Windows : Gaffer now uses the TBB memory allocator for significantly better performance.

Fixes

  • Arnold : Fixed "Flush Cache" menu items to work with renders being performed by an InteractiveRender node (rather than an InteractiveArnoldRender node).
  • ArrayPlug :
    • Fixed error when resize() removed plugs with input connections.
    • Fixed error when resize() was used on an output plug.
  • ContextTracker : Removed unnecessary reference increment/decrement from isTracked(), context() and isEnabled().
  • CreateViews : Fixed redundant serialisation of internal connections.
  • Cycles :
    • Fixed rendering of shaders with connections to individual rgb components of a colour or xyz components of a vector (#5553).
    • Fixed issue where scaling unnormalized quad and disk lights would not affect their brightness.
  • 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).
  • Editor : Fixed Internal C++ object already deleted errors when some editors were destroyed.
  • Expression, OSLCode : Fixed line numbers reported in OSL parse errors.
  • FreezeTransform : Constant primitive variables with point/vector interpretations are now also transformed.
  • GafferCortexUI : Removed usage of legacy PlugValueWidget API.
  • GraphEditor :
    • Fixed dimming of labels for BoxIn and BoxOut nodes.
    • Fixed update of custom context-sensitive labels on Dot nodes.
    • 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 sho...
Read more

Gaffer 1.5.0.0 alpha 3

10 Oct 15:13
Compare
Choose a tag to compare
Pre-release

Features

  • ColorChooser :
    • Added sliders for TMI (temperature, magenta, intensity) color space.
    • Added color field, a widget giving control of two channels of "RGB", "HSV" or "TMI" triplets. The third channel is held constant.
    • The color field and RGB, HSV and TMI slider groups can now be toggled on or off.
    • Default visibility of the UI elements can now be set at startup by setting colorChooser:inline: and colorChooser:dialogue: entries for the inline chooser and dialogue chooser respectively, with the following suffixes :
      • visibleComponents : A string where each character is a visible component slider. Optional components are rgbhsvtmi.
      • staticComponent : A single character string for the component to use as the static component for the color field. The other two components in the "RGB", "HSV" and "TMI" triplets will be controllable in the widget.
      • colorFieldVisible : A boolean indicating if the color field should be visible or not.
    • Added a menu item to the color chooser settings to save the UI configuration for the inline color chooser and the dialogue color chooser as a startup script to persist the configuration across Gaffer restarts.
  • MeshToLevelSet : Added destination plug, allowing multiple input meshes to be merged into a single level set at an arbitrary location.
  • LevelSetToMesh : Added destination plug, allowing multiple input level sets to be merged into a single mesh at an arbitrary location.
  • Cycles : Added support for OSL shading with Optix devices.

Improvements

  • Cycles :
    • Added is_sphere plug to spot and point lights. Disabling is_sphere is equivalent to enabling "Soft Falloff" in Blender, which reverts the light to the behaviour of Cycles 3.6 and earlier.
    • Changed sampling pattern to blue noise dithered sampling.
    • Spot, disk, quad and point light strength now better match Blender, Arnold and hdCycles. As a result these lights are now pi times brighter at the same intensity when compared with previous versions. If necessary, this adjustment can be disabled by setting the GAFFERCYCLES_USE_LEGACY_LIGHTS environment variable with a value of 1.
    • Simplified presentation of principled_bsdf, principled_hair_bsdf, and principled_volume shaders in the Graph Editor. A subset of parameter nodules are now visible by default, the remainder can be accessed by clicking on or connecting to the node's + icon and choosing the parameter to make visible.
  • 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

  • Viewer : Fixed hangs when focussing a node for the first time (bug introduced in 1.5.0.0a2).
  • Cycles : Fixed issue where scaling unnormalized quad and disk lights would not affect their brightness.
  • SceneReader : Fixed crash reading facevarying normals skinned with UsdSkel.
  • ShaderView : Fixed crash caused by a SceneCreator returning None.

Breaking Changes

  • Cycles : Removed custom handling of unnormalized lights. We now rely on Cycles' inbuilt behaviour which results in a brightness difference for unnormalized point, spot and disk lights.
  • MeshToLevelSet : Objects which are not meshes are now converted to an empty VDB grid, instead of being left unchanged.
  • LevelSetToMesh :
    • Objects which are not level sets are now converted to an empty mesh, instead of being left unchanged.
    • Removed the adjustBounds plug. In the rare case where it is important to recompute slightly tighter bounds, one workaround is to use ShufflePrimitiveVariables to shuffle from "P" to "P" with adjustBounds checked.
    • Removed support for grid types other than FloatGrid. If other types are required, please request them.

Build

  • Cortex : Updated to version 10.5.9.5.
  • OpenShadingLanguage :
    • Updated to version 1.13.11.0.
    • Enabled Optix support.

Gaffer 1.4.15.0

10 Oct 15:07
Compare
Choose a tag to compare

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

07 Oct 12:14
Compare
Choose a tag to compare
Pre-release

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 to NodeAlgo::Converter and NodeAlgo::MotionConverter.
  • Instancer : Renamed encapsulateInstanceGroups plug to encapsulate. 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 new framesMode plug on loading.