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
P
values 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.plugType
metadata 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
floating
argument toacquire()
method (#2222)