0.40.0.0¶
This release brings improved Alembic support, support for Arnold light filters and Appleseed area lights, and the usual medley of miscellaneous improvements and bug fixes.
The astute observer may note that the version number leaves a gap from the previous major version of 0.34. This is because 0.40 is the first version to require the use of a C++11 compiler, but some current users are stuck on older toolchains for a little while longer. We intend to use the intervening versions to provide backported feature releases for the older toolchains where needed.
Breaking Changes¶
- Simplified GafferScene/GafferSceneUI/GafferImage/GafferImageUI bindings by hiding code which is only used internally (#2142, #2152).
- TaskNode : Rederived from DependencyNode (#2163)
- Removed OrphanRemover/Behaviour classes. Use StandardSet’s built-in orphan removal instead (#2212).
- CompoundNodule : Removed deprecated constructor arguments. Use metadata instead (#2216).
- ContextProcessor : Changed signature of processContext()and addedaffectsContext()pure virtual method (#2220).
- SceneInspector (#2222) :- Renamed SceneInspector.inspectsAttributes()to SceneInspector.supportsInheritance()`.
- Removed SceneInspector.SideBySideDiff.frame()method. Client code should use the new setValueWidget/getValueWidget accessors to get access to the frame contents instead.
 
- Renamed 
- Replaced use of boost::function with std::function (#2224)
- Display :- Removed server management. Use the Catalogue or manage a display server directly instead (#2228).
- Display : Removed dataReceivedSignal()
 
- Removed GafferBindings::ExceptionAlgo. Use IECorePython::ExceptionAlgo instead (#2241).
Features¶
- Alembic (#2234) :- SceneReader and SceneWriter nodes can now read and write Alembic files directly. The old AlembicSource node is now deprecated.
- Improved performance.
- Added support for points and curves geometry.
- Fixed mesh winding order.
 
- Light Filters. Added initial support for Arnold light filters. These can be loaded using the regular ArnoldShader node and assigned to lights using the ShaderAssignment node (#2135).
- Appleseed : Added rectangular area lights (#2237).
Improvements¶
- SceneWriter (#2161) :- Added support for serialising sets to .scc files.
- Improved performance by multithreading scene generation.
 
- TaskNode : Errors are now reported in the NodeGraph (#2163)
- Execute app : Improved error reporting (#2163)
- OSL expressions : Added support for M44f plugs (#2187)
- Shader node : Added attributeSuffix plug. This is primarily of use with light filters (#2135).
- StandardNodeGadget : Added support for “iconScale” metadata (#2211)
- OSLShader : Added support for “icon” and “iconScale” shader metadata (#2211)
- ArnoldRender : Improved render shutdown performance (#2203)
- OSL ShadingEngine : Added support for converting aggregate data to arrays in getattribute()(#2219).
- SceneInspector (#2222) :- Improved discoverability of diff, inheritance and history views
- Removed history traceback from fields where it was irrelevant
- Fixed click-to-select in Set history tracebacks
 
- NodeGraph : Node double click and Edit.. menu items now always open a floating NodeEditor (#2222)
- Merge (#2223) :- Improved labelling of node inputs (#260)
- Changed default operation to “Over”
 
- Stats app : Added -preCache argument (#2236)
- Appleseed (#2237) :- Updated to version 1.7.1-beta
- Added double sided material assignment attribute
- Added per ray type bounce limits
- Improved default texture cache size
 
Fixes¶
- NodeGraph : Fixed graphical glitches when drawing connections (#2156, #2170, #2230)
- Dot :
- Qt :
- Catalogue :
- Fixed loading of old files which referred to OIIO’s “catrom” filter, which is now named “catmull-rom” (#2177).
- OpenGLShader : Fixed problems caused by attempting to reload shaders when no GL implementation is available (#2176)
- OSLImage (#2198) :- Fixed bug which meant that tiles with origin -64 were passed through unchanged
- Fixed UVs for images with negative display window origins
- Fixed global Pvalues to reflect pixel centres, not corners
 
- Menu : Fixed handling of special regex characters in search field (#2221)
- Color editors : Fixed bug that allowed the creation of multiple editors for the same plug (#2209, #2222)
- ScriptNode : Fixed bug where isExecuting()returned the wrong result when loading a script containing references (#2227).
- Reference : Fixed “Duplicate as Box” menu item to create the Box with the right parent when the Reference node is not at the root of the script (#2229).
- MonitorAlgo : Fixed use of unitialised value (#2233)
- CompoundDataPlug : Fixed bug which prevented non-alphanumeric names being used
in addMembers()(#2228)
API¶
- Added default template arguments for Plug and GraphComponent methods. This simplifies
the use of methods like GraphComponent::getChild()andPlug::getInput()(#2167).
- Added SceneAlgo::parallelProcessLocations. Over time this will replaceparallelTraverse()(#2161).
- ImageAlgo : Fixed tile range for parallelProcessTiles(#2164)
- TaskNode : Rederived from DependencyNode (#2163)
- Arnold ParameterHandler : Allowed plug type to be overriden using a gaffer.plugTypemetadata entry (#2135).
- StandardSet : Added automatic orphan removal feature (#2212)
- Context : Added EditableScope::removeMatching()method (#2220)
- Menu : Added support for partial( WeakMethod( ... ) )in commands (#2222)
- NodeSetEditor : Added floatingargument toacquire()method (#2222)