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.
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)