Releases: GafferHQ/gaffer
Releases · GafferHQ/gaffer
0.11.0.0
Image
- Image nodes are now documented
- RemoveChannels renamed to DeleteChannels
Scene
- Fixed a bug in the InteractiveRender that was causing a crash when the scene child names changed.
0.10.1.0
UI
- Fixed FilterPlugValueWidget filter menu
Scene
- Fixed dirty propagation for globals in the camera node
- IPR now blocks the UI while it's starting up, and is more selective
about sending scene edits.
Core
- Fixed dirty propagation bug in expressions
Version 0.10.0.0
Core
- Reimplemented paths framework in C++ (#1190). This gives much
improved performance - 10x or more speed improvements in the
SceneHierarchy panel. - Fixed subprocess hangs seen when dispatching renders inside Maya.
- Restored compatibility with references from prior to version 0.8.0.0.
UI
- Added bookmarks system for NodeGraph (#849).
- Bookmark nodes using the right-click node context menu
- Connect plugs to bookmarked nodes using the right-click plug
context menu.
- Added NodeGraph Ctrl+Click to select all downstream nodes (#941).
- Added additional "Edit/Select Connected" menu items
- Fixed "Edit/SelectConnected" menu items to ignore invisible nodes.
- Fixed "Edit/SelectAll" menu item to ignore invisible nodes (#1207).
- Highlighted plugs at non-default values in the NodeEditor (#1216).
- SceneInspector
- Significant performance improvements.
- Added name based filtering for options and attributes (#1159).
- Added query caching.
- Fixed bug whereby Widget.setVisible( notABool ) could cause problems.
- Fixed clearing of StandardNodeGadget errors for non-DependencyNodes.
Scene
- Added "mode" plug to Set node. This allows paths to be added to or
removed from existing sets, in addition to the old behaviour of
creating a new set (or replacing an existing one of the same name). - Added ClippingPlane node.
- Added "enabled" plug to Filter nodes (#1196).
- Added FilterSwitch node (#1197).
- Added "name" plug to Duplicate node, to provide control over the
names given to the duplicates (#1200).
Appleseed
- Added photon target attribute.
- Added sampler option.
- Synced default options with new Appleseed defaults.
Cortex
- Added UI hint to control the visibility of the header in the
ParameterisedHolder node UI.
API
- GraphGadget
- Added degreesOfSeparation argument to upstreamNodeGadgets() method.
- Added downstreamNodeGadgets() and connectedNodeGadgets() methods.
- EditMenu
- Added scope() method. This should be used by custom edit menu
commands to ensure they operate on the right portion of the
node graph.
- Added scope() method. This should be used by custom edit menu
- CompoundVectorParameterValueWidget
- Added support for "showIndices" parameter user data.
- PathMatcher
- Added addPaths() and removePaths() methods, each taking a second
PathMatcher to provide the paths.
- Added addPaths() and removePaths() methods, each taking a second
- Serialisation
- Made classPath() and modulePath() methods compatible with passing
a class as well as an instance.
- Made classPath() and modulePath() methods compatible with passing
- PathListingWidget
- Added setSortable() and getSortable() methods.
- Added MatchPatternPathFilter
- Added bindings for SceneAlgo camera() and shutter() functions.
- Metadata
- Added control over persistence of instance values.
- Added preprocessor macros for gaffer version numbers.
Incompatibilities
- Path
- The info API has been replaced with a property API. Emulation
for the old API exists, but it has been deprecated. - Properties must derive from RunTimeTyped, whereas info could
contain any python type. - Subclasses now must implement the copy() method.
- The info API has been replaced with a property API. Emulation
- PathListingWidget
- Column python class has been replaced with several specialised
C++ subclasses. It is no longer possible to derive from Column
in python.
- Column python class has been replaced with several specialised
- GraphGadget
- Added argument to upstreamNodeGadgets() method.
- GafferScene::Filter
- Renamed "match" plug to "out". Backwards compatibility is
provided by a getattr alias in Python.
- Renamed "match" plug to "out". Backwards compatibility is
Build
- Updated public build to use Cortex 9.0.0-b4.
- libGafferUI now links with Qt. This must be considered when building
Gaffer to be hosted inside other applications. - Requires subprocess32 python module.
- Added subprocess32 to dependencies build process.
Version 0.9.0.1
Core
- Restored compatibility with
.grf
files exported with versions prior
to 0.9.0.0.
API
- Added the ability to have non-persistent Metadata.
Version 0.9.0.0
This is primarily a bugfix release.
Core
- Documented all nodes and plugs.
- Improved Reference workflow
- Boxes exported for referencing contain new default values for all
promoted plugs to match their current values on the Box. - When reloading a reference, only values the user has changed from
their defaults will be kept. Other values will be updated from the
new reference. - Box metadata is included when exporting for referencing. This
means that colours and descriptions set via the UIEditor will
be transferred onto any Reference nodes which load the exported
reference (#1171).
- Boxes exported for referencing contain new default values for all
- Added "-threads" command line argument to Gaffer.Application
- Fixed "gaffer execute" error handling
Cortex
- Documented all nodes and plugs.
Scene
- Added hack for controlling TBB concurrency from SceneProcedural
- Using the GAFFERSCENE_SCENEPROCEDURAL_THREADS environment variable
RenderMan
- Fixed hangs caused by deleting or reconnecting a paused
InteractiveRenderManRender node.
Appleseed
- Fixed render threads and texture memory options.
Image
- Fixed bug which prevented serialisation of read only FormatPlugs.
UI
- Fixed creation of expressions for BoolPlugs.
- Fixed context used by scene view camera chooser.
API
- Added Metadata::registerNode() method. This allows all the metadata
for a node and its plugs to be registered with a single function call
(#1160). - Added GafferTest.TestCase.assertNodesAreDocumented().
- Serialisation
- Added serialisation argument to
Serialiser::constructor()
. - Added Serialisation::parent() accessor.
- Added serialisation argument to
- ValuePlug
- Simplified handling of default values.
- Added isSetToDefault() method.
- Made CompoundDataPlug::addMember() set default value for name plug
(#935). - Added Python bindings for tbb::task_scheduler_init
Incompatibilities
- Added argument to virtual method
Serialiser::constructor()
. - Changed layout of ValuePlug classes.
- Removed virtual overrides from some ValuePlug classes.
- Added virtual method to ValuePlug.
Build
- Updated public build to use Cortex 9.0.0-b3.
- Included Shiboken module in release packages.
Version 0.8.2.0
Core
- Prevented errors in Metadata slots from stopping other slots running.
Scene
- Fixed BranchCreator dirty propagation.
RenderMan
- Add trace bias in RenderManAttributes.
Image
- Stopped display transforms hardcoding OCIO "linear" colour space.
- Fixed dirty propagation for Merge node.
UI
- Fixed evaluation time of look-through cameras in the Viewer.
- Added camera name to resolution gate overlay.
- Removed redundant render requests from CompoundNodule.
- Simplified Gadget render requests when children are added/removed
- Prevented duplicate errors on StandardNodeGadget tooltips.
- Fixed CompoundEditor lifetime bug
- Setting DispatcherUI frameRange widget text in PlaybackRange mode.
- Made NameWidget replace " " with "_" automatically.
API
- Removed GafferBindings::CatchingSlotCaller.
- Added Gaffer::CatchingSignalCombiner class.
- Added Gadget::requestRender() method.
Build
- Fixed GafferRenderMan public build.
Version 0.8.1.0
Core
- Fixed ComputeNodeWrapper exception handling.
UI
- Fixed GafferUI crashes seen at Python shutdown.
- Added support for hiding some fields of CompoundNumericPlugValueWidgets.
- Update DispatcherUI; can dispatch box with promoted requirement.
- Fixed crashes when deleting a node immediately after it errored.
Scene
- Fixed light visibility bug.
- Fixed coordinate system visibility bug.
- Added visible() function to SceneAlgo.h.
- Added GL FacingRatio shader
RenderMan
- Added "vector2" widget annotation support for RenderMan shaders.
Build
- Stopped installing the python module by default
- Moved installDir to /tmp for local IE builds.
- Fixed release script to ignore GAFFER_OPTIONS_FILE environment variable.
- Updated IE publicDependenciesBuild script.
- Enabled testing of UI modules on Travis CI.
- Added debug output to installDependencies.py.
Version 0.8.0.0
Apps
- Python
- Added support for executing files with arbitrary extensions.
- Properly handled
sys.exit()
usage from within a script. - Updated sys.argv so
gaffer python myScript.py
behaves like
python myScript.py
.
Core
- Made small optimisations to the computation engine.
UI
- Added "layout:widgetType" metadata entry.
- Improved image rendering quality.
- Added error display in the node graph (#1115).
- Added menu item for applying Random node to IntPlugs.
- Fixed Box UI error when connecting external BoolPlug to internal IntPlug.
Scene
- Removed support for attribute caches.
- Optimised SceneReader hashes.
- Improved hash computation for many node types. This should improve
cache memory usage and speed. - Fixed SceneReader for invalid files and paths. Previously it would
error on the first attempt, but either silently fail or crash on
subsequent attempts. - Optimised PathMatcher construction.
- Multithreaded child procedural instantiation in SceneProcedural.
RenderMan
- Added support for a "nodeColor" annotation.
Image
- Optimised ImageReader. Reduced runtime of ImageReader->ImageTransform
benchmark by nearly 40%. - Fixed thread-safety bug in ImageReader.
OSL
- Added UI support for OSL "help", "label", "divider", "widget" and
"options" metadata entries.
Appleseed
- Added visibility attributes to AppleseedAttributes node.
API
- Added outputsToIgnore argument to GafferTest.TestCase.assertHashesValid().
- Added NodeAlgo support for plug presets specified en masse via arrays.
- Added Node::errorSignal().
- Added tokenize() function to StringAlgo.h.
- Added support for array metadata in OSLShader.
- Simplified OSLShader::*Metadata() python return types.
- Added Python bindings exposing the OSL version.
- Removed Source node.
- Removed FileSource node.
- Detemplatized ObjectSource.
- Added GafferUI.LayoutPlugValueWidget. This is entirely metadata-driven,
and will be used to slowly replace legacy CompoundPlugValueWidget UIs. - Deprecated CompoundPlugValueWidget.
- Fixed drawing of ImageGadget children.
- Added Gadget::executeOnUIThread() method.
Build
- Updated README with simplified build instructions.
- Added support for OSL 1.6.
- Requires Cortex 9.0.0-b2.
- Added Qt headers to Gaffer packages.
- Fixed TBB compilation on OS X.
Incompatibilities
- Simplified OSLShader::*Metadata() python return types.
- Removed support for attribute caches.
- Removed Source node.
- Removed FileSource node.
- Detemplatized ObjectSource.
Version 0.7.0.0
This release brings the exciting addition of support for the open source Appleseed renderer. It also adds the much asked for Dot node, and a tool for editing render crop windows. Plus of course the usual small improvements, optimisations and bug fixes.
UI
- Added resolution gate and crop windows overlays to 3d viewer (#1016).
- Added tool for manipulating crop window.
- Added "User Default" item to plug popup menus.
- Added sneaky hotkey for navigating inside any node in NodeGraph.
- Fixed Reference node UI to match equivalent Box node UI (#1108).
- Improved positioning of nodes created by the NodeMenu.
- Improved table widget (#204).
- Remove button disabled when selection empty
- Newly added rows are selected automatically
- Newly added row has keyboard focus for immediate editing
- Added customisable presets to plug widgets (#1113).
- Fixed bugs where image viewer was using incorrect context (#1124).
- Fixed bug where channel mask UI was using incorrect context.
- Added a refresh button to ImageReaders.
- Added support for specifying node, nodule, and connection colours via Metadata (#89).
- Added support for setting node colour in the UIEditor or from the RMB popup in the graph.
- Fixed bug in ColorChooserDialogue.waitForColor().
- Added basic colour scheme for nodes in the GUI app (#1098, #154).
Core
- Optimised Switch node for constant indices. A benchmark with the bunny scene followed by 50 switches shows a 6x speedup overall.
- Added Dot node (#12).
- Fixed bindings for Metadata types other than simple typed data (#1136).
Scene
- Added min/max limits to StandardOptions crop window plug.
- Fixed bugs which prevented ObjectSource nodes from working after create/undo/redo.
- Fixed UnionFilter to accept inputs from Boxes.
Image
- ImageWriter now creates the necessary directories before writing images.
RenderMan
- Added shader Metadata option "shaderTypeOverride" (#pragma annotation "shaderTypeOverride" "ri:shader" will force the Gaffer shader type to "ri:shader").
Appleseed
- Added support for the Appleseed renderer, courtesy of Esteban Tovagliari.
API
- Optimised ScenePlug::stringToPath(). This gives an 88% reduction in runtime for a synthetic test of just that function, and a 7% reduction in total runtime for a scene benchmark using the Instancer.
- Added hasUserDefault( plug ) and applyUserDefault( plug ) to NodeAlgo.
- Added Context.contains binding.
- Simplified numeric plug bindings.
- Added min/max values to BoxPlug.
- Added handy CompoundDataPlug::MemberPlug child accessors.
- Added GafferBindings::NodeClass() overload for suppressing init.
- Moved shutter() and transform() from RendererAlgo.h to SceneAlgo.h.
- Added camera() methods to SceneAlgo.h.
- Removed GLWidget minimum size.
- Fixed bug where ViewportGadget::setCamera() could forget viewport size.
- Fixed ViewportGadget::RasterScope to work during selection.
- Added ViewportGadget::preRenderSignal().
- Made View::update() non-pure virtual.
- Added View::contextChangedSignal().
- Added Tool base class.
- Fixed bugs in ExceptionAlgo formatPythonException().
- Fixed StandardStyle border widths to be independent of border radius.
- Added Menu.popupPosition() method.
- Improved support for functools.partial() callables in Menu commands.
- Added metadata to control StandardNodeGadget minimum width, padding, and nodule spacing.
- Improved StandardNodeGadget drag/drop handling. Previously it would accept drags it wasn't going to use, preventing other handlers from working.
- Added Nodule::updateDragEndPoint() virtual method.
- Fixed ScriptNode::deleteNodes() for nodes without enabled plugs.
- Added customisable edge gadgets to StandardNodeGadget.
- Added support for changing nodule position on StandardNodeGadget.
- Guaranteed order of Metadata::registered*Values().
- Added plug presets methods to Gaffer.NodeAlgo.
- Added GafferUI.PresetsPlugValueWidget.
- Added PlugValueWidget.childPlugValueWidget(), so derived classes don't need to implement it if they don't have such children (#1123).
- Added Style::renderNodeFrame() to distinguish between frames drawn for nodes and those drawn as normal frames.
- Updated Style bindings.
- Added useDisplayTransform argument to ColorSwatch constructor.
- Added useDisplayTransform argument to ColorChooser and ColorChooserDialogue.
- Added DataBinding.h header with dataToPython().
Build
- Added scripts for automating releases.
- Updated IE public build script to use MILESTONE_VERSION, and renamed it to publicDependenciesBuild, since it is no longer used for producing the public release builds.
- Requires Cortex 9.0.0-b1 for Appleseed support.
Incompatibilities
- Moved shutter() and transform() from RendererAlgo.h to SceneAlgo.h.
- Made View::update() non-pure virtual.
- Added virtual method to Nodule.
- Added and reordered Style virtual methods.
Version 0.6.0.0
UI
- Fixed bug which prevented newly created nodes from being inserted inline in the Node Graph.
- Added error display to string and numeric plug widgets - typically this is useful when a bad expression has been entered. Previously bad expressions would break the UI.
- Optimised the 3d view significantly.
- Fixed UI reordering bug in UIEditor (#847).
- Added menu item for deleting CompoundDataPlugValueWidget children.
Apps
- Added ignoreScriptLoadErrors parameter to execute app.
Core
- LocalDispatcher now has an option to ignore errors when loading the script (#1084).
Scene
- Fixed Grid node GL shader assignment.
- Fixed bug in Instancer dirty propagation.
- Fixed SubTree set computation when root path omits the leading slash.
- Added "isolate from" capability to GafferScene.Isolate node.
API
- Added support for invalid variants to GafferUI._Variant.fromVariant().
- Added TextWidget setErrored()/getErrored() methods.
- Added GafferSceneUI::SceneGadget class, for optimised display of scenes in OpenGL.
- Removed bloat from SceneProcedural - this was being used previously to implement the viewer but is no longer needed.
- Added ValuePlug::getValue() arguments for when hash is known.
- Added TypedPlugClass helper to GafferBindings.
- Improved exceptions thrown from ScriptNode::execute().
- ScriptProcedural now ignores errors when loading the script.
- Added PlugLayout.layoutOrder() static method.
- Fixed deadlocks if computes spawn their own threads.
- Added GafferScene::PathMatcher::prune() and isEmpty() methods.
Incompatibilities
- Added argument to ValuePlug::getObjectValue(), and associated derived class getValue() calls. Source compatibility is maintained, but binary compatibility is not.
- View::setContext() is now virtual.
Build
- Requires Cortex 9.0.0-a10