0.97.0
This release is focussed mainly on optimisation and bug fixes, with significant speedups being provided by moving to a new caching implementation provided by Cortex 9. Behind the scenes it also contains progress towards exposing Dispatcher functionality at the user level.
Core
Optimised FilteredChildIterator and PlugIterator. This alone gives more than a 5% speedup in a simple Instancer benchmark.
Fixed serialisation of non-dynamic ArrayPlugs. This bug caused the appearance of duplicate requirements plugs on executable nodes (#580).
UI
Added a grid to the 3D viewer.
Added NodeGraph menu item for selecting objects affected by a node - accessed by right clicking on a filtered scene node.
Fixed several causes of zombie widgets which could cause errors at shutdown.
Moved the Execute button for ExecutableNodes to a prominent position in the header of the NodeEditor.
Added SceneWriter to the node menu. Also reorganised the Scene menu to include a File submenu, and simplified the Object menu by moving generators into the Source submenu.
Scene
Optimised Shader network computation - reducing runtime by 35% for typical production networks.
Arnold
Fixed ArnoldRender “Generate expanded .ass” mode. It was using a “-resaveop” command line flag removed from kick in Arnold version 4.0.10.0.
API
Added ability for Gadgets to have child Gadgets. Previously only ContainerGadgets could have children.
Rederived NodeGadget from Gadget rather than IndividualContainer. This allows more flexibility in NodeGadget implementations, and also better hides the implementation details.
Added methods for controlling Gadget visibility.
Rederived ViewportGadget from Gadget rather than IndividualContainer. This allows viewports to have multiple child gadgets, which paves the way for more complex views and interactive manipulators.
Made UI registration methods accept classes in place of TypeIds.
Added public GafferScene::Filter methods for specifying input scene via Context.
Added SceneAlgo.h with methods for querying all objects matching a filter.
Continued refactoring the Executable framework, in preparation for exposing it to users
Americanized spelling.
Renamed ExecuteUI to DispatcherUI.
Renamed ExecutableNode “dispatcherParameters” plug to simply “dispatcher”.
Rederived SceneWriter from ExecutableNode.
Rederived Dispatcher from Node, to allow settings to be specified via plugs.
Renamed Dispatcher::addAllPlugs() to Dispatcher::setupPlugs().
Renamed Dispatcher::addPlugs() to Dispatcher::doSetupPlugs.
Added shutdown checks for zombie widgets and scripts.
Fixed “base class not created yet” GafferRenderMan import error.
Added _copy parameter to Shader::state() python binding.
Documentation
Improved formatting of Doxygen documentation - a brief description of each class is now shown above the detailed member documentation.
Build
Requires Cortex 9.0.0-a1.
Recent Cortex LRUCache improvements offer significant performance gains.
Updated default TBB version to 4.2.