• Fixed potential startup error in gui viewer.py configuration file.


  • Added background execution mode to the LocalDispatcher.


  • Added a gnomon to the 3d viewer (#41).

  • Improved SceneInspector

    • Reimplemented as a hierarchy with a registration mechanism for custom sections (#36, #821).

    • Improved diff formatting (#894).

    • Improved numeric formatting and alignment.

    • Added options section (#197).

  • Implemented error tolerant loading for file menu operations. Errors are reported via a dialogue, and will no longer prevent loading of a script (#746).

  • Fixed ScriptEditor to execute code in the right context. Prior to this, any queries performed in the script editor were always evaluated at frame 1.

  • Dispatcher UI no longer forces background execution - this is now controlled by per-dispatcher settings.


  • Improved IPR

    • Fixed hang during shutdown with active IPR render (#855).

    • Implemented camera edits for IPR rendering (#190).

    • Prevented errors in other nodes from causing incomplete edits.

    • Fixed UI errors caused by deleting camera during IPR (#898).

    • Optimised updates by pruning invisible hierarchies.

    • Fixed bug in shader edits at non-leaf locations.

  • Optimised Instancer, especially the computation of the bounding box for all the instances. This particular operation is now 18x faster on a 6 core machine, 7x faster on a 2 core machine.

  • Added an automatically created set for tracking all cameras in the scene.

  • Improved reporting of invalid cameras (#371).

  • Fixed FilteredSceneProcessor::acceptsInput() crash when inputPlug is null.


  • Registered automatic from-python conversions for ScenePlug::ScenePath. This replaces the need to manually wrap any functions taking a ScenePath, making the bindings simpler.

  • Added exists() method to SceneAlgo. This can be used to query whether or not a particular location exists within a scene.

  • Replaced boost_intrusive_ptr with raw pointer where appropriate, to follow the convention laid out in Cortex.

  • Removed deprecated Box metadata methods. The standard Metadata API should be used instead.

  • Added missing wrapper for NodeGadget::nodule() overload.

  • Added OpDialogue preExecuteSignal() and postExecuteSignal().

  • Added OpDialogue parameterisedHolder() method.

  • Added a flags argument to ParameterHandler::setupPlug(). This allows clients to choose the default flags for their plugs, rather than being forced to have (Default | Dynamic) plugs.

  • Added ViewDescription constructor for 3 argument registerView.

  • Added Style::renderTranslateHandle() method.

  • Added GafferUI::Handle gadget.

  • Moved translatePythonException() to a new ExceptionAlgo.h header.

  • Added formatPythonException() function to ExceptionAlgo.h.

  • Added continueOnError argument to ScriptNode execution methods.

  • Added error return value to ScriptNode execution methods.

  • Improved EventLoop.executeOnUIThread() to execute immediately when used on main thread.


  • Requires Cortex-9.0.0a2

  • Updated default build to use PySide 1.2.2.

  • Stopped using python-config for build configuration. It was unreliable on Mac, and the hardcoded paths it returns prevented us from building with prebuilt binary dependencies.