Releases: GafferHQ/gaffer
Gaffer 0.43.0.0
Features
- GafferVDB : Added PointsGridToPoints node and visualisation
of VDB point grids (#2386).
Improvements
- Appleseed : Added support for Capsules generated by the Encapsulate
node (#2402). - ImageReader (#2380) :
- Reimplemented to use Gaffer's native cache instead of
OpenImageIO's cache, giving speedups of 20-30% in some cases. This
also paves the way for introducing deep images to Gaffer. - Added initial support for multi-part OpenEXR files.
- Reimplemented to use Gaffer's native cache instead of
Fixes
- ValuePlug : Fixed problems when serialising compound plugs (#1500, #2395).
- BoxPlugs were being serialised with
setValue()
calls for the leaf plugs
and the top level plug itself. - FormatPlugs were incorrectly attempting to serialise a
getValue()
call
at the top level even when input connections existed at the leaf level.
This prevented a common pattern for the dispatch of image networks from
working.
- BoxPlugs were being serialised with
- Camera node : Fixed "Copy From Viewer" tool menu item (#2396).
- SceneInspector : Fixed transform component display (#2396).
- Expression : Fixed bug caused by non-serialisable input plugs (#2395).
- CollectImages/Merge/Offset : Fix out of bounds input tile accesses
(#2380). - TabbedContainer : Fixed an incompatibility with Qt5 (#2426).
- PythonCommand : Exposed imath module to the execution command (#2428).
- CompoundPlug : Added compatibility config for legacy gfr files (#2429)..
API
- Serialisation : Added support for nested classes in
classPath()
method (#2400). - Plug : Remove deprecated ReadOnly flag (#2401).
- Moved PathMatcher/PathMatcherData/PathMatcherDataPlug from GafferScene to Gaffer (#2404).
- Filter : Removed Result enum. Use IECore::PathMatcher::Result instead (#2404).
Breaking Changes
- GafferScene :
- Removed AlembicSource node. Use a SceneReader instead (#2397).
- Removed AlembicPath and AlembicPathPreview.
- GafferCortex : Removed TimeCodeParameter support. This parameter type
has been removed from Cortex (#2427). - GafferTest : Removed SphereNode (#2399).
- ValuePlugSerialiser : Removed
valueNeedsSerialisation()
virtual
method (#2395). - OpenImageIOReader : Removed cache related methods (#2380).
- Removed Plug::ReadOnly flag. Use MetadataAlgo instead (#2401).
- ValuePlugSerialiser : Removed flagsMask argument from
repr()
method (#2401). - Filter : Removed Result enum. Use IECore::PathMatcher::Result instead (#2404).
Gaffer 0.35.1.2-arnold5
Gaffer 0.42.0.0
This major release brings significant version upgrades to all supported
renderers : Arnold 5, 3Delight 13 (NSI), and Appleseed 1.8. It also
introduces native support for OpenVDB, and initial support for reading
and writing USD files. This is of course in addition to the usual
assortment of improvements and bug fixes.
Note :
As of this release we no longer support Arnold 4 or 3Delight 12.
Additionally, some Cortex functionality has been moved to the
IECoreScene python module, and we now use the imath python module
to access types like V3f, Color3f etc. Custom scripts and/or
expressions may need to be updated accordingly. See the Breaking
Changes section for more details.
Features
- Arnold 5 support (#2308) :
- Added support for rendering arbitrary meshes as volumes. Previously
they were converted to box volumes. - Added support for light path expressions.
- Added support for transform_type.
- Added ArnoldAOVShader node to support AOV shaders.
- Added support for volume_padding (#2356).
- Added support for rendering arbitrary meshes as volumes. Previously
- 3Delight 13 support via the NSI API (#2311).
- All shading/lighting is now performed via OSL shaders.
- Includes full support for adding/removing/moving objects during
interactive rendering.
- Appleseed 1.8 support (#2371) :
- Updated version to 1.8.1.
- Added AOV presets to the Outputs node.
- USD (#2393)
- The SceneReader node can now read USD files.
- The SceneWriter node can now write USD files.
- VDB (#2373) :
- Added native support for representing VDB volume data in Gaffer
scenes. - The standard SceneReader node can now load .vdb files.
- VDB objects can be rendered directly to Arnold.
- The Viewer now provides basic visualisation of VDB grids.
- The SceneInspector provides inspection of grid metadata etc
in the Object section. - Several new nodes demonstrate the feasibility of manipulating
VDB grids directly in Gaffer's node graph :- LevelSetToMesh
- MeshToLevelSet
- LevelSetOffset
- Added native support for representing VDB volume data in Gaffer
- Catalogue : Added a new CatalogueSelect node. This can be placed
downstream of a Catalogue to override the image to view (#2370). - UI Editor : Added the ability to add custom buttons to a plug (#2348).
- Gadget : Introduced layer-based rendering for Gadget-based UI
elements (#2304).
Improvements
- OpenColorIO nodes : Added role presets to all colorspace plugs (#2379)
- NodeGraph : Added icons to signify that a node has been bookmarked (#2369)
- PlugLayout : Improved layout of successive accessory widgets. They
are now all placed in the same row (#2348). - Simplified 3delight configuration based on $DELIGHT environment
variable (#2311). - TaskPlug/FilterPlug/ShaderPlug : Tightened
acceptsInput()
constraints (#2321). - OSLObject : Added support for reading and writing matrix primitive variables (#2327).
- GafferImage : Moved default format plug creation to gui config (#2333).
Fixes
- Catalogue :
- File Menu : Fixed "Import..." bugs (#1077, #2339).
- Edit Menu : Fixed automatic layout of pasted nodes (#2383)
- ShaderPlug : Fixed bug when deserialising inputs from BoxIO nodes (#2374)
- Crop : Fixed bug whereby changing the format plug value did not trigger
recomputation (#2368). - ImageWriter (#2364) :
- Fixed a crash when writing a data window with a single pixel .
- Fixed writing of empty data windows to write a single pixel data
window instead of a full image. OpenEXR does not support empty data
windows, so we must write at least one pixel.
- NodeGraph :
- SubGraph : Accounted for BoxIO nodes in `correspondingInput() (#2360).
This fixed a node reconnection bug when deleting a Box or Reference, and
allows Box and Reference nodes to be drag-inserted onto existing connections. - ScriptNode :
- Fixed node deletion problems caused by errors in
correspondingInput()
implementations. This was preventing nodes representing missing Arnold
shaders from being deleted (#2355). - Fixed crashes caused by syntax errors in code passed to
execute()
method.
This could cause a crash when pasting invalid text into the NodeGraph.
(#2319, #2320)
- Fixed node deletion problems caused by errors in
- Shader/ShaderPlug : Fixed GIL management bug which could cause a deadlock
in theattributes()
andattributesHash()
methods (#2354). - GraphComponent : Fixed crashes caused by passing
None
to the Python
bindings (#2338). - VectorWarp : Fixed handling of nan/inf (#2341).
- Expression : Fixed copy/paste bug (#2336).
- BoxIO : Fixed undo/redo of
insert()
method (#2314). - RendererAlgo : Fixed crash when renderer returns a null ObjectInterface (#2302).
- SetUI : Fixed set name context menus to account for intermediate nodes between
destination and filter (#2312). - StandardLightVisualiser : Fixed for Cortex 10 UV conventions (#2311).
- PlugAlgo : Fixed promotion of non-serialisable output plugs (#2314).
- Serialiser : Fixed syntax error created by
moduleDependencies()
(#2320). - Plug : Fixed
setInput( nullptr )
so it removes inputs from all descendant
plugs (#2323).
API
- OpenColorIOTransform : Added method to query available role names (#2379)
- Added default template arguments to simplify usage of several methods (#2361)
PlugGadget::getPlug()
IndividualContainer::getChild()
Dot::inPlug()
andDot::outPlug()
View::inPlug()
,View::getPreprocessor()
andView::preprocessedInPlug()
Metadata::value()
BoxIO::plug()
andBoxIO::promotedPlug()
- Added GafferUI.ButtonPlugValueWidget (#2348).
- ScriptNode : Added
importFile()
method (#2339). - Added new OpenGL renderer backend (#2302).
- Gadget : Introduced layer-based rendering (#2304).
- GafferOSL :
Breaking Changes
- Removed GafferRenderMan, and with it support for 3Delight versions
prior to 13 (#2311). - Removed support for Arnold 4 (#2308).
- Gaffer and Cortex now use the official
imath
python module rather
than custom bindings in IECore (#2378). - Cortex scene classes have moved to a new IECoreScene module, as we
continue to simplify and modularize Cortex (#2362). - Removed SplineEditor/SplinePlugGadget since they have never been
used (#2375). - Removed ProceduralHolder node. This was not exposed via the UI,
had never been used, and is no longer supported by any of the
renderer backends (#2366). - Shader : Removed deprecated state methods (#2354).
- Removed RenderableGadget. If similar functionality is required,
use an ObjectToSceneNode and a SceneGadget (#2334). - SceneAlgo : Removed camera/transform utilities. These relied on conventions
and functionality that will be removed in Cortex 10 (#2332). - RendererAlgo : Removed obsolete functions used only with the legacy
renderer backends (#2318). - Removed code for handling
IECore::Light
. Lights are now
always represented as shaders assigned to a location (#2331). - Removed SceneProcedural and ScriptProcedural. These were only useful
in legacy renderer backends, which have now all been removed (#2318). - Removed ExecutableRender node. This used the legacy renderer backends
which have all been removed (#2318). - Gadget : Modified rendering API (#2304).
- Removed IncrementingPlugValueWidget. Use RefreshPlugValueWidget
instead (#2322). - Removed EnumPlugValueWidget. Use PresetsPlugValueWidget and
metadata presets instead (#2322). - ViewportGadget : Refactored camera transform handling. The camera
transform is now accessed via newsetCameraTransform()
/getCameraTransform()
methods, rather than via the camera itself (#2351). - ScriptNode : Modified signature of
ScriptExecutedSignal
to use raw pointers
(#2336).
Gaffer 0.35.1.1-arnold5
This is an ugly backport of Arnold 5 support for Gaffer-0.35.1.1. It is not recommended for use - the current master contains properly support Arnold 5 support.
Gaffer 0.35.1.1
Please note that this is a maintenance release primarily for use at Image Engine - at the present time, 0.41.0.0 is the latest version.
Fixes
- GafferImage::VectorWarp : Fixed crash on pixels with value nan/inf
Gaffer 0.35.1.0
Please note that this is a maintenance release primarily for use at Image Engine - at the present time, 0.41.0.0 is the latest version.
Features
- GafferOSL : Added support for reading and writing matrices in OSLObject (#2315).
Fixes
- BoxIO : Fixed bug that could cause promoted plugs to initially be invisible in the NodeGraph (#2284).
- ie/options : Fixed errors when building without renderer support (#2325).
- Plug : Fixed
setInput (nullptr )
to remove descendant inputs (#2329). - RenderManShader : Fixed reloading of coshader arrays (#2329).
API
- PlugAlgo : Added promoteWithName() function (#2284).
0.41.0.0
Breaking Changes
- Adopted Cortex 10 UV representation (#2281) :
- UVs are now represented as V2f primitive variables,
not separate s/t float primitive variables. - Primary UV set is called "uv".
- UV origin is in the bottom left, with increasing values of
V going up (flipped vertically compared to previous orientation). - Indices are now stored on the same primitive variable as the
UVs themselves. - This has affected the plugs and default values for a number of
nodes.
- UVs are now represented as V2f primitive variables,
- SplinePlug : Changed value representation from IECore::Spline to new
SplineDefinition class (#2148). - Algo headers : Removed compatibility namespacing (#2299).
- Removed CompoundPlug. Use Plug or ValuePlug instead (#2298, #1323).
- Removed CompoundPlugValueWidget. Use PlugLayout instead (#2298).
- FilteredSceneProcessor : Removed deprecated
filterContext
method.
Use FilterPlug::FilterScope instead (#2260). - Stopped installing Cortex image ops. Use GafferImage nodes instead (#2258).
- Removed OpenImageIOAlgo. Use IECoreImage::OpenImageIOAlgo instead (#2258).
- Removed GafferCortexUI::ImageReaderPathPreview. Use
GafferImageUI::ImageReaderPathPreview instead (#2258). - GafferBindings : Hid internal details in GafferModule (#2289).
- GafferUIBindings : Hid internal details in GafferUIModule (#2256).
- GafferCortexBindings : Hid internal details in GafferCortexModule (#2248).
Features
- Added Viewer visualisation of Arnold light filters (#2275).
- Added Encapsulate node. This encapsulates portions of a scene by
collapsing the hierarchy and replacing it with a procedural which
will be evaluated at render time (#2283). - Added FloatSpline OSL shader ((#2292).
- Added VTuneMonitor to annotate VTune profiles with node processes (#2247).
Improvements
- LightTweaks : Added "Delete" menu item to context menu (#2285).
- OSLShader : Improved node graph labels (#2296).
- Parent : Defaulted "root" plug to value of "/" (#2242).
- ArnoldOptions : Added abortOnError and maxSubdivison settings (#2290).
- SplinePlug :
- CollectScenes : Added "root" plug, to allow subtrees to be collected
from the input scene (#2238). - OSLObject/ShadingEngine : Added multithreaded evaluation for improved
performance (#2251). - CompoundDataPlug : Added menu items for adding box plugs (#2263).
- Browser/View apps : Improved image preview (#2258).
- Filter plug UI : Decluttered embedded filter UIs (#2276).
- Group/BranchCreator : Optimised context management (#2270).
Fixes
- ArnoldRender : Fixed error handling for aborted renders (#2279).
- SplineWidget :
- ImageWriter : Fixed bug when writing JPEG with blank scanlines (#2268).
- ImageReader : Fixed "enabled" plug, so that turning it off outputs a default
blank image (#2254). - Documentation :
- BoxIO : Fixed bug that could cause promoted plugs to initially be
invisible in the NodeGraph (#2284). - GraphGadget : Fixed GIL handling in
setRoot()
andsetFilter()
methods (#2287). - PlugLayout : Collapsible layouts are now used if a
rootSection
is specified (#2276). - PlugAlgo : Fixed bug where promoted plugs had the wrong value (#2298).
- Prune : Fixed hashing of sets (#2243).
- Text : Fixed problems with vertical alignment when there was too much
text to fit in the text area (#2291).
API
- ValuePlug : The
Node::plugSetSignal()
is now emitted for all ancestors, not
just for ValuePlugs (#2298). - GafferCortex::ParameterHandler : Added
hash()
method (#2298). - RendererAlgo : Added optional
root
argument tooutputObjects()
(#2283). - SceneAlgo : Added
parallelProcessLocations()
overload takingroot
(#2283). - Wrapper classes : Added templated variadic constructors (#2250).
- PlugAlgo : Added
promoteWithName()
function (#2284). - Added Capsule class to represent encapsulated scene hierarchy (#2283).
- StandardLightVisualiser : Added method for querying spotlight parameters (#2275).
- WidgetAlgo : Fixed
grab()
to work around Qt bugs on OSX (#2307).
Build
Gaffer 0.35.0.1
Gaffer 0.35.0.0
Please note that this is a maintenance release primarily for use at Image Engine - at the present time, 0.40.0.0 is the latest version.
Breaking Changes
- SplinePlug : Redesigned storage to support alternate basis (#2202).
Older scenes are still expected to function correctly.
Features
- 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).
Improvements
- Splines (#2202) :
- Added support for alternate basis, including Linear, CatmullRom, BSpline, and MonotoneCubic.
- Fixed bug when passing splines to OSL.
- Hash Cache : Improved performance for heavy scenes (#2262).
- CollectScenes : Added "root" plug, allowing subtrees to be collected from the input scene. (#2240).
- Shader node : Added attributeSuffix plug. This is primarily of use with light filters (#2135).
Fixes
- Group and BranchCreator : Improved performance when accessing the mappingPlug (#2271).
- ImageWriter : Fixed bug when writing jpg with blank scanlines (#2269).
- SceneInspector : Fixed bug when location have null shaders assigned (#2274).
- ScriptNode : Fixed bug in isExecuting() when loading References (#2226).
- ReferenceUI : Fixed bug when using DuplicateAsBox for references inside boxes (#2225).
- Prune : Fixed hashing of sets (#2249).
API
- VTuneMonitor : Added monitor to annotate vtune profile with node processes (#2231).
Version 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.
- SceneReader and SceneWriter nodes can now read and write Alembic files directly.
- 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
inaddMembers()
(#2228)
API
- Added default template arguments for Plug and GraphComponent methods. This simplifies
the use of methods likeGraphComponent::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)