Skip to content

Releases: GafferHQ/gaffer

Version 0.16.0.3

08 Sep 16:41
Compare
Choose a tag to compare
Version 0.16.0.3 Pre-release
Pre-release

UI

  • Fixed a problem whereby presets were not being transferred when
    promoting a compound plug on a RenderManAttributes node.

Core

  • Fixed issue where non-ValuePlugs were not syncing during
    setPlugValue().

Version 0.16.0.2

01 Sep 21:07
Compare
Choose a tag to compare
Version 0.16.0.2 Pre-release
Pre-release

UI

  • Box : Copy all metadata when promoting plugs.
  • UIEditor : Never edit user plug for Box nodes.

Version 0.16.0.1

27 Aug 18:24
Compare
Choose a tag to compare
Version 0.16.0.1 Pre-release
Pre-release

UI

  • UIEditor : Update preset value on selection change.
  • ShaderSwitchUI : Fix NodeGraph representation (#1461).

Version 0.16.0.0

26 Aug 19:19
Compare
Choose a tag to compare
Version 0.16.0.0 Pre-release
Pre-release

Apps

  • Python
    • Sets __name__ to __main__ to conform more closely to a standard
      python interpreter (#1405).
    • Fixed to accepts -flag arguments (#1406).
  • GUI
    • Removed cortex nodes from the node menu. They can be reintroduced
      with an appropriate config file, but our intention is that Cortex
      play only a "behind the scenes" role in Gaffer in the future.

Core

  • Added version metadata to all saved files (#1436).
  • Fixed dispatching of nodes inside References.
  • Python expressions can now write to AtomicBoxPlugs.
  • Added support for promoting ArrayPlugs to boxes.

UI

  • Fixed image format menu to make changes undoable.
  • Added sequence browsing to the relevant file choosers.
  • Hid TaskContextVariables.variables plug in the NodeGraph.
  • Fixed editability of promoted CompoundDataPlugs.
  • Box promotion now tranfers nodule and connection colours.

Image

  • Added a Resize node. This will replace the Reformat node over time.
  • Added a Crop node.
  • Added a Shuffle node (#1380).
  • Added Premultiply and Unpremultiply nodes.
  • ImageWriter
    • Fixed writing to image formats which don't support separate
      display and data windows - the full display window is now written,
      padded with black as necessary.
    • Added progress message.
    • Fixed tiled writing (previously scanlines were always written).

Scene

  • Fixed bug in Isolate which meant that a filter which matched nothing
    at all had no effect. It now removes the entire scene as expected.
  • Fixed bug in Prune which meant that a filter which matched the root
    was not removing the entire scene.
  • Added support for arbitrary IECore::PreWorldRenderables in global
    options.
  • Improved performance of bounds propagation (around 7% improvement
    for a Transform node and a complex filter).

Cortex

  • Fixed bug which caused errors with read-only parameter plugs.

API

  • Replaced all InputGenerators with ArrayPlugs, and removed InputGenerator
    class. ImageProcessor and SceneProcessor may now provide an array of
    inputs for any derived class to use.
  • Paths
    • Added sequence support to FileSystemPath.
    • Added FileSequencePathFilter class for filtering sequences from
      FileSystemPath.
    • FileSequencePathPlugValueWidget supports metadata for sequence
      display.
    • Deprecated SequencePath.
  • Added Resample node to GafferImage, for use in node internals.
  • Dispatcher
    • The current job directory is added to the context for use
      by Executable nodes.
  • Sampler
    • Fixed binding of sample( int, int )
  • Added AtomicBox2fPlug.
  • Made SceneNode and SceneProcessor subclassable in Python.
  • Made ImageNode and ImageProcessor subclassable in Python.
  • Made SubGraph subclassable in Python.
  • Added _copy argument to ImagePlug.channelData() method.
  • CompoundPlug deprecation
    • Rederived the following plugs from ValuePlug or Plug in preparation
      for removal of CompoundPlug :
      • BoxPlug
      • CompoundNumericPlug
      • Transform2DPlug
      • TransformPlug
      • CompoundDataPlug
      • ArrayPlug
    • Replaced use of CompoundPlug in the following nodes
      • Light
      • Outputs
  • Added support for extra constructor arguments in node wrappers.

Incompatibilities

The scene and image processing nodes have been overhauled to allow any
node to use an array of inputs. While full backwards compatibility with
old scenes is expected, please let us know if you have any problems
loading an old scene. Please also update any dependent code to the new
APIs as soon as possible.

  • Removed InputGenerator. Use ArrayPlug instead.
  • Removed FilterMixinBase. Use FilterProcessor instead.
  • SwitchComputeNode and SwitchDependencyNode now require that the "in"
    plug is an ArrayPlug.
  • Changed base classes for many plugs, breaking binary compatibility
    but in most cases not source compatibility.

Build

  • Added checks for doxygen and inkscape prior to building.
  • Fixed non-reporting of graphics build errors (#1395).
  • Updated to faster container-based testing on Travis.
  • Added appleseed unit tests to Travis setup.

Version 0.15.0.0

23 Jul 20:35
Compare
Choose a tag to compare
Version 0.15.0.0 Pre-release
Pre-release

UI

  • UI Editor
    • Added dropdown menu for choosing widget type (#739).
    • Added section for specifying additional widget settings (#739).
    • Added preset editor (#739).
    • Added section for editing section summaries.
    • Added NodeGraph section.
  • Added drag and drop of objects onto Set nodes in the NodeGraph.
  • Fixed crash which could occur when opening recent files.
  • Fixed crash which could occur when using OpenGL widgets within Maya.
  • Added support for summary tooltips on node UI tabs (#332).
  • Fixed bugs which could cause a blank NodeEditor if an expression
    referenced a script variable.
  • Fixed bugs in channel mask menus on image processing nodes.

Core

  • Added Wedge node. This allows tasks to be dispatched multiple times
    using a range of values (#1372).
  • Added TaskContextVariables node. This allows variables to be defined
    within the tree of tasks (renders etc) executed by a dispatcher.
  • Added Loop node. This takes an input and loops it N times through an
    external graph before outputting it again. This provides the user with
    the ability to do things with the graph which were previously only
    achievable with code.
  • Reference
    • Fixed serialisation of empty reference.
    • Fixed serialisation of user plug metadata.
    • Fixed referencing of promoted plugs
      • ExecutableNode requirements plug
      • UnionFilter filter inputs
      • OSLImage and OSLObject shader plugs.
      • RenderManShader coshader plugs (#1358).
  • Expression
    • Fixed support for setting GafferImage FormatPlugs.
  • ContextVariables
    • Fixed serialisation bug where additional plugs were added on
      save/load and copy/paste.
  • Improved Context and ValuePlug performance.

Image

  • Added ImageLoop node.
  • Performance
    • Improved Reformat performance.
    • Improved threading peformance for small images.
  • ImageWriter
    • Improved error messages.
    • Fixed bugs with empty filenames and filenames using
      substitutions.
  • ImageTransform
    • Fixed copy/paste.
    • Fixed dirty propagation bug which could prevent the viewer
      updating at the right time.
  • ImageReader
    • Added error reporting for missing files.

Scene

  • Added SceneLoop node.
  • Transform
    • Fixed bugs in World mode.
    • Added Parent, Local Reset and World Reset modes.
    • Renamed Object space to Local.
    • Changed default space to Local.
    • Note that these are backwards incompatible changes, necessary to
      fix an important bug and get the Transform node on a solid footing
      for the future. To get the same results as the old World mode, use
      the new Parent mode.
  • FreezeTransform
    • Fixed bug which prevented the UI updating when the input object
      was changed.
  • Fixed bugs which could cause incorrect bounds to be computed.

Appleseed

  • Removed options and attributes that are not useful in Gaffer.
  • Fixed default values for some options and attributes.
  • Documented all nodes.
  • Added support for shading overrides.

API

  • Pass-through connections may now be made for FormatPlug (#1250).
  • Added TaskContextProcessor base class. This enables the development
    of ExecutableNodes which request their input requirements in different
    contexts.
  • Added support for directly setting Color3f context values from Python.
  • UI Metadata additions. Many additions were made to the metadata supported
    by the Node UIs, and the existing UIs were ported to make use of it.
    • "layout:visibilityActivator"
    • "plugValueWidget:type"
    • "compoundDataPlugValueWidget:editable"
    • "boolPlugValueWidget:displayMode"
    • "vectorDataPlugValueWidget:dragPointer"
    • "pathPlugValueWidget:leaf"
    • "pathPlugValueWidget:valid"
    • "pathPlugValueWidget:bookmarks"
    • "fileSystemPathPlugValueWidget:extensions"
    • "fileSystemPathPlugValueWidget:extensionsLabel"
  • ScriptProcedural
    • Added context parameter.
  • BoolWidget
    • Added setDisplayMode()/getDisplayMode() accessors.
  • Added AcceptsDependencyCycles Plug flag. See the Loop node for an
    example of use.
  • Added FileSystemPathPlugValueWidget.
  • Metadata
    • Fixed inconsistent handling of NULL values.
    • Added methods for deregistering values.
  • Removed GafferUI.SectionedCompoundPlugValueWidget.
  • Activator expressions are now attached to the parent of the plug, rather than always being on the node.
  • Removed StringPlugValueWidget continuousUpdate constructor argument. Use metadata instead.
  • Removed MultiLineStringPlugValueWidget continuousUpdate constructor argument. Use metadata instead.
  • SceneNode
    • Added childNames argument to bounds union methods.
  • SceneAlgo
    • Added bound( const IECore::Object * ) function.

Build

  • Updated to Cortex 9.0.0.
  • Updated to OIIO 1.5.17.
  • Updated to OSL 1.6.8.
  • Updated to 1.2.0-beta.

Incompatibilies

  • Removed Reference::fileNamePlug() (#801). Use Reference::fileName()
    instead. Use continueOnError = True when loading old scripts.
  • Removed arguments from CompoundDataPlugValueWidget constructor. Use
    Metadata instead.
  • Removed SectionedCompoundDataPlugVlueWidget. Use LayoutPlugValueWidget
    and metadata instead.
  • Changed base class for ImagePlug.
  • Changed base class for ScenePlug.
  • Changed base class for SplinePlug.
  • Removed ImageMixinBase. Use ImageProcessor instead.
  • Removed SceneMixinBase. Use SceneProcessor instead.
  • Removed GafferUI.SectionedCompoundPlugValueWidget. Use LayoutPlugValueWidget instead.
  • Activator expressions are now attached to the parent of the plug, rather than always being on the node.
  • Changed ChannelMaskPlugValueWidget constructor arguments.
  • Changed Transform behaviour to fix bug in world space mode, add new modes and change the default mode to local. If you need the old world space behaviour, use the new parent space mode.

Version 0.14.0.0

18 Jun 19:16
Compare
Choose a tag to compare
Version 0.14.0.0 Pre-release
Pre-release

UI

  • NodeGraph
    • Improved "Select Affected Objects" menu item. This is now available
      on filters as well as on scene processors.
    • Added support for dragging objects from the Viewer and SceneHierarchy
      and dropping them onto scene processors and PathFilters, to specify
      the affected objects.
      • Dragging onto a node replaces the current paths.
      • Shift+Drag adds to the current paths.
      • Control+Drag removes from the current paths.
    • Added plug context menu for moving promoted plugs on Boxes.
  • NodeEditor
    • Added "Select Affected Objects" menu item in the tool menu for
      filters and scene processors.
  • UIEditor
    • Added + button for adding plugs, and - button for deleting them.
    • Added the ability to create nested sections and drag+drop plugs
      between them.
  • Viewer
    • Fixed grid and gnomon menus.

Core

  • Expression
    • Added support for setting multiple plugs from one
      expression (#1315).
    • Added support for vector, color and box outputs (#1315).
    • Added support for assigning to plugs within conditional
      branches (#1349).

Scene

  • Improved ParentConstraint so it is acts more like the equivalent
    parenting operation, and maintains the local transforms of the
    objects being constrained. Note that this is a change of behaviour,
    but one that we feel is much for the better.
  • Fixed ShaderAssignment to allow referencing of promoted shader input
    plugs.

API

  • Added parallelTraverse() and filteredParallelTraverse() methods
    to SceneAlgo. These make it trivial to traverse all locations in a
    scene using multiple threads.

  • Added inputTransform argument to Constraint::computeConstraint().

  • Removed TransformPlugValueWidget.

  • Used Plug rather than CompoundPlug in several places. CompoundPlug
    is being phased out because the Plug base class is now perfectly
    capable of having child plugs.

    • ExecutableNode::dispatcherPlug()
    • LocalDispatcher dispatcher plug
    • Shader::parametersPlug()
  • Fixed support for boost python object methods as menu commands.

  • Pointer

    • Fixed registerPointer() method.
    • Added binding for registerPointer().
  • Added scoped argument to Signal.connect() python bindings.

  • Added SignalClass for binding signals, and deprecated the old
    SignalBinder.

  • Added support for binding signals with 4 arguments.

  • Added LazyMethod.flush() method.

  • Fixed update bug in PathListingWidget.setSelectedPaths().

  • Added support for "nodule:type" metadata to control the type
    of nodule created for a plug. This should be used in preference
    to Nodule::registerNodule(), which has been deprecated.

  • Added support for modifying CompoundNodule orientation, spacing
    and direction using plug metadata.

  • Improved signalling of instance metadata changes.

  • Added default arguments for ValuePlug constructor arguments.

    Incompatibilities

  • Changed Constraint::computeConstraint() function signature.

  • Changed ParentConstraint behaviour to include the local transform of the constrained object.

  • Removed TransformPlugValueWidget.

  • Changed plug type returned by ExecutableNode::dispatcherPlug().

  • Changed Dispatcher::SetupPlugsFn signature.

  • Changed ExecutableNode::dispatcherPlug() signature.

  • Changed Shader::parametersPlug() to Plug rather than CompoundPlug.

  • Removed asUserPlug arguments from Box promotion methods. Plugs are
    now always promoted directly under a box, and never as user plugs.

  • Changed signature of Nodule::registerNodule() when registering a subclass.

  • Changed signature of CompoundNodule constructor, which now accepts a Plug
    rather than CompoundPlug.

  • Replaced UIEditor setSelectedPlug()/getSelectedPlug() methods with
    setSelection()/getSelection().

  • Added arguments to Metadata signals.

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.