Skip to content

Releases: GafferHQ/gaffer

Version 0.23.2.1

07 Apr 22:08
Compare
Choose a tag to compare
Version 0.23.2.1 Pre-release
Pre-release

Dispatch

  • PythonCommand : Disable automatic substitutions for command plug.

Build

  • Fix OS X linking error.

Version 0.23.2.0

05 Apr 17:32
Compare
Choose a tag to compare
Version 0.23.2.0 Pre-release
Pre-release

Apps

  • Stats
    • Fixed bug which caused errors when there were no items to print
      in a particular category (#1667).
    • Added -performanceMonitor flag, which outputs in depth statistics
      for use in analysing and optimising performance (#1668).
    • Added -image flag for outputting image statistics (#1680).

UI

  • Added back "Remove Input" menu option for promoted plugs. This differs
    from the "Unpromote" option in that it breaks the connection but keeps
    the promoted plug on the outside of the box (#1678).
  • NodeGraph (#1679)
    • Tightened rules for inserting nodes into noodles. Nodes are now only
      inserted when disabling the inserted node would create a pass-through
      equivalent to the original connection, and deleting the node will
      restore the original connection. Previously nodes could be inserted
      in such a way that one end of the connection was broken, or two new
      connections were made which had no logical in->out connection through
      the inserted node.
    • Stopped highlighting connections when hovering in their middle, where
      they cannot be dragged anyway.
    • Made it harder to accidentally drag a long connection by grabbing it
      in the middle - the sensitive section is now limited to a shorter
      segment near the end.

Scene

  • Improved output of objects and transforms which are static, but for
    which motion blur has been requested via StandardAttributes. Motion
    blocks are now omitted when no motion is detected (#1662).
  • ScriptProcedural (#1676)
    • Fixed clearing of caches after procedural expansion in Arnold.
    • Improved error reporting to include the node which caused the
      error.
    • Added support for performance monitoring.
  • StandardOptions
    • Added new performanceMonitor option, which enables/disables the
      performance monitoring now supported by the ScriptProcedural
      (#1676).
  • Duplicate
    • Optimised set name computation. This knocks 35% off the time
      to compute a set in a custom downstream node with certain
      suboptimal qualities (#1682).
  • Fixed hangs caused by missing GIL management in SceneAlgo
    bindings (#1686, #1687).

Dispatch

  • ExecutableNodes now support automatic substitution of variables in
    StringPlug values, in the same way as has always been supported
    by other node types (#887, #1671).
  • Fixed order of dispatch when postTasks exist (#1675).

Arnold

  • Removed use of deprecated UI APIs. Specifically,
    PlugValueWidget.registerCreator() has been deprecated, and all code
    should use the equivalent "plugValueWidget:type" metadata instead
    (#1673).

RenderMan

  • Added initial support for using OSL shaders in 3delight.

Appleseed

Cortex

  • Fixed UI error when launching a ClassVectorParameter UI with
    preexisting child parameters (#665, #1670).

Documentation

  • Added GafferDispatch to the API docs.

API

  • Added Process and Monitor classes. Processes expose internal
    processes such as ComputeNode::compute() and ComputeNode::hash()
    to Monitors - classes which can observe the internal workings of
    Gaffer via the exposed Processes (#1668).
  • Added PerformanceMonitor class. This uses the Monitor/Process
    API to collect statistics useful in analysing and optimising
    performance (#1668).
  • RendererAlgo
    • Added outputObject() method (#1662).
    • Added outputTransform() method (#1662).
  • ValuePlug
    • Deprecated inCompute() method - use Process::current() instead
      (#1668).
  • FormatData
    • Added workaround for unstable hash() method when compiling with
      GCC 4.4.7 (#1669).
  • ExecutableNode
    • Moved public interface to TaskPlug. The ExecutableNode virtual
      interface is now considered to be protected, and will be made
      so in a future release.
  • ScenePlug
    • Fixed python binding for pathToString().
    • Added helpers for accessing globals and set names. These manage
      the context such that it is friendlier to the hash cache, by
      removing variables we know to change frequently but which cannot
      affect the result #(1683).

Build

  • Updated Cortex to version 9.8.0.
  • Updated Appleseed version to 1.4.0-beta.

Version 0.23.1.0

04 Mar 20:24
Compare
Choose a tag to compare
Version 0.23.1.0 Pre-release
Pre-release

Apps

  • Stats App
    • Added outputs for scene traversal time and memory usage.

Core

  • Improved performance of the computation cache, particularly when under
    heavy multithreaded load (#1638).
  • Fixed GIL lock issues.
    • CompoundDataPlug releases when adding child plugs.
    • GraphComponent releases when adding/removing children.
    • Reference releases in load().
  • Switch
    • Add SwitchTraits to control context for index evaluation.

UI

  • SceneHierarchy
  • NodeEditor
    • Improved error handling for labels and multiline text fields (#1650).
  • NodeGraph
    • Fix "Find..." shortcut.
  • SceneInspector
    • Fixed labelling of CoordinateSystem sets (#1648).
  • ExecutableNode
    • Fixed UI for individually promoted pre/post tasks (#1647).
  • UIEditor
    • Add label field to plug section.
  • GLWidget
    • Supports use in Maya when using PySide.

Scene

  • ScenePlug
    • set() and setHash() are friendlier to the hash cache.
  • SceneSwitch
    • Removed scene:path from context for index.
  • FilterProcessor
    • Implement pass-through when disabled.
  • PathFilter
    • Fixed bugs which treated empty paths as "/" rather than ignoring them (#1642)
    • Avoid unnecessary hashing of __pathMatcher plug.
  • Set
    • Fixed bugs which treated empty paths as "/" rather than ignoring them (#1642)
  • SetFilter
    • Remove unnecessary context manipulation..
  • DeleteSets
    • Fixed bug which could pass-through a deleted set.
  • Isolate/Prune
    • Fixed bugs which caused incorrect results when used with a
      particular custom filter outside of Gaffer (#1652).
  • Shader
    • Fixed crashes caused by cyclic connections in shader networks (#1646).
  • Fixed GIL lock issues.
    • Outputs releases in addOutput().

Image

  • Warp
    • Added Warp base class.
    • Added UVWarp node.
  • BufferAlgo
    • Added index() function.
  • ImageSwitch
    • Removed tile variables from context for index.

RenderMan

  • Fixed GIL lock issues.
    • RenderManShader releases in loadShader().

API

  • PathMatcher
    • Fixed bugs which treated empty paths as "/" rather than as empty (#1642).
  • SceneAlgo
    • Added PathMatcher overloads for filteredParallelTraverse() and
      matchingPaths() (#1649).
  • MultiLineTextWidget
    • Added setErrored()/getErrored() methods to (#1650).
  • MultiLineStringPlugValueWidget/LabelPlugValueWidget
    • Added error handling (#1650).
  • ExecutableNode
    • Disabled nodule creation by default for all but TaskPlugs. Nodules
      can be explicitly reenabled using a ( "nodule:type", "GafferUI.StandardNodule" )
      metadata registration for a particular plug.
  • DownstreamIterator/RecursiveChildIterators
    • Fixed API for completion of iteration.
  • FilteredChildIterator
    • Added done() method.
  • TypedObjectPlug bindings : Add _copy argument to defaultValue() method.

Build

  • GafferUI now links to QtOpenGL

Version 0.23.0.1

12 Feb 14:05
Compare
Choose a tag to compare
Version 0.23.0.1 Pre-release
Pre-release

Cortex

  • Fixed ParameterisedHolder::parameterChanged() exception handling.

Version 0.23.0.0

10 Feb 23:33
Compare
Choose a tag to compare
Version 0.23.0.0 Pre-release
Pre-release

Core

  • Reverted cyclic connection check on plug connection
  • Reduced hash cache clearing frequency to speed up instancing.

UI

  • Fixed labelling of renamed plugs which had a custom label. The label
    is now removed by the rename operation (#1635).

Scene

  • Improved set performance and memory usage significantly for all node
    types (#1623).
  • Added a MeshToPoints node (#1640).
  • Added sets support in the Duplicate node (#1623).

Arnold

  • Added support for motion blur, courtesy of Cortex 9.7.0.

API

  • Fixed python bindings to accept any iterable where previously only
    lists were accepted (#1634).
  • ScriptWindow
    • Added createIfNecessary argument to ScriptWindow.acquire() (#1639).
  • NameLabel (#1635)
    • Exposed default formatter.
    • Deprecated setText().
  • PathMatcher (#1623)
    • Reimplemented using lazy-copy-on-write sharing.
    • Added addPaths() overload with prefix path.
    • Added subTree() method.
    • Added RawIterator find( path ) method.

Build

  • Updated release builds to Cortex 9.7.0.
  • Updated OCIO build to be compatible with Maya. It should now be
    possible to run a standard Gaffer build from within Maya.

Incompatibilities

  • PathMatcher binary compatibility changes.

Version 0.20.0.2

10 Feb 23:19
Compare
Choose a tag to compare
Version 0.20.0.2 Pre-release
Pre-release

Core

  • Reduced hash cache clearing frequency to speed up instancing.

Version 0.22.0.0

28 Jan 10:40
Compare
Choose a tag to compare
Version 0.22.0.0 Pre-release
Pre-release

This release brings support for dispatching via Pixar's Tractor, in
additional to the usual medley of bug fixes and optimisations.

Core

  • Prevented the creation of cyclic connections (#1630).

UI

  • Fixed bugs in "Set Key" plug menu item.
  • Fixed Backdrop node positioning when creating a backdrop with no
    nodes selected (#1625).
  • Fixed NodeEditor layout problems caused by long summaries (#1629).

Scene

  • SceneProcedural (#1615)
    • Fixed bug which could cause motion blurred bounding
      boxes to be computed incorrectly.
    • Removed duplicate attribute computations. This shaves
      9% off the time to first pixel for a complex benchmark scene.

RenderMan

  • Improved time to first pixel for raytraced 3delight renders (#1614).

Arnold

  • Fixed warnings about inaccurate bounds (#1614).

Appleseed

  • Added support for volume priority attribute (#1631).

Tractor

  • Added a new GafferTractor module, which enables dispatching of
    Gaffer's task graphs to renderfarms running Pixar's Tractor (#1619).

Cortex

  • Fixed UI for promoted presets parameters (#1624).
  • Fixed parameter ordering in UI (#1627).

API

  • ValuePlug
    • Prevented the addition of children which are not themselves
      ValuePlugs.
    • Allowed subclassing in Python.
  • FilteredSceneProcessor
    • Removed restrictions on Filter::sceneAffectsMatch() (#1620).
  • SceneProcedural/ScriptProcedural
    • Added support for using Renderer::Procedural::noBound (#1614).
  • Fixed GIL management in DependencyNodeWrapper.
  • Added DownstreamIterator.
  • Improved error handling during dirty propagation.
  • Batched dirty propagation during script loading, execution and
    destruction (#1632).

Tests

  • Unexpected messages are now treated as errors.

Build

  • Requires Cortex 9.6.0.

Version 0.21.0.0

12 Jan 18:30
Compare
Choose a tag to compare
Version 0.21.0.0 Pre-release
Pre-release

Apps

  • Added gaffer stats application. This takes a script and prints out
    information about version, settings, variables and nodes (#1437).

Core

  • Fixed serialisation of quotes and other special characters in metadata
    keys. This was most visible when using special characters in custom
    preset names (#1599).
  • Simplified metadata serialisations (#1599).

UI

  • Fixed UV orientation for area light visualisations (#1600).
  • Fixed environment light visualisations on OSX (#1609).
  • Viewer (#1592)
    • Improved image viewer performance.
    • Fixed several image viewer bugs (#1427, #1426, #1356, #773).
    • Added support for custom toolbars on all edges of the viewer,
      for both views and nodes.
  • Fixed hang when browsing scene locations (#1618).

Image

  • Fixed reference counting bugs in Premultiply and Unpremultiply nodes
    (#1598).
  • Fixed crashes caused by Merge requesting nonexistent upstream
    channels (#1596).

Appleseed

  • Added support for exposure parameters on Appleseed lights (#1608).
  • Simplified light menus (#1608).
  • Improved environment light visualisations (#1608).

API

  • ImageAlgo
    • Added channelExists() function (#1596).
  • ExceptionAlgo
    • Fixed line number extraction for syntax errors (#1599).
  • Menu
    • Fixed broken shortcuts after assigning new menu definition (#1597).
    • Fixed scoping of MenuBar shortcuts. In particular this fixes
      a bug whereby an embedded Gaffer panel could prevent Maya's
      main window shortcuts from working (#1597).
  • Replaced all old-style python classes with new style ones #1607.
  • GafferImageUI
    • Added ImageGadget class.
  • PlugLayout improvements
    • Added support for "layout:divider" metadata - this replaces
      the old "divider" metadata.
    • Added support for multiple layouts, using a different metadata
      prefix for each layout.
    • Added support for creating partial layouts, using a new rootSection
      constructor argument.
  • Toolbar improvements
    • Toolbars can now be defined for all edges, not just the top of
      frame (#1592).
    • StandardNodeToolbar has a new constructor argument to choose which
      edge to create the toolbar for. A new "toolbarLayout:section" metadata
      value chooses which toolbar plugs belong in, with values of
      "Top", "Bottom", "Left" and "Right" (#1592).
  • GLWidget
    • Improved overlay mechanism. Overlays may be queried and removed as
      well as set. Container overlays are transparent to mouse events in
      areas where no child widget exists (#1592).
  • NumericPlugValueWidget
    • Added support for "fixedCharacterWidth" metadata.

Build

  • Added GCC 5 build to Travis test setup.

Incompatibilities

  • Removed ImageView::update() virtual override.
  • Replaced GLWidget.addOverlay() method with setOverlay()/getOverlay() methods.

Version 0.20.0.1

12 Jan 18:39
Compare
Choose a tag to compare
Version 0.20.0.1 Pre-release
Pre-release

UI

  • Added GIL release to some PathListingWidget methods to fix a hang

Version 0.20.0.0

15 Dec 20:05
Compare
Choose a tag to compare
Version 0.20.0.0 Pre-release
Pre-release

Apps

  • Added support for choosing the debugger used via a new GAFFER_DEBUGGER
    environment variable.

Core

  • Improved ContextProcessor performance. This shaved 10% off the startup
    time for a complex render (#1573).
  • Added framesPerSecond plug to ScriptNode. This provides user-level
    control over the frame rate for each script (#1576).
  • Fixed hang triggered by deletion of a plug during computation
    (#1576, #1580).

Dispatch

  • Moved all dispatch functionality from Gaffer module into a new
    GafferDispatch module. Backwards compatibility is provided by
    config files, but it is recommended that code be updated to use
    GafferDispatch directly (#1577).
  • Renamed "requirements" plug to "preTasks" and "requirement" plug
    to "task". Again, backwards compatibility is provided by a config
    file, but it is recommended that code be updated to use the new
    names (#1577).
  • Added "postTasks". These are nodes that are executed following another
    node, even if they are not explicitly included in the list of nodes
    to dispatch (#1577).
  • Added "dispatcher.immediate" plug to all executable nodes. This
    causes the node to be executed immediately in the current process
    when dispatched (#1577).
  • Removed "dispatcher.local.executeInForeground" plug - use the new
    "dispatcher.immediate" plug instead (#1577).
  • Added sequence support to PythonCommand node. This causes the command
    to be called once for all frames, instead of once per frame (#1578).
  • Fixed bug which could cause all frames downstream of pass-through
    nodes (like TaskList and TaskContextVariables) to depend on all
    upstream frames (#1577).
  • Fixed detection of direct dependency cycles (#1577).

Image

  • Crop
    • Added option to crop to a specific format, optionally centered (#1570).
  • Fixed crashes triggered by images with empty data windows (#1575).
  • Improved ImageWriter to write out images progressively as the input
    image is generated (#1517). This improved speed by 65% and memory usage
    by 60% when generating a 10K image.

Scene

  • Lights are now represented as attributes at a location rather than as
    objects. This allows lights for multiple different renderers to exist
    at the same location, allows the creation of area lights, and provides
    the necessary support for using shader networks within lights in the
    future (#1590).
  • Shader nodes now support the loading of light shaders (#1590).
  • Added metadata support for specifying the orientation of lights
    in the renderer (#1590).

RenderMan

  • Fixed crash when reloading coshader arrays.

UI

  • Improved viewport visualisation of lights (#1590, #11).
  • Added workaround for PySide bug which prevented stylesheets from
    working as expected (#1574).
  • Improved error reporting for failed dispatches (#1593).
  • Fixed graphical glitch in OpDialogue error icon (#1593).

API

  • ImageAlgo
    • Added parallelProcessTiles and parallelGather tiles functions
      to facilitate easy parallel processing of images (#1517).
  • BufferAlgo
    • Moved image window methods from ImageAlgo (#1517).
  • Format
    • Fixed space conversions for empty boxes (#1575).
  • TestCase
    • Improved output for assertTypeNamesArePrefixed() failures.
  • Dispatch
    • Renamed requirements -> preTasks
    • Added LoggingExecutableNode to GafferDispatchTest. This
      facilitates easier testing of dispatchers.
  • SceneUI
    • Added ObjectVisualiser and AttributeVisualiser base classes
      to support custom representations of objects and attributes
      within the viewport (#1590).
  • Metadata
    • Added methods for adding and querying non-node values (#1590).

Build

  • Added CXXSTD argument to SConstruct. Pass CXXSTD=c++11 to build
    with C++11 support (#1586).
  • Added testing with GCC 4.8 and C++11 to Travis test setup (#1586).
  • Updated Cortex version to 9.5.0 (minimum requirement is 9.3.0).

Incompatibilities

  • Removed "dispatcher.local.executeInForeground" plug - use the new
    "dispatcher.immediate" plug instead.
  • Moved image window methods from ImageAlgo.h into BufferAlgo.h.
  • Lights are now represented as attributes rather than as objects (#1590).
  • The Parameters node no longer works for lights (#1590).