Skip to content

Releases: GafferHQ/gaffer

Version 0.4.0.0

29 Oct 21:46
Compare
Choose a tag to compare
Version 0.4.0.0 Pre-release
Pre-release

Core

  • Plugs and ValuePlugs now accept children (#1043).
  • Added child matching to connected Plugs (#1043).
  • Added LocalDispatcher.Job and LocalDispatcher.JobPool to track running batches (#1064).
  • Failing batches not stop a LocalDispatch job.

UI

  • Improved Object section of SceneInspector (#897).
  • Added a window for tracking currently running LocalDispatcher jobs (#872).
  • Fixed reparenting bug with DispatcherWindows (#1064).

Scene

  • Fixed poor performance of Prune/Isolate in presence of SetFilter.
  • Added sets support to Parent node (#1065).
  • Outputting all cameras, not just the primary camera, to the renderer.
  • Added support for per-camera resolution overrides, specified with a "resolutionOverride" V2iData in the camera parameters.

API

  • Plugs and ValuePlugs now accept children. CompoundPlug will be deprecated.
  • Added BranchCreator::hashBranchGlobals() and computeBranchGlobals(), and implemented them for Parent.
  • Added outputCameras() and overload for outputCamera() to RendererAlgo.h.
  • Added LocalDispatcher.Job and LocalDispatcher.JobPool to track running batches.

Incompatible changes

  • Added additional virtual methods to BranchCreator
  • ValuePlug::settable() is no longer virtual
  • Removed methods and member variable from CompoundPlug
  • InteractiveRender "updateCamera" plug renamed to "updateCameras".

Version 0.3.0.0

21 Oct 18:43
Compare
Choose a tag to compare
Version 0.3.0.0 Pre-release
Pre-release

Core

  • Added SubGraph base class, which Reference and Box now derive from, allowing them both to be enabled/disabled.
  • Redesigned Dispatcher registration (#922) (see API section for details).

UI

  • Nodes created via the NodeMenu apply default values to their plugs, using the "userDefault" key in the Metadata (#1038).
  • Exposed the DispatcherWindow to the public API.

Cortex

  • Moved Cortex-specific functionality into new GafferCortex library and module.
    • The Gaffer core itself remains heavily dependent on Cortex, and always will. Here we're splitting out "end user" functionality such as OpHolders and ProceduralHolders, so that GafferCortex can be thought of as the user-visible presence of Cortex within Gaffer.
    • This remains backwards compatible for now via startup files, which allows a grace period for dependent code to update to the new module layout.

RenderMan

  • Added basic support for RenderMan volume shaders.

API

  • Added Gaffer.NodeAlgo python scope with applyUserDefaults( node ) (#1038).
  • Redesigned Dispatcher registration (#922).
    • Dispatchers are registered with Creator functions rather than instances.
    • Added get/setDefaultDispatcherType(), which can be used to create a new instance of the default type.
    • SetupPlugsFn is now a static function that can be registered along with a Creator, rather than a virtual method of Dispatcher instances.
  • Added gil release to GafferScene.matchingPaths python binding.
  • Fixed StringPlug string substitution bug.
  • Catching error_already_set in Dispatcher bindings.

Incompatible changes

  • Reference and Box now derive from SubGraph rather than Node or DependencyNode.
  • Redesigned Dispatcher registration (#922) (see API section for details).

Version 0.2.1.0

14 Oct 18:12
Compare
Choose a tag to compare
Version 0.2.1.0 Pre-release
Pre-release

Core

  • Expression node optimizations

Scene

  • Made ShaderAssignment use the shader type as an attribute name.
  • Added Group::nextInPlug() method
  • InteractiveRender now updates all attributes, not just shaders

UI

  • Dispatcher FrameRange UI displays the value that will actually be dispatched.
  • Removed unwanted horizontal padding from frameless Buttons.

Version 0.2.0.0

10 Oct 15:08
Compare
Choose a tag to compare
Version 0.2.0.0 Pre-release
Pre-release

This release brings significant optimisations, further additions to the SceneInspector, and the usual collection of miscellaneous enhancements and bug fixes.

Core

  • Optimised Context::substitute(). This gives a 73% reduction in runtime for a substitutions benchmark.
  • Added '' as an escape character in Context::substitute() (#997).
  • Boxes may now be enabled/disabled and define pass-through behaviours (#1015).
  • Significant optimisations to the computation engine.
  • Added TaskList node for grouping the dispatch of several input requirements.

Image

  • Fixed Display node for bucket sizes larger than the native tile size.
  • Fixed problems when running embedded in Maya.

Scene

  • Added code to clear caches after full procedural expansion in batch renders.
  • Added scene pass-through to the InteractiveRender node. This allows it to be seen in the Viewer, SceneHierarchy, SceneInspector etc.
  • Significant optimisations. A benchmark scene can now be generated in 3% of its previous runtime.

RenderMan

  • Added "command" plug to RenderManRender. This allows the user to customise the command used to render the RIB (#1017).

UI

  • SceneInspector improvements
    • Added set membership section (#930).
    • Added sets section to globals (#895).
    • Improved responsiveness.
  • MenuButton improvements
    • Menus are shown on press rather than release (#742).
    • Added menu indicator (#493).
  • Fixed OpDialogue bug which caused it to return to the parameters pane when it should have been displaying an error.
  • Dispatcher improvements
    • Added PlaybackRange to the frames mode menu (#1007).
    • Renamed ScriptRange to FullRange.

API

  • Added custom Diff support to SceneInspector.
  • Fixed crashes when passing None to PathMatcher python methods.
  • Added accessors for the buttons on VectorDataWidget (#1003).
  • Fixed broken SceneInspector.Row.getAlternate() method.
  • Added SceneProcedural::allRenderedSignal().
  • Added Context::remove() method.

Incompatible changes

  • SceneInspector API changes.
  • Box rederived from DependencyNode.
  • Dispatcher ScriptRange renamed to FullRange.

Build

  • Improved Travis continuous integration setup
    • Added running of unit tests
    • Added GafferRenderMan support
  • Fixed installation to paths starting with "./"
  • Fixed RenderManShader compilation in Clang 3.4
  • GafferOSL compatibility for OSL version 1.5

Version 0.1.1.0

19 Sep 17:30
Compare
Choose a tag to compare
Version 0.1.1.0 Pre-release
Pre-release

Core

  • Optimised computation for long chains of nodes (#963).
    • Optimised repeat calls to Context::hash().
    • Added Context::changed() method.
    • Made Context::hash() ignore "ui:" prefixed entries.
    • Refactored ValuePlug::hash() to delegate to Computation.

UI

  • Fixed Execute->Repeat Previous menu item.
  • Fixed display of '<', '>' and '&' in SceneInspector.

Scene

  • Added an ExternalProcedural node (#722).
  • Added pass-through plugs to ExecutableRender nodes and SceneWriter.
  • Added pixelAspectRatio, overscan, and resolutionMultiplier options (#979).

Image

  • Added pass-through plugs for ImageWriter.

Build

  • Requires Cortex 9.0.0-a6
  • Fixed typedef issues when building with GCC 4.8
  • Added Travis config for build verification (doesn't run the tests yet)

Version 0.1.0.0

10 Sep 10:33
Compare
Choose a tag to compare
Version 0.1.0.0 Pre-release
Pre-release

Apps

  • The "gui" app now tolerates errors when loading scripts from the command line. Note that currently errors are only reported to the shell.
  • The "execute" app can now handle nodes inside Boxes.

Core

  • Improved version numbering (#980)
    • Versions are now MILESTONE.MAJOR.MINOR.PATCH
      • Changes to MILESTONE version denote major development landmarks
      • Changes to MAJOR version denote backwards incompatible changes
      • Changes to MINOR version denote new backwards compatible features
      • Changes to PATCH version denote bug fixes
    • Added Gaffer.About.compatibilityVersion() method
    • Added GAFFER_COMPATIBILITY_VERSION macro for conditional compilation of C++ extensions
  • Fixed bug whereby GraphComponent::setName() could allow duplicate names
  • Dispatcher improvements
    • Dispatcher::postDispatchSignal() is now always executed, even if execution is cancelled or fails. A new boolean argument is passed to specify whether or not dispatch succeeded.
    • Dispatcher now creates job directories automatically, so derived classes don't have to

Incompatible changes

  • Dispatcher::postDispatchSignal() signature change.
  • Dispatcher jobDirectory() semantics change.
  • Dispatcher jobDirectoryPlug() -> jobsDirectoryPlug() rename.

Build

  • Requires Cortex 9.0.0-a5

0.101.0

03 Sep 17:30
Compare
Choose a tag to compare
0.101.0 Pre-release
Pre-release

This release contains features for render settings, and some work on the Dispatcher mechanism.

Core

  • ExecutableNodes now accept Boxes as requirements inputs and outputs.
  • Dispatchers accept Boxes for direct dispatching (#925).
  • Added SystemCommand executable node.
  • Optimised plug dirty propagation.
  • Added matchMultiple() function to StringAlgo.h.

Scene

  • Renamed Displays node to Outputs. Also changed "label" plug to "name" and the old "name" plug to "fileName" (#54).
  • Fixed dirty propagation bug in Outputs node.
  • Added wildcard matching to DeleteAttributes and DeletePrimitiveVariables.
  • Prefixed options in scene globals with "option:".
  • Added an outputOutputs() method to RendererAlgo.h, so outputOptions() need only output actual options.
  • Added DeleteGlobals node.
  • Added DeleteOutputs node.
  • Added DeleteOptions node (#965).
  • Added global mode to Attributes node, which places the attributes in the globals (with "attribute:" prefixes).
  • Updated render nodes to support global attributes.
  • Added global attribute support to SceneProcedural (#964).
  • Fixed RendererAlgo outputScene() to include coordinate systems.

UI

  • Added Outputs section to the SceneInspector (#921).
  • Updated SceneInspector to display global attributes.
  • Fixed display of single empty bounding box in SceneInspector.

RenderMan

  • Added FrameBegin/FrameEnd in RIBs generated by RenderManRender (#358). Requires Cortex 9.0.0-a5.

OSL

  • Fixed default arguments for OSL In* and Out* shaders.

Build

  • Set default compiler optimisation level to -O3.
  • Added missing OSL, OIIO, OCIO includes to the dependency package.
  • Clang compatibility fixes.

0.96.3

03 Sep 17:38
Compare
Choose a tag to compare
0.96.3 Pre-release
Pre-release

Core

  • Improved Plug bindings with a new PlugClass helper class.
  • Fixed serialisation of non-dynamic ArrayPlugs.

Version 0.100.0

08 Aug 18:52
Compare
Choose a tag to compare
Version 0.100.0 Pre-release
Pre-release

This release features significant improvements to Dispatcher and SceneInspector functionality, along with the usual bunch of small fixes and improvements.

Apps

  • Changed shutdown warnings to debug messages.

Core

  • Dispatcher improvements
    • Dispatching can be cancelled via preDispatchSignal() (#929).
    • Added batching (#870, #871).
    • Optimised foreground execution in LocalDispatcher.
    • Added per-node foreground execution overrides for LocalDispatcher (#927).
  • Added support for module level config files.

UI

  • SceneInspector improvements
    • Added history tracebacks (#834).
    • Added attribute inheritance diagramming (#206).
    • Added value drag/drop (#830).
    • Improved transform section (#896).
    • Optimised by deferring updates during playback.
    • Optimised by deferring updates when not directly visible.
    • Fixed errors where the selected path doesn't exist.

Scene

  • Fixed SceneWriter::hash() to include file path.
  • Fixed SceneWriter when caching multiple time samples.
  • Added support for coordinate systems.

API

  • Fixed Fixed python bindings crash when passing None for a scene path.
  • Added removeOnClose argument to Window.addChildWindow() method.
  • Fixed EventLoop bug where exection was thrown if an idle callback was removed and re-added during the same idle event.
  • Added hotspots to Pointer class.
  • Refactored ExecutableNode API
    • Removed "execution" prefix from method names.
    • ExecutableNodes now execute() using the current Context. Multi-context execution can be accomplished using executeSequence( frames ) assuming the client only needs to vary the frame of the current Context. requiresSequenceExecution() can be defined by nodes with special needs (SceneWriter for example), to alert clients that sequence execution is more appropriate.
    • Dispatcher::doDispatch() is now passed a DAG of TaskBatch nodes, simplifying the task of implementing more complex dispatchers.
  • Fixed call sequence for GraphComponent::parentChanging(). When a child is being transferred from one parent to another, it is now called at a point where the child still has the original parent.
  • Added ViewportGadget raster<->world space conversion methods.
  • Added Handle::dragOffset() method.

Build

  • Best used with 3delight version 11.0.96. This has bug fixes to support moving coordinate systems during IPR.
  • Requires Cortex 9.0.0-a3.

Version 0.96.2

01 Aug 22:56
Compare
Choose a tag to compare
Version 0.96.2 Pre-release
Pre-release

This is just a bug fix release for the Cortex 8 compatible branch. The latest public release at this point is version 0.99.0, below.

UI

  • Added OpDialogue preExecuteSignal() and postExecuteSignal().
  • Added OpDialogue.parameterisedHolder() method.