Releases: GafferHQ/gaffer
Releases · GafferHQ/gaffer
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
Version 0.5.0.1
Scene
- Fixed signal threading bug in SceneProcedural which was causing sporadic crashes
Version 0.5.0.0
Core
- Fixed LocalDispatcher to quote command line arguments and ignore "ui:" prefixed context variables.
- Avoiding shell subprocess for Local Jobs stats.
- LocalDispatcher now just constructs a Job and lets it do the heavy lifting
- Fixed bug where script context changes could leak into local background dispatches.
- added python error catching to ConnectionBinding, to prevent crashes
- Fixed serialization bug with extra plugs on references
- Dispatcher::frameRange() is now public and virtual.
UI
- Menu widget: Added support for icons
- Disabled Kill button when no jobs are selected.
- Job details tab is scrollable and resizable.
- Fixed context errors in teh scene inspector
- Added button to remove failed jobs.
- Preventing update error for deleted display node.
- Adding support for icons in menus
Image
- Preventing OIIO error overflow crash
Version 0.4.0.0
Core
- Plugs and ValuePlugs now accept children (#1043).
- Added child matching to connected Plugs (#1043).
- Added LocalDispatcher.Job and LocalDispatcher.JobPool to track running batches (#1064).
- Failing batches not stop a LocalDispatch job.
UI
- Improved Object section of SceneInspector (#897).
- Added a window for tracking currently running LocalDispatcher jobs (#872).
- Fixed reparenting bug with DispatcherWindows (#1064).
Scene
- Fixed poor performance of Prune/Isolate in presence of SetFilter.
- Added sets support to Parent node (#1065).
- Outputting all cameras, not just the primary camera, to the renderer.
- Added support for per-camera resolution overrides, specified with a "resolutionOverride" V2iData in the camera parameters.
API
- Plugs and ValuePlugs now accept children. CompoundPlug will be deprecated.
- Added BranchCreator::hashBranchGlobals() and computeBranchGlobals(), and implemented them for Parent.
- Added outputCameras() and overload for outputCamera() to RendererAlgo.h.
- Added LocalDispatcher.Job and LocalDispatcher.JobPool to track running batches.
Incompatible changes
- Added additional virtual methods to BranchCreator
- ValuePlug::settable() is no longer virtual
- Removed methods and member variable from CompoundPlug
- InteractiveRender "updateCamera" plug renamed to "updateCameras".
Version 0.3.0.0
Core
- Added SubGraph base class, which Reference and Box now derive from, allowing them both to be enabled/disabled.
- Redesigned Dispatcher registration (#922) (see API section for details).
UI
- Nodes created via the NodeMenu apply default values to their plugs, using the "userDefault" key in the Metadata (#1038).
- Exposed the DispatcherWindow to the public API.
Cortex
- Moved Cortex-specific functionality into new GafferCortex library and module.
- The Gaffer core itself remains heavily dependent on Cortex, and always will. Here we're splitting out "end user" functionality such as OpHolders and ProceduralHolders, so that GafferCortex can be thought of as the user-visible presence of Cortex within Gaffer.
- This remains backwards compatible for now via startup files, which allows a grace period for dependent code to update to the new module layout.
RenderMan
- Added basic support for RenderMan volume shaders.
API
- Added Gaffer.NodeAlgo python scope with applyUserDefaults( node ) (#1038).
- Redesigned Dispatcher registration (#922).
- Dispatchers are registered with Creator functions rather than instances.
- Added get/setDefaultDispatcherType(), which can be used to create a new instance of the default type.
- SetupPlugsFn is now a static function that can be registered along with a Creator, rather than a virtual method of Dispatcher instances.
- Added gil release to GafferScene.matchingPaths python binding.
- Fixed StringPlug string substitution bug.
- Catching error_already_set in Dispatcher bindings.
Incompatible changes
- Reference and Box now derive from SubGraph rather than Node or DependencyNode.
- Redesigned Dispatcher registration (#922) (see API section for details).
Version 0.2.1.0
Core
- Expression node optimizations
Scene
- Made ShaderAssignment use the shader type as an attribute name.
- Added Group::nextInPlug() method
- InteractiveRender now updates all attributes, not just shaders
UI
- Dispatcher FrameRange UI displays the value that will actually be dispatched.
- Removed unwanted horizontal padding from frameless Buttons.
Version 0.2.0.0
This release brings significant optimisations, further additions to the SceneInspector, and the usual collection of miscellaneous enhancements and bug fixes.
Core
- Optimised Context::substitute(). This gives a 73% reduction in runtime for a substitutions benchmark.
- Added '' as an escape character in Context::substitute() (#997).
- Boxes may now be enabled/disabled and define pass-through behaviours (#1015).
- Significant optimisations to the computation engine.
- Added TaskList node for grouping the dispatch of several input requirements.
Image
- Fixed Display node for bucket sizes larger than the native tile size.
- Fixed problems when running embedded in Maya.
Scene
- Added code to clear caches after full procedural expansion in batch renders.
- Added scene pass-through to the InteractiveRender node. This allows it to be seen in the Viewer, SceneHierarchy, SceneInspector etc.
- Significant optimisations. A benchmark scene can now be generated in 3% of its previous runtime.
RenderMan
- Added "command" plug to RenderManRender. This allows the user to customise the command used to render the RIB (#1017).
UI
- SceneInspector improvements
- MenuButton improvements
- Fixed OpDialogue bug which caused it to return to the parameters pane when it should have been displaying an error.
- Dispatcher improvements
- Added PlaybackRange to the frames mode menu (#1007).
- Renamed ScriptRange to FullRange.
API
- Added custom Diff support to SceneInspector.
- Fixed crashes when passing None to PathMatcher python methods.
- Added accessors for the buttons on VectorDataWidget (#1003).
- Fixed broken SceneInspector.Row.getAlternate() method.
- Added SceneProcedural::allRenderedSignal().
- Added Context::remove() method.
Incompatible changes
- SceneInspector API changes.
- Box rederived from DependencyNode.
- Dispatcher ScriptRange renamed to FullRange.
Build
- Improved Travis continuous integration setup
- Added running of unit tests
- Added GafferRenderMan support
- Fixed installation to paths starting with "./"
- Fixed RenderManShader compilation in Clang 3.4
- GafferOSL compatibility for OSL version 1.5