Skip to content

Releases: GafferHQ/gaffer

Version 0.90.0

07 Feb 10:40
Compare
Choose a tag to compare
Version 0.90.0 Pre-release
Pre-release

Scene

  • Fixed off-by-one error in scene cache preview frame ranges.

UI

  • Fixed slight jump when connections are first drawn.
  • Removed PathFilter paths plug representation in the NodeGraph. There aren't really any nodes we would connect to it.
  • Improved OpDialogue warning display. If an Op completes successfully, but emits error or warning messages in the process, these will now always be flagged before the user can continue.

API

  • Refactored ConnectionGadget into an abstract base class with a factory, to allow for the creation of custom subclasses. A new StandardConnectionGadget class contains the functionality of the old ConnectionGadget. Config files may register creation function for connections to control the type of gadget created, and its style etc.
  • Added MessageWidget.messageCount() method. This returns the number of messages currently being displayed.
  • Added OpDialogue.messageWidget() method. This provides access to the message display for the Op being executed.
  • Added MessageWidget.forwardingMessageHandler(), to allow messages received by the widget to be propagated on to other handlers. This can be useful for connecting the OpDialogue to a centralised logging system.
  • Deprecated MessageWidget appendMessage() and appendException() methods. The same result can be achieved by passing messages via the message handler instead.

Version 0.89.0

29 Jan 19:53
Compare
Choose a tag to compare
Version 0.89.0 Pre-release
Pre-release

Core

  • Added Support for NumericPlug->BoolPlug and BoolPlug->NumericPlug connections.

UI

  • Added additional types to the user plug creation menu.
  • Added pre-selection highlighting in the NodeGraph (#94).
  • Added "Create Expression..." menu option for bool plugs.
  • Fixed NodeGraph resizing to crop rather than scale (#10).
  • Fixed read only CompoundPlug labels.
  • Added workarounds for Qt OpenGL problem on OS X (#404 and #396).

Scene

  • Added Parent node. This allows one hierarchy to be parented into another (#91).
  • Fixed bug which could cause incorrect bound computation at the parent node in the Instancer.
  • Seeds and Instancer classes now preserve existing children of the parent location, renaming the new locations to avoid name clashes if necessary.
  • Added tag filtering to the SceneReader node.
  • Enabled input connections to PathFilter "paths" plug. This allows it to be promoted to box level and be driven by expressions etc (#704).

Apps

  • Updated view app to contain tabs with different views (info, header, preview etc).
  • Added scene cache previews to the browser and view apps (#416).

API

  • Removed BranchCreator name plug - derived classes are now responsible for generating the entirety of their branch.
  • Modified BranchCreator hashing slightly to improve performance - derived classes hashBranch*() methods are now responsible for calling the base class implementation.
  • Fixed Box::canPromotePlug( readOnlyPlug ) to return false.
  • Fixed Box::canPromotePlug() to check child plugs too.
  • Fixed bug in read only Plugs with input connections.
  • Added Gadget setHighlighted() and getHighlighted() methods.
  • Added supportedExtensions() methods to ImageReader and SceneReader.
  • Added Viewer.view() and Viewer.viewGadgetWidget() methods.
  • Added NodeToolbar and StandardNodeToolbar classes.

Build

  • Updated public build to use OpenEXR 2.1.
  • Updated public build to use OpenImageIO 1.3.12.
  • Updated public build to use OpenShadingLanguage 1.4.1.
  • Removed pkg-config from the dependency requirements.

Version 0.88.1

16 Jan 21:47
Compare
Choose a tag to compare
Version 0.88.1 Pre-release
Pre-release

Core

  • Added env app which mimics /usr/bin/env
  • Enabled Python threading by default in Gaffer python module

UI

  • Renaming is available for promoted children of CompoundDataPlugs
  • Moved scene node filter plugs to the right hand side of the node

Image

  • Fixed threading issue in Display node

Version 0.88.0

10 Jan 19:06
Compare
Choose a tag to compare
Version 0.88.0 Pre-release
Pre-release

Core

  • Fixed threading issue in caching code.
  • Implemented per-instance metadata for Box nodes. This will provide the basis for the user to make further customisations to Boxes, like setting descriptions for plugs and so on.
  • Fixed bug in Switch node which could cause crashes when promoting the index plug.
  • Added pivot to TransformPlug.

UI

  • NodeGraph node tooltips now display a helpful description for the node. Node authors can define this text using the "description" Metadata entry (which is intended to provide a static description of the node's purpose) and the "summary" Metadata which may optionally be computed dynamically to describe the current state of the node (#157).
  • Fixed initial value jump in viewer gamma/exposure virtual sliders.
  • NodeGraph nodes may now display plugs on all sides, rather than just top/bottom or left/right as before. Node authors may control plug placement by defining a "nodeGadget:nodulePosition" Metadata entry.
  • ShaderAssignment nodes now receive their shader input from the left (#82).
  • Fixed OpDialogue hangs caused by the rapid output of many messages from an Op.
  • Fixed strange browser behaviour when editing a path which is no longer valid (#64).
  • Improved image viewer responsiveness, especially when used as a render viewer.
  • Fixed position of plugs in the NodeGraph when the node gadget was very narrow.
  • Made Box nodule positions match internal nodule positions (#608).
  • Simplified OpDialogue error display - long error messages are now only visible in the Details view, rather than cluttering up the main window, and potentially making it very large on screen.

Scene

  • Added a ParentConstraint node (#26).
  • Added "includeRoot" plug to GafferScene::SubTree. This means that when choosing /path/to/theNewRoot as the root, the subtree will be output under /theNewRoot rather than /. Previously this was only possible by using an Isolate node followed by a Subtree (#565).
  • Added "targetOffset" plug to the Constraint node. This is of most use for offsetting the aim point in the AimConstraint node (#278).
  • Fixed bug in copying a node which has an input from an unselected PathFilter.
  • Fixed bug in ShaderAssignment node which could cause crashes when querying for acceptable inputs.
  • Improved the transform node
    • Added a pivot plug (#156)
    • Added a space plug to specify whether the transform is applied in World or Object space.

Image

  • Fixed ImageReader problem which caused the green and blue channels of non-float images to be offset horizontally.
  • Fixed bug which could cause the OpenColorIO node to output greyscale images.
  • Optimised Display node.
  • Optimised ChannelDataProcessor::channelEnabled().

OSL

  • Updated for compatibility with OSL 1.3, 1.4 and 1.5 (master branch).
  • Removed unsupported closures from OSLRenderer.
  • Added debug() closure support to OSLRenderer to allow the output of multiple values via ShadingEngine::shade(). The closure takes an optional "type" keyword argument to define the type of the resulting output.

API

  • Added GafferUI.SpacerGadget class.
  • Reimplemented GafferUI.Metadata in C++, so it can be used from C++ code as well as from Python.
  • Fixed bug in Widget.mousePosition() with GLWidget overlays.
  • Fixed GafferScene.ScenePath.isValid() to only consider a path as valid if all parents up to the root exist according to ScenePlug.childNames().
  • Added space conversion methods to GafferImage::Format. These are useful for converting between the Cortex and OpenEXR Y-down space to the Gaffer y-up space.
  • Fixed GafferImage::FormatData serialisation.
  • Removed deprecated ImageView( name, inputPlug ) constructor. This was being used by old View subclasses which would pass their own input plug and then use setPreprocessor() to insert some conversion network. Subclasses should now use insertConverter(), following the example in GafferImageUITest.ImageViewTest.testDeriving.
  • Moved Metadata class from libGafferUI module to libGaffer.

Build

  • Fixed compilation with GCC 4.4.

Version 0.87.1

11 Dec 18:31
Compare
Choose a tag to compare
Version 0.87.1 Pre-release
Pre-release

UI

  • Constrained slider positions inside range by default (#99). Shift modifier allows slides to exceed range.
  • Key modifiers are now correctly updated during drags.
  • Fixed PySide incompatibility in Slider.

Image

  • Added ImageSampler node to GafferImage
  • Fixed colour space used for ImageView colour sampling (now in linear space).

Version 0.87.0

09 Dec 12:16
Compare
Choose a tag to compare
Version 0.87.0 Pre-release
Pre-release

UI

  • Added visualisation of clipping colours in the image viewer (#572).

Core

  • Boxes now export all non-hidden plugs for referencing. Prior to this they only exported "in", "out" and user plugs.
  • Fixed unwanted plug promotion when nesting Boxes inside Boxes.

Scene

  • Fixed Subtree update problem.
  • Added enabling/disabling support to SceneTimeWarp and SceneContextVariables.
  • Added a SceneSwitch node. This can be used to choose between different scene hierarchies.
  • Added a ShaderSwitch node. This can be used to switch between different shaders being fed into a ShaderAssignment. It is also compatible with RenderMan coshaders, so can be used to switch between different coshaders in a network.

Image

  • Added a Clamp node
  • Fixed bug in Display node which caused problems when using multiple Displays at once.
  • Added ImageTimeWarp, ImageContextVariables and ImageSwitch nodes - these are equivalent to their Scene module counterparts.

API

  • Added missing IntrusivePtr typedefs to GafferImage
  • Added RecursionPredicate to FilteredRecursiveChildIterator. This allows the definition of iterators which automatically prune the recursion based on some condition.
  • Redefined RecursivePlugIterators so that they do not recurse into nested nodes - instead they just visit all the plugs of the parent node.
  • Improved Node::plugSetSignal() behaviour. The signal is now emitted for all the outputs of the plug being set in addition to the source plug - otherwise plugSetSignal() could not be used effectively for plugs which had been promoted to Box level.
  • Renamed SceneContextProcessorBase to SceneMixinBase.

Build

  • Fixed build for Ubuntu 12.04.
  • Updated public build to use Arnold 4.1.
  • Removed OIIO versioning workaround - previously we had to rename the OIIO library to avoid conflicts with Arnold, but since Arnold 4.1 such conflicts no longer exist.
  • Updated default boost version to 1.51.0.
  • Added dependenciesPackage build target. This can be used to make a package of prebuilt dependencies to seed a build from.
  • Updated default Cortex version to 8.0.0b5.

Version 0.86.0

26 Nov 18:19
Compare
Choose a tag to compare
Version 0.86.0 Pre-release
Pre-release

UI

  • Added exposure and gamma controls to the image viewer (#571).
  • Added colourspace management to the image viewer (#573). By default display colourspaces are taken from the OCIO config, but any image processing node (or Box containing them) can be registered via config files to provide alternative methods of colour management.
  • Added auto expand option to the scene viewer (#163).
  • Added Shift+Down shortcut for full expansion in the scene viewer (#556).
  • Added "look through camera" in the scene viewer (#49).
  • Added global Left/Right keyboard shortcuts for frame increment/decrement (#52).
  • Added background operation to op dialogues in the op and browser apps. The UI now remains responsive during execution and displays IECore messages and results (#591).
  • Objects can now be dragged from the Viewer and SceneHierarchy into path fields such as the AimConstraint target or the StandardOptions camera.
  • Buttons now accept Return and Enter keypresses in addition to the space bar and clicking.
  • Confirmation dialogues now focus the default button so they can be dismissed using the keyboard.
  • Tarted up the About dialogue with a nice new logo courtesy of Tiziana Beretta.
  • Fixed MenuButton bug whereby menus could be shown partially offscreen.
  • Fixed Timeline bugs
    • Wraparound during playback would remove the fractional part of the frame number
    • Entering a value in the frame field which was outside the frame range would make it impossible to subsequently enter a fractional frame number.
    • Changing the frame number via the numeric field didn't update until focus left the field.
  • Fixed clipping problem in BusyWidget drawing, and removed overhead of invisible BusyWidgets.
  • Fixed GadgetWidget overlay event handling problems.
  • Fixed crashes when MultiSelectionMenu was used in GLWidget overlay.
  • Viewer toolbar now omits labels when Metadata value is "".
  • Made the NodeGraph save and restore its framing when entering and leaving Boxes (#626).
  • Fixed PathWidget menu positioning when used as a GLWidget overlay.

Scene

  • Added a UnionFilter node (#594).
  • Optimised SceneReader. It now computes constant hashes where data is not animated, resulting in significant speedups and reduced memory consumption. Approximately 2x speedup and 50% memory usage reduction has been seen in animated production assets (#545).
  • Optimised SceneHierarchy update for improved playback performance (#545). 4x speedups have been seen with animated production assets.
  • Fixed the laggy node dragging seen after expanding the SceneHierarchy contents and moving the current frame a few times (#209).
  • Disabled StandardOptions camera and resolution by default.

Image

  • Optimised OpenColorIO node performance.
  • Optimised grade node performance and memory usage (through improved hash implementation).
  • Set Grade node's gamma plug minimum value to 0.
  • Fixed threading related OpenColorIO crashes on OS X.
  • Fixed ImagePrimitiveSource hashing bug. This would manifest itself as a corrupted image when connecting a disabled node downstream from a Display node (#420).
  • Fixed miscellaneous hashing bugs.

Core

  • Optimised StringPlug::getValue() and StringPlug::hash() for cases where the string doesn't contain substitutions.
  • Fixed bug in Path inequality operator.
  • Renamed python deprecation warning output - Python2.7 disabled this by default.

API

  • Added a new Playback class. This provides a central controller for all clients who wish to initiate playback or react when playback occurs.
  • Added ColorProcessor base class. This makes it easier to implement image processing nodes which mix across channels.
  • DependencyNode::affects() is now called for output plugs too. This can trip up poorly implemented DependencyNode::affects() overrides - see f1e9cb3 for details.
  • Resolved ambiguities in Widget auto-parenting keyword arguments. Parenting arguments should now be passed as "parenting = { ... }" rather than just "...". The old style of argument passing will be deprecated (#655).
  • Added ViewportGadget::set/getCameraEditable() methods.
  • Added previous root node to GraphGadget::rootChangedSignal().
  • Added set/getTextSelectable() method to GafferUI.Label.
  • Added Dialogue set/getModal() methods.
  • Added Path._emitPathChanged() protected method. This can be used by derived classes to emit the pathChangedSignal(), avoiding emitting it if nothing is listening. All subclasses should use this in preference to self.pathChangedSignal()( self ).
  • Added Context::hasSubstitutions() method. This can be used to query if a string contains any substitutions supported by Context::substitute().
  • Added Slider set/getPositionIncrement() methods. These allows the cursor key position nudging behaviour to be controlled.
  • Added const version of GafferUI::View::getPreprocessor.
  • Added EnumPlugValueWidget.selectionMenu() method.
  • Renamed ImageNode::hash_Plug() methods to hash_(), for consistency with the rest of the framework.
  • Refactored ImageNode hashing for improved performance and clarity - see 78b8739 for details.
  • Added many missing IntrusivePtr typedefs.
  • Added support for "divider" Metadata in viewer toolbars.

Version 0.85.1

07 Nov 02:16
Compare
Choose a tag to compare
Version 0.85.1 Pre-release
Pre-release

Scene

  • Compatibility with Cortex 8.0.0b1

Version 0.85.0

01 Nov 23:46
Compare
Choose a tag to compare
Version 0.85.0 Pre-release
Pre-release

API

  • Added Bookmarks API for storing Path bookmarks by app, path type, and category (#55)
    • Configs can define custom bookmarks on startup
    • Parameters can specify a category with ["UI"]["bookmarksCategory"] user data
    • Support in the gui, browser, and op apps
    • Support in File menu, PathChooserDialogue, PathChooserWidget, PathParameter, PathVectorParameter, RenderMan shader parameter, Box, and Reference node UIs
  • Added Style::changedSignal()
  • Added Window set/getIcon and setting GafferLogoMini as the default window icon
  • Added TextWidget set/getPreferredCharacterWidth methods
  • Fixed ParameterisedHolder parameterChanged() crashes
  • Fixed Widget.bound() on OS X
  • Fixed some bugs with null plugs in Box's plug promotion methods

GL

  • Fixed GLSL shaders used by the UI for OpenGL 2.1 (requires Cortex 8.0.0-a23)
  • Fixed OpenGL drawing when embedded in Houdini (requires Cortex 8.0.0-a22)

UI

  • Added ColorSwatchPlugValueWidget (#625)
  • Added new Gaffer logos (though only using them for window icons currently)
  • Increased preferred width of PathWidgets (#515)
  • Improved PathChooserDialogue handling of invalid selections (#628)
  • Fixed Dialogue positioning and focussing on Linux (#220, #642, #62)
  • Fixed SectionedCompoundDataPlugValueWidget child widget bugs (#588)
  • Fixed Timeline start/end field sizing bug (#111)

Scene

  • Added DeleteAttributes node and AttributeProcessor base class (#587)
  • Fixed PrimitiveVariableProcessor::affects()

RenderMan

  • Fixed RenderManShader.acceptsInput() crash

OSL

  • Added closure parameter support to OSLShader

Version 0.84.0

22 Oct 18:10
Compare
Choose a tag to compare
Version 0.84.0 Pre-release
Pre-release

UI

  • Added shift+drag of node to panel to create duplicate editor (#575).
  • Added HSV readout for pixel below mouse in image viewer (#576).
  • Improved the UI for Attributes and Options, to distinguish between the boolean used to enable a setting and the boolean used to define the value (#65).
  • Fixed unwanted scaling of Button images.
  • Added a toolbar to the viewer, initially with only a single button for specifying the 3D display style (#114).
  • Improved MenuButton menu positioning.
  • Fixed bug where searchable menus kept keyboard focus after closing.
  • Fixed focus stealing problems apparent in Viewer and NodeGraph. They still take focus on mouse enter, but will not steal focus from text entry widgets (#555, #439).
  • Added per-column visibility for CompoundVectorParameterValueWidget. Visibility is specified using the standard ["UI"]["visible"] userData entries on the child parameters which provide the columns (#526).
  • Stopped plug controls accepting drags from themselves. This was causing trouble for users who were accidentally dragging and dropping a single line from a PathVectorDataPlugValueWidget onto itself, thus removing all the other lines.
  • Added drag start threshold, to make it harder to accidentally start a drag (#593).
  • Disabled "Remove input" menu item for read only plugs and uis.
  • Disabled Box promotion menus on read only UIs (#604).
  • Disabled ganging menu items for read only UIs.
  • Stopped standard graph layout reconnecting invisible nodes.

Scene

  • Prevented rogue connections being made to Shader "parameters" Plug.
  • Fixed bugs in computing hashes for transform, object and attributes at the scene root.

OSL

  • Added support for struct parameters.
  • Added shaders for doing basic vector arithmetic.
  • Added support for N global variable in OSLRenderer.
  • Fixed OSLShader hash bug. Because OSL shaders are the first shader type we've supported where a single shader can have multiple outputs, we weren't taking into account which particular output was connected when computing the hash.
  • Prevented vector->color connections for OSLShader nodes. OSL itself doesn't allow such connections so we mustn't either. Also added a vectorToColor shader to help work around the restriction.

Documentation

  • Started versioning documentation releases - they follow the app release version.
  • Changed modifier key styling in documentation content to match that used in interface.
  • NodeEditor content expanded.
  • NodeGraph content expanded.
  • New images.
  • New screen grab setups.
  • Simplified example light shader.

API

  • Renamed CheckBox to BoolWidget and added different display modes. CheckBox remains as an alias to BoolWidget for backwards compatibility.
  • Added stream insertion operator for GafferScene::ScenePlug::ScenePath.
  • Fixed RunTimeTyped declaration for SceneView. It was declared as deriving from View rather than View3D.
  • Fixed bug in Widget.widgetAt().
  • Added widget overlays to GLWidget. This allows any Widget subclass to be displayed as an overlay on top of the OpenGL contents.
  • Added setColumnVisible/getColumnVisible methods to VectorDataWidget.
  • Implemented VectorDataPlugValueWidget.setHighlighted().
  • Fixed StandardNodeUI.setReadOnly() to properly affect plug labels.
  • Implemented setPlug on a SectionedCompoundDataPlugValueWidget.
  • Fixed DependencyNode::enabledPlug() python bindings.
  • Added python binding for ValuePlug::setFrom().