Skip to content

Releases: GafferHQ/gaffer

Version 0.13.1.0

02 Jun 17:44
Compare
Choose a tag to compare
Version 0.13.1.0 Pre-release
Pre-release

Apps

  • Test app can now run multiple named test cases, specified via the
    "testCases" command line argument.
  • Fixed errors caused by special characters in .gfr filenames.

UI

  • Fixed unwanted viewport scrolling when dragging from one NodeGraph
    into another, or from the NodeEditor across a NodeGraph (#1321).
  • Hid Viewer diagnostic modes for unavailable renderers.
  • Fixed SceneInspector inheritance and history windows, which were broken
    in 0.13.0.0.
  • Fixed ObjectWriter UI, which was broken in 0.13.0.0.

OSL

  • Added utility shaders for float maths and noise.

Image

  • Fixed bug in DeleteChannels::hashChannelNames().

Houdini

  • Added support for Houdini 14 (requires Cortex 9.0.0-b7).

API

  • Added GafferUI._qtObject method.
  • PlugLayout
    • Added layoutSections() method.
    • Added section argument to layoutOrder() method.

Build

  • Added support for Boost >= 1.54.
  • Fixed Appleseed packaging. We were omitting the directory containing
    the Cortex display driver.

Version 0.13.0.0

22 May 17:44
Compare
Choose a tag to compare
Version 0.13.0.0 Pre-release
Pre-release

Apps

  • Improved error message for execute app.

Core

  • Improved Dispatcher
    • Stopped merging of identical tasks from different nodes.
      We decided that this auto-merging caused more confusion than it
      was worth, and it may actually have prevented useful executable
      graphs which would have been intentionally running identical
      tasks at different points in the graph.
    • Added cycle detection.

UI

  • Avoided unnecessary rebuilds of MenuBar menus. This can improve
    performance for slow-to-build custom menus.
  • Added font file browser to the Text node.
  • Improved NodeGraph plug tooltips - they now contain the plug description.
  • Plugs may now be promoted to Box level via the right click plug
    menu in the NodeGraph.
  • Fixed search box in file open dialogues.
  • Improved dialogues for picking scene paths
    • Opened in tree mode rather than list mode
    • Removed unnecessary columns
    • Added filtering to display only cameras where appropriate
  • CustomAttributes/DeleteAttributes
    • Added right click menu for quickly adding attributes from the
      currently selected object.
  • Viewer
    • Added shading mode menu. This allows the default shading to be overridden
      with another shader. Currently configured menu entries allow visualisation
      of shader assignments and visibility for RenderMan, Arnold and Appleseed
      (#1037).
    • Improved error handling.
  • SceneInspector
    • Improved shader display in attributes section. The node colour of the
      assigned shader is used as the background colour.
    • Improved performance (#1050).
  • Node UIs
    • Added tool menu to NodeEditor
    • Added support for metadata-driven activators.
    • Added support for metadata-driven section summaries.
    • Added support for metadata-driven custom widgets.

Scene

  • InteractiveRender
    • Fixed crash when deleting a running InteractiveRender.
    • Fixed coordinate system update problem.
  • Fixed bug preventing filter plugs from being promoted to Boxes.
  • Improved set computation
    • Separated the computation of sets from the computation of globals.
      This should prevent delays caused when calculating large unneeded
      sets along with the globals.
    • Made sets compute individually on demand. This should reduce the
      overhead of large unneeded sets.
    • Added "sets" plug to source nodes, to allow set membership to
      be defined at creation time.
    • Optimised SetFilter hashing.
    • Prevented wildcards from being used in the Set node (#1307).
  • Made Parameters node compatible with subclasses of Light/Camera/ExternalProcedural,
    such as those used internally at IE.
  • Shader node now adds "gaffer:nodeColor" entry into the blind data
    for the shader in the scene - this allows UI components to display
    the colour as appropriate.
  • Added AttributeVisualiser node. This applies an OpenGL shader to
    visualise the values of attributes and shader assignments.

Appleseed

  • Fixed typo in AppleseedOptions plug names.

Documentation

  • Improved doxyen documentation configuration.
  • Documented all GafferScene nodes.
  • Documented all GafferOSL nodes.
  • Documented all GafferRenderMan nodes.
  • Documented all GafferArnold nodes.
  • Added support for Arnold "desc" metadata items.

API

  • Refactored Node UI to provide all features via the PlugLayout and
    Metadata entries.

    • Added support for a "fixedLineHeight" metadata entry in
      MultiLineStringPlugValueWidget.
    • Added support for "layout:section" metadata - this allows the
      layout to be split into sections, and will provide the basis for
      replacing the Sectioned* widgets, adding support for sections in
      the UIEditor, and replacing the section management code in the
      StandardNodeUI.
    • Added support for Metadata activators - these allow the editability
      of a plug to be driven by the values of other plugs.
    • Added support for section summaries driven by Metadata.
    • Deprecated SectionedCompoundDataPlugValueWidget.
    • Deprecated SectionedCompoundPlugValueWidget.
    • Improved layoutOrder() API. It now returns the ordered plugs
      for a specific parent, rather than accepting a possibly unrelated
      list of plugs.
    • Added support for arbitrary custom widgets to be inserted into
      layouts.
    • Reimplemented StandardNodeUI using PlugLayout.
  • Fixed ExecutableNode::requirements() binding.

  • Added support for fixing the height (measured in number of lines)
    of the MultiLineTextWidget.

  • Fixed support for functools.partial( classMethod ) commands in
    Menus.

  • ScenePath : added setScene()/getScene() accessors.

  • Added SceneFilterPathFilter class. This tongue twister uses any of
    the GafferScene::Filter nodes to implement a Gaffer::PathFilter to
    filter the children of a GafferScene::ScenePath.

  • Added ScenePath::createStandardFilter() method.

  • Fixed crash when a Path is deleted before its PathFilter.

  • Added PathChooserDialogue.pathChooserWidget() method.

  • Added ScenePathPlugValueWidget.

  • Gave precedence to exact plug matches over wildcard matches in Metadata
    queries.

  • Added addition controls over Context substitution methods.

  • Improved StringPlug with additional control over substitutions.

  • Improved PlugType to support box and bool plugs.

  • Added ValuePlugSerialiser::repr() method. This is intended to allow
    derived class bindings to base their own repr() implementation on
    the ValuePlug one.

  • Made TypedObjectPlug compatible with instantiation for new types
    outside of Gaffer. This is achieved by moving the implementation into a
    .inl file which may be included as necessary. Added TypedObjectPlugClass
    to simplify binding such instantiations.

  • Implemented PathMatcherData::hash().

  • Added GafferScene::PathMatcherDataPlug.

  • Reimplemented SceneNode sets API.

  • Added GafferUI.LazyMethod for deferring widget method calls until
    visible/idle.

    Incompatibilities

  • StringPlug

    • Reimplemented as a standalone class
    • TypedPlug is no longer instantiated (binary incompatibility).
    • Must now include "Gaffer/StringPlug.h" rather than "Gaffer/TypedPlug.h"
      (source incompatibility).
  • GafferCortex

    • Removed BoxParameterHandler and CompoundNumericParameterHandler. Their
      functionality is now covered by TypedParameterHandler.
  • GafferScene

    • Reimplemented sets API.
    • Removed SceneReader "sets" plug.
  • GafferAppleseed

    • Fixed typo in AppleseedOptions plug names.
  • PlugLayout

    • Changed layoutOrder() signature.
  • StandardNodeUI

    • Removed DisplayMode enum.
    • Removed displayMode constructor argument.
    • Removed _header() method.
    • Removed _tabbedContainer() method.

Build

  • Updated default dependency versions
    • OIIO 1.5.13
    • OSL 1.6.3dev
    • LLVM 3.4
    • Alembic 1.5.8
    • Cortex 9.0.0-b6
  • Added bundled Appleseed renderer

Version 0.12.1.0

15 Apr 19:39
Compare
Choose a tag to compare
Version 0.12.1.0 Pre-release
Pre-release

Core

  • Fixed hangs introduced in 0.12.0.0. These were seen when stopping
    Appleseed renders and when ganging plugs in Caribou.
  • Fixed thread-related crashes introduced in 0.12.0.0. These have not
    been observed in the wild, but caused intermittent failures in the
    unit tests.

UI

  • Improved error messages output by OpDialogue.
  • Fixed unwanted auto-expansion in SceneHierarchy panel.

Scene

  • Added current scene location to error messages emitted by SceneProcedural.
  • Reduced memory usage for sets by 10%.
  • Optimised set computations. This reduces globals computation time for
    a complex production scene by 60%.
  • Fixed PathFilter wildcard matching bug.

OSL

  • Added metadata presets support for color and point parameters.

API

  • Added iterators to GafferScene::PathMatcher.
  • Added GafferUI.EditMenu.selectionAvailable() method.

Version 0.12.0.0

06 Apr 18:33
Compare
Choose a tag to compare
Version 0.12.0.0 Pre-release
Pre-release

Core

  • Optimised CompoundDataPlug::hash() to ignore disabled members. This
    reduces globals hashing time by 20% for a complex production scene.
  • Fixed Expression serialisation bugs (#1081, #1243).
  • Optimised ValuePlug hash caching. It now caches more aggressively,
    keeping cache entries alive across multiple computations. This reduces
    scene traversal time for a complex production scene by 70%.
  • Improved dirty propagation mechanism.
    • Batched propagation for UndoContexts, so dirtiness is signalled
      only once for operations batched within a single undo action.
    • Fixed bugs which meant dirtiness was signalled when child/parent
      plug connections were in an inconsistent state.
    • Addition and removal of dynamic plugs now triggers dirty
      propagation.
  • The values of environment variables used for string plug
    substitutions are now frozen at startup.

UI

  • Improved indicator for non-default plug values (#1216).
  • Added copy/paste entries to plug menus (#601).
  • SceneInspector now shows parameters for ExternalProcedural and
    Light objects.
  • Added available set names to Set node "sets" plug popup menu.

Scene

  • Fixed PathMatcher wildcard matching bug (#1252).
  • Added Parameters node. This can be used for tweaking the parameters
    of lights, cameras and external procedurals (#1259).
  • Added PointsType node (#476).
  • Fixes Seeds node to take into account the bounding box of the generated
    points.
  • Fixed dirty propagation bugs in CoordinateSystem and ClippingPlane
    nodes.
  • Improved InteractiveRenderer pausing during edits.
  • Added DeleteSets node.
  • Fixed CustomOptions dirty propagation (#1039).
  • Fixed ContextVariables dirty propagation.
  • Optimised Filter mechanism, giving a 7-20% improvement in performance
    across a range of production scenes.

Appleseed

  • Added support for interactive renderering with shader and light
    edits.

Image

  • Added support for image metadata
    • ImagePlug has a new metadata child plug.
    • ImageReader reads metadata from file.
    • ImageWriter writes metadata to file.
    • ImagePrimitiveSource loads metadata from ImagePrimitive::blindData().
    • Merge copies metadata from the first input.
    • ImageMetadata node creates/sets metadata.
    • DeleteImageMetadata node removed metadata.
    • CopyImageMetadata transfers metadata from one image to another.
  • Optimised many nodes with direct internal pass-though connections.

API

  • StringAlgo
    • Added hasWildcards() function.
    • Removed flawed MatchPatternLess (#1252).
  • NodeAlgo
    • Added isSetToUserDefault( plug ) function.
  • RendererAlgo
    • Added outputAttributes() method.
  • ImageNode
    • hash*() and compute*() methods are no longer pure virtual.
      This allows subclasses to make direct internal connections to
      pass through input plugs unchanged.
  • PlugValueWidget
    • Replaced _dropValue() method with _convertValue().
  • Menu
    • Added support for functools.partial( WeakMethod )
      in menu commands.
  • Simplified and improved Merge node implementation.
  • Added MetadataProcessor base class to GafferImage.
  • Added Plug::dirty() virtual method. This is used to inform a Plug
    that it has been dirtied by Plug::propagateDirtiness().
  • Fixed DependencyNodeWrapper to translate python exceptions to C++.

Build

  • Fixed compilation without NDEBUG=1 with gcc 4.1.2.

Incompatibilities

  • Removed MatchPatternLess from StringAlgo.h.
  • Replaced PlugValueWidget _dropValue() method with _convertValue().
  • Removed GafferImage::FilterProcessor.
  • Added/removed virtual overrides in GafferImage.
  • Added virtual function to Plug.

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.