Skip to content

Releases: GafferHQ/gaffer

0.11.0.0

16 Mar 17:06
Compare
Choose a tag to compare
0.11.0.0 Pre-release
Pre-release

Image

  • Image nodes are now documented
  • RemoveChannels renamed to DeleteChannels

Scene

  • Fixed a bug in the InteractiveRender that was causing a crash when the scene child names changed.

0.10.1.0

12 Mar 21:58
Compare
Choose a tag to compare
0.10.1.0 Pre-release
Pre-release

UI

  • Fixed FilterPlugValueWidget filter menu

Scene

  • Fixed dirty propagation for globals in the camera node
  • IPR now blocks the UI while it's starting up, and is more selective
    about sending scene edits.

Core

  • Fixed dirty propagation bug in expressions

Version 0.10.0.0

09 Mar 21:03
Compare
Choose a tag to compare
Version 0.10.0.0 Pre-release
Pre-release

Core

  • Reimplemented paths framework in C++ (#1190). This gives much
    improved performance - 10x or more speed improvements in the
    SceneHierarchy panel.
  • Fixed subprocess hangs seen when dispatching renders inside Maya.
  • Restored compatibility with references from prior to version 0.8.0.0.

UI

  • Added bookmarks system for NodeGraph (#849).
    • Bookmark nodes using the right-click node context menu
    • Connect plugs to bookmarked nodes using the right-click plug
      context menu.
  • Added NodeGraph Ctrl+Click to select all downstream nodes (#941).
  • Added additional "Edit/Select Connected" menu items
  • Fixed "Edit/SelectConnected" menu items to ignore invisible nodes.
  • Fixed "Edit/SelectAll" menu item to ignore invisible nodes (#1207).
  • Highlighted plugs at non-default values in the NodeEditor (#1216).
  • SceneInspector
    • Significant performance improvements.
    • Added name based filtering for options and attributes (#1159).
    • Added query caching.
  • Fixed bug whereby Widget.setVisible( notABool ) could cause problems.
  • Fixed clearing of StandardNodeGadget errors for non-DependencyNodes.

Scene

  • Added "mode" plug to Set node. This allows paths to be added to or
    removed from existing sets, in addition to the old behaviour of
    creating a new set (or replacing an existing one of the same name).
  • Added ClippingPlane node.
  • Added "enabled" plug to Filter nodes (#1196).
  • Added FilterSwitch node (#1197).
  • Added "name" plug to Duplicate node, to provide control over the
    names given to the duplicates (#1200).

Appleseed

  • Added photon target attribute.
  • Added sampler option.
  • Synced default options with new Appleseed defaults.

Cortex

  • Added UI hint to control the visibility of the header in the
    ParameterisedHolder node UI.

API

  • GraphGadget
    • Added degreesOfSeparation argument to upstreamNodeGadgets() method.
    • Added downstreamNodeGadgets() and connectedNodeGadgets() methods.
  • EditMenu
    • Added scope() method. This should be used by custom edit menu
      commands to ensure they operate on the right portion of the
      node graph.
  • CompoundVectorParameterValueWidget
    • Added support for "showIndices" parameter user data.
  • PathMatcher
    • Added addPaths() and removePaths() methods, each taking a second
      PathMatcher to provide the paths.
  • Serialisation
    • Made classPath() and modulePath() methods compatible with passing
      a class as well as an instance.
  • PathListingWidget
    • Added setSortable() and getSortable() methods.
  • Added MatchPatternPathFilter
  • Added bindings for SceneAlgo camera() and shutter() functions.
  • Metadata
    • Added control over persistence of instance values.
  • Added preprocessor macros for gaffer version numbers.

Incompatibilities

  • Path
    • The info API has been replaced with a property API. Emulation
      for the old API exists, but it has been deprecated.
    • Properties must derive from RunTimeTyped, whereas info could
      contain any python type.
    • Subclasses now must implement the copy() method.
  • PathListingWidget
    • Column python class has been replaced with several specialised
      C++ subclasses. It is no longer possible to derive from Column
      in python.
  • GraphGadget
    • Added argument to upstreamNodeGadgets() method.
  • GafferScene::Filter
    • Renamed "match" plug to "out". Backwards compatibility is
      provided by a getattr alias in Python.

Build

  • Updated public build to use Cortex 9.0.0-b4.
  • libGafferUI now links with Qt. This must be considered when building
    Gaffer to be hosted inside other applications.
  • Requires subprocess32 python module.
  • Added subprocess32 to dependencies build process.

Version 0.9.0.1

05 Mar 23:15
Compare
Choose a tag to compare
Version 0.9.0.1 Pre-release
Pre-release

Core

  • Restored compatibility with .grf files exported with versions prior
    to 0.9.0.0.

API

  • Added the ability to have non-persistent Metadata.

Version 0.9.0.0

24 Feb 19:56
Compare
Choose a tag to compare
Version 0.9.0.0 Pre-release
Pre-release

This is primarily a bugfix release.

Core

  • Documented all nodes and plugs.
  • Improved Reference workflow
    • Boxes exported for referencing contain new default values for all
      promoted plugs to match their current values on the Box.
    • When reloading a reference, only values the user has changed from
      their defaults will be kept. Other values will be updated from the
      new reference.
    • Box metadata is included when exporting for referencing. This
      means that colours and descriptions set via the UIEditor will
      be transferred onto any Reference nodes which load the exported
      reference (#1171).
  • Added "-threads" command line argument to Gaffer.Application
  • Fixed "gaffer execute" error handling

Cortex

  • Documented all nodes and plugs.

Scene

  • Added hack for controlling TBB concurrency from SceneProcedural
    • Using the GAFFERSCENE_SCENEPROCEDURAL_THREADS environment variable

RenderMan

  • Fixed hangs caused by deleting or reconnecting a paused
    InteractiveRenderManRender node.

Appleseed

  • Fixed render threads and texture memory options.

Image

  • Fixed bug which prevented serialisation of read only FormatPlugs.

UI

  • Fixed creation of expressions for BoolPlugs.
  • Fixed context used by scene view camera chooser.

API

  • Added Metadata::registerNode() method. This allows all the metadata
    for a node and its plugs to be registered with a single function call
    (#1160).
  • Added GafferTest.TestCase.assertNodesAreDocumented().
  • Serialisation
    • Added serialisation argument to Serialiser::constructor().
    • Added Serialisation::parent() accessor.
  • ValuePlug
    • Simplified handling of default values.
    • Added isSetToDefault() method.
  • Made CompoundDataPlug::addMember() set default value for name plug
    (#935).
  • Added Python bindings for tbb::task_scheduler_init

Incompatibilities

  • Added argument to virtual method Serialiser::constructor().
  • Changed layout of ValuePlug classes.
  • Removed virtual overrides from some ValuePlug classes.
  • Added virtual method to ValuePlug.

Build

  • Updated public build to use Cortex 9.0.0-b3.
  • Included Shiboken module in release packages.

Version 0.8.2.0

11 Feb 00:23
Compare
Choose a tag to compare
Version 0.8.2.0 Pre-release
Pre-release

Core

  • Prevented errors in Metadata slots from stopping other slots running.

Scene

  • Fixed BranchCreator dirty propagation.

RenderMan

  • Add trace bias in RenderManAttributes.

Image

  • Stopped display transforms hardcoding OCIO "linear" colour space.
  • Fixed dirty propagation for Merge node.

UI

  • Fixed evaluation time of look-through cameras in the Viewer.
  • Added camera name to resolution gate overlay.
  • Removed redundant render requests from CompoundNodule.
  • Simplified Gadget render requests when children are added/removed
  • Prevented duplicate errors on StandardNodeGadget tooltips.
  • Fixed CompoundEditor lifetime bug
  • Setting DispatcherUI frameRange widget text in PlaybackRange mode.
  • Made NameWidget replace " " with "_" automatically.

API

  • Removed GafferBindings::CatchingSlotCaller.
  • Added Gaffer::CatchingSignalCombiner class.
  • Added Gadget::requestRender() method.

Build

  • Fixed GafferRenderMan public build.

Version 0.8.1.0

22 Jan 20:12
Compare
Choose a tag to compare

Core

  • Fixed ComputeNodeWrapper exception handling.

UI

  • Fixed GafferUI crashes seen at Python shutdown.
  • Added support for hiding some fields of CompoundNumericPlugValueWidgets.
  • Update DispatcherUI; can dispatch box with promoted requirement.
  • Fixed crashes when deleting a node immediately after it errored.

Scene

  • Fixed light visibility bug.
  • Fixed coordinate system visibility bug.
  • Added visible() function to SceneAlgo.h.
  • Added GL FacingRatio shader

RenderMan

  • Added "vector2" widget annotation support for RenderMan shaders.

Build

  • Stopped installing the python module by default
  • Moved installDir to /tmp for local IE builds.
  • Fixed release script to ignore GAFFER_OPTIONS_FILE environment variable.
  • Updated IE publicDependenciesBuild script.
  • Enabled testing of UI modules on Travis CI.
  • Added debug output to installDependencies.py.

Version 0.8.0.0

19 Jan 18:42
Compare
Choose a tag to compare
Version 0.8.0.0 Pre-release
Pre-release

Apps

  • Python
    • Added support for executing files with arbitrary extensions.
    • Properly handled sys.exit() usage from within a script.
    • Updated sys.argv so gaffer python myScript.py behaves like
      python myScript.py.

Core

  • Made small optimisations to the computation engine.

UI

  • Added "layout:widgetType" metadata entry.
  • Improved image rendering quality.
  • Added error display in the node graph (#1115).
  • Added menu item for applying Random node to IntPlugs.
  • Fixed Box UI error when connecting external BoolPlug to internal IntPlug.

Scene

  • Removed support for attribute caches.
  • Optimised SceneReader hashes.
  • Improved hash computation for many node types. This should improve
    cache memory usage and speed.
  • Fixed SceneReader for invalid files and paths. Previously it would
    error on the first attempt, but either silently fail or crash on
    subsequent attempts.
  • Optimised PathMatcher construction.
  • Multithreaded child procedural instantiation in SceneProcedural.

RenderMan

  • Added support for a "nodeColor" annotation.

Image

  • Optimised ImageReader. Reduced runtime of ImageReader->ImageTransform
    benchmark by nearly 40%.
  • Fixed thread-safety bug in ImageReader.

OSL

  • Added UI support for OSL "help", "label", "divider", "widget" and
    "options" metadata entries.

Appleseed

  • Added visibility attributes to AppleseedAttributes node.

API

  • Added outputsToIgnore argument to GafferTest.TestCase.assertHashesValid().
  • Added NodeAlgo support for plug presets specified en masse via arrays.
  • Added Node::errorSignal().
  • Added tokenize() function to StringAlgo.h.
  • Added support for array metadata in OSLShader.
  • Simplified OSLShader::*Metadata() python return types.
  • Added Python bindings exposing the OSL version.
  • Removed Source node.
  • Removed FileSource node.
  • Detemplatized ObjectSource.
  • Added GafferUI.LayoutPlugValueWidget. This is entirely metadata-driven,
    and will be used to slowly replace legacy CompoundPlugValueWidget UIs.
  • Deprecated CompoundPlugValueWidget.
  • Fixed drawing of ImageGadget children.
  • Added Gadget::executeOnUIThread() method.

Build

  • Updated README with simplified build instructions.
  • Added support for OSL 1.6.
  • Requires Cortex 9.0.0-b2.
  • Added Qt headers to Gaffer packages.
  • Fixed TBB compilation on OS X.

Incompatibilities

  • Simplified OSLShader::*Metadata() python return types.
  • Removed support for attribute caches.
  • Removed Source node.
  • Removed FileSource node.
  • Detemplatized ObjectSource.

Version 0.7.0.0

18 Dec 19:35
Compare
Choose a tag to compare
Version 0.7.0.0 Pre-release
Pre-release

This release brings the exciting addition of support for the open source Appleseed renderer. It also adds the much asked for Dot node, and a tool for editing render crop windows. Plus of course the usual small improvements, optimisations and bug fixes.

UI

  • Added resolution gate and crop windows overlays to 3d viewer (#1016).
  • Added tool for manipulating crop window.
  • Added "User Default" item to plug popup menus.
  • Added sneaky hotkey for navigating inside any node in NodeGraph.
  • Fixed Reference node UI to match equivalent Box node UI (#1108).
  • Improved positioning of nodes created by the NodeMenu.
  • Improved table widget (#204).
    • Remove button disabled when selection empty
    • Newly added rows are selected automatically
    • Newly added row has keyboard focus for immediate editing
  • Added customisable presets to plug widgets (#1113).
  • Fixed bugs where image viewer was using incorrect context (#1124).
  • Fixed bug where channel mask UI was using incorrect context.
  • Added a refresh button to ImageReaders.
  • Added support for specifying node, nodule, and connection colours via Metadata (#89).
  • Added support for setting node colour in the UIEditor or from the RMB popup in the graph.
  • Fixed bug in ColorChooserDialogue.waitForColor().
  • Added basic colour scheme for nodes in the GUI app (#1098, #154).

Core

  • Optimised Switch node for constant indices. A benchmark with the bunny scene followed by 50 switches shows a 6x speedup overall.
  • Added Dot node (#12).
  • Fixed bindings for Metadata types other than simple typed data (#1136).

Scene

  • Added min/max limits to StandardOptions crop window plug.
  • Fixed bugs which prevented ObjectSource nodes from working after create/undo/redo.
  • Fixed UnionFilter to accept inputs from Boxes.

Image

  • ImageWriter now creates the necessary directories before writing images.

RenderMan

  • Added shader Metadata option "shaderTypeOverride" (#pragma annotation "shaderTypeOverride" "ri:shader" will force the Gaffer shader type to "ri:shader").

Appleseed

  • Added support for the Appleseed renderer, courtesy of Esteban Tovagliari.

API

  • Optimised ScenePlug::stringToPath(). This gives an 88% reduction in runtime for a synthetic test of just that function, and a 7% reduction in total runtime for a scene benchmark using the Instancer.
  • Added hasUserDefault( plug ) and applyUserDefault( plug ) to NodeAlgo.
  • Added Context.contains binding.
  • Simplified numeric plug bindings.
  • Added min/max values to BoxPlug.
  • Added handy CompoundDataPlug::MemberPlug child accessors.
  • Added GafferBindings::NodeClass() overload for suppressing init.
  • Moved shutter() and transform() from RendererAlgo.h to SceneAlgo.h.
  • Added camera() methods to SceneAlgo.h.
  • Removed GLWidget minimum size.
  • Fixed bug where ViewportGadget::setCamera() could forget viewport size.
  • Fixed ViewportGadget::RasterScope to work during selection.
  • Added ViewportGadget::preRenderSignal().
  • Made View::update() non-pure virtual.
  • Added View::contextChangedSignal().
  • Added Tool base class.
  • Fixed bugs in ExceptionAlgo formatPythonException().
  • Fixed StandardStyle border widths to be independent of border radius.
  • Added Menu.popupPosition() method.
  • Improved support for functools.partial() callables in Menu commands.
  • Added metadata to control StandardNodeGadget minimum width, padding, and nodule spacing.
  • Improved StandardNodeGadget drag/drop handling. Previously it would accept drags it wasn't going to use, preventing other handlers from working.
  • Added Nodule::updateDragEndPoint() virtual method.
  • Fixed ScriptNode::deleteNodes() for nodes without enabled plugs.
  • Added customisable edge gadgets to StandardNodeGadget.
  • Added support for changing nodule position on StandardNodeGadget.
  • Guaranteed order of Metadata::registered*Values().
  • Added plug presets methods to Gaffer.NodeAlgo.
  • Added GafferUI.PresetsPlugValueWidget.
  • Added PlugValueWidget.childPlugValueWidget(), so derived classes don't need to implement it if they don't have such children (#1123).
  • Added Style::renderNodeFrame() to distinguish between frames drawn for nodes and those drawn as normal frames.
  • Updated Style bindings.
  • Added useDisplayTransform argument to ColorSwatch constructor.
  • Added useDisplayTransform argument to ColorChooser and ColorChooserDialogue.
  • Added DataBinding.h header with dataToPython().

Build

  • Added scripts for automating releases.
  • Updated IE public build script to use MILESTONE_VERSION, and renamed it to publicDependenciesBuild, since it is no longer used for producing the public release builds.
  • Requires Cortex 9.0.0-b1 for Appleseed support.

Incompatibilities

  • Moved shutter() and transform() from RendererAlgo.h to SceneAlgo.h.
  • Made View::update() non-pure virtual.
  • Added virtual method to Nodule.
  • Added and reordered Style virtual methods.

Version 0.6.0.0

28 Nov 20:29
Compare
Choose a tag to compare
Version 0.6.0.0 Pre-release
Pre-release

UI

  • Fixed bug which prevented newly created nodes from being inserted inline in the Node Graph.
  • Added error display to string and numeric plug widgets - typically this is useful when a bad expression has been entered. Previously bad expressions would break the UI.
  • Optimised the 3d view significantly.
  • Fixed UI reordering bug in UIEditor (#847).
  • Added menu item for deleting CompoundDataPlugValueWidget children.

Apps

  • Added ignoreScriptLoadErrors parameter to execute app.

Core

  • LocalDispatcher now has an option to ignore errors when loading the script (#1084).

Scene

  • Fixed Grid node GL shader assignment.
  • Fixed bug in Instancer dirty propagation.
  • Fixed SubTree set computation when root path omits the leading slash.
  • Added "isolate from" capability to GafferScene.Isolate node.

API

  • Added support for invalid variants to GafferUI._Variant.fromVariant().
  • Added TextWidget setErrored()/getErrored() methods.
  • Added GafferSceneUI::SceneGadget class, for optimised display of scenes in OpenGL.
  • Removed bloat from SceneProcedural - this was being used previously to implement the viewer but is no longer needed.
  • Added ValuePlug::getValue() arguments for when hash is known.
  • Added TypedPlugClass helper to GafferBindings.
  • Improved exceptions thrown from ScriptNode::execute().
  • ScriptProcedural now ignores errors when loading the script.
  • Added PlugLayout.layoutOrder() static method.
  • Fixed deadlocks if computes spawn their own threads.
  • Added GafferScene::PathMatcher::prune() and isEmpty() methods.

Incompatibilities

  • Added argument to ValuePlug::getObjectValue(), and associated derived class getValue() calls. Source compatibility is maintained, but binary compatibility is not.
  • View::setContext() is now virtual.

Build

  • Requires Cortex 9.0.0-a10