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.