Skip to content

Gaffer 1.4.0.0b1

Pre-release
Pre-release
Compare
Choose a tag to compare
@johnhaddon johnhaddon released this 23 Feb 15:10
· 1465 commits to main since this release

Note : This release introduces linux-gcc11 builds which are only compatible with Linux distributions using glibc 2.28 or higher.
These specific linux-gcc11 builds are intended for testing purposes while we upgrade our toolchain and dependencies to better align
with VFX Platform 2023, and should be considered "beta" in advance of a stable release in Gaffer 1.5.

Known bugs : Gaffer may crash when stopping an InteractiveCyclesRender with the CPU device and SVM shading mode. A fix is in progress.

Features

  • Cycles :
    • Updated to version 4.0.2.
    • Added support for CUDA and Optix devices (GCC 11 builds only).
  • Dispatcher : Dispatchers are now TaskNodes, allowing them to be nested in a task graph. Possibilities include :
    • Using a LocalDispatcher and a Wedge to launch multiple TractorDispatcher jobs.
    • Using a nested LocalDispatcher to perform a group of tasks on a single blade within a TractorDispatcher job.
  • DeepSlice : Added a new node for clipping out part of an image based on depth.
  • ImageInspector : Added a new panel for inspecting image format, metadata and channel statistics.

Improvements

  • Arnold : Gaffer's native OpenColorIO config is now automatically translated to Arnold. Use an ArnoldColorManager node to override this behaviour.
  • Toolbars : Changed hotkey behavior to toogle any tool on and off. Exclusive tools such as the Translate and Crop Window tools activate the first tool (currently Selection Tool) when they are toggled off.
  • CropWindowTool : Added Alt + C for toggling both the crop window tool and the relevant crop window enabled plug.
  • TaskList, FrameMask : Reimplemented in C++ for improved performance.
  • LocalDispatcher :
    • Added a new dockable LocalJobs editor, to replace the floating window previously accessible via the "Execute/Local Jobs" menu item.
    • Task output is now shown in the UI.
    • Jobs are no longer removed from the UI as soon as they complete.
    • Incomplete jobs are now killed automatically when the application is closed, after prompting to confirm that shutdown should go ahead.
  • Cache : Increased default computation cache size to 8Gb. Call Gaffer.ValuePlug.setCacheMemoryLimit() from a startup file to override this.
  • Dispatcher : Reduced internal overhead of dispatch() call, with one benchmark showing around a 3x speedup.
  • ScriptWindow : Added "Save" option to dialogue shown when closing a window containing unsaved changes.
  • Resize :
    • Added support for deep images.
    • Added "Nearest" filter.
  • Shuffle :
    • Reimplemented to match ShuffleAttributes and ShufflePrimitiveVariables.
      • Any number of shuffles can be added using the UI.
      • Wildcards can be used to match multiple source channels, and expressions can be used to map them to destination channels.
      • Source channels can optionally be deleted after shuffling.
      • Overwriting of destination channels can optionally be avoided.
    • Added missingSourceMode plug to determine behaviour when a source channel doesn't exist.
  • NodeEditor : Improved image channel selectors :
    • Added "Custom" option, to allow strings to be entered manually.
    • Added right-click context menu.
  • Switch : Added connectedInputs output plug.
  • Backdrop : Improved drawing order for nested backdrops :
    • Larger backdrops are automatically drawn behind smaller ones, so that nested backdrops will always appear on top.
    • Added a depth plug to assign a manual drawing depth for the rare cases where the automatic depth is unwanted.
  • ImageStats : Added areaSource plug, allowing area to be driven by the input display window or data window.
  • 3Delight :
    • Added camera overscan support.
    • NSI scene description export format is now based on file extension - .nsi for binary and .nsia for ASCII.
    • Added support for reading dl: and user: attributes from shaders.
    • Added importanceSampleFilter plug to DelightOptions, providing denoiser-compatible output.
    • Matched DelightOptions default values for oversampling and shadingSamples to 3Delight's own default values.
    • Added support for external procedurals.
  • GraphEditor : Improved logic used to connect a newly created node to the selected nodes.
  • ScenePlug, ImagePlug : Child plugs are now serialisable. Among other things, this enables them to be driven by expressions (#3986).
  • Premultiply : Added useDeepVisibility plug, which weights samples according to their visibility based on the opacity of samples in front.
  • CyclesOptions : Improved device selection UI.
  • ImageReader : Improved multithreading of EXR reads. This can result in a performance improvement of around 4X for large images.
  • Added OIIO config that disables OIIO threading by default. This simplifies our threading model, and has no impact on performance for our main use cases. If read performance of Gaffer compositing using non-EXR formats, such as Tiff, is important to you, you may want to add your own config to turn OIIO threading back on.

Fixes

  • BackgroundTask : Fixed potential deadlock caused by destroying a BackgroundTask from Python while it was still running.
  • Dispatcher : The job directory is no longer created when dispatch is cancelled by a slot connected to preDispatchSignal().
  • LocalDispatcher :
    • Fixed delays and zombie processes caused by shutting down Gaffer while background jobs were running. Background jobs are now killed before Gaffer exits instead.
    • Stopped failed jobs jumping to the end of the Local Jobs UI.
    • Fixed message log update.
    • Fixed Job.statistics() errors on Windows, ensuring that a pid is always returned when available.
  • ImageStats :
    • Fixed output of infinite values, which were previously being clamped.
    • Results for min/max now correctly reflect zero values outside the data window.
  • NodeMenu, NodeEditor : userDefault metadata is now evaluated in the script context, so it can depend on script variables.
  • 3Delight : Fixed loading of surface shaders such as dlStandard so that they can be connected to the inputs of shaders such as dlLayeredMaterial.
  • DeepState : Fixed handling of NaN values and samples where ZBack is less than Z.
  • Premultiply : Fixed handling of non-existent alpha channel.
  • PlugAlgo : Fixed promotion of CompoundDataPlugs with non-dynamic children, such as the Camera.renderSettingOverrides plug.
  • ColorToVector : Fixed parameter types.

API

  • PathColumn :
    • Added CellData::sortValue member, to provide additional control over sorting in the PathListingWidget.
    • Added missing Python binding for headerData() method.
  • StandardPathColumn :
    • Added constructor which allows the full header CellData to be specified.
    • Added missing Python binding for property() method.
  • IconPathColumn :
    • Added constructor which allows the full header CellData to be specified.
    • Added prefix() and property() accessors.
  • Window : Added preCloseSignal(), which allows connected slots to prevent a window from being closed.
  • LocalDispatcher :
    • Added Job.status() and Job.statusChangedSignal() methods.
    • Added Job.messages() and Job.messagesChangedSignal() methods.
    • Added Job.frameRange(), Job.environmentCommand() and Job.startTime() methods.
    • Added Job.cpuUsage() and Job.memoryUsage() methods.
    • Added JobPool.addJob() and JobPool.removeJob() methods.
  • GafferTractor : Added tractorAPI() method used for accessing the tractor.api.author module.
  • GafferTractorTest : Added tractorAPI() method which returns a mock API if Tractor is not available. This allows the GafferTractor module to be tested without Tractor being installed.
  • ParallelAlgo : Added canCallOnUIThread() function.
  • Label : Added textSelectable constructor argument.
  • ShufflesPlug :
    • Added ignoreMissingSource argument to shuffle().
    • Added shuffleWithExtraSources() method.
  • ShufflePlugValueWidget : Widgets for the source and destination plugs can now be customised using standard plugValueWidget:type metadata.
  • ImageTestCase : in assertImageEqual function, maxDifference may now be a tuple, to specify an asymmetric range.
  • Editor : Added Settings class, which should be used to store settings for subclasses. See LightEditor and ImageInspector for examples.
  • DeepPixelAccessor : Added utility class for accessing deep samples while abstracting away the underlying tile storage.
  • Color3fPlug : Added setValue( V3f() ) overload.

Breaking Changes

  • Arnold : Removed support for Arnold 7.1.
  • Cycles : Updated to version 4.0.2.
  • Render : Changed render:includedPurposes default to "default", "render".
  • Backdrop : Changed default drawing order. Use the new depth plug to override the order if necessary.
  • ValuePlug : Removed deprecated getObjectValue() overload.
  • Preferences : Removed cache plug.
  • TaskNode :
    • The Task constructor no longer takes a copy of the context, so the context must not be modified after being passed.
    • Removed Task( taskNode, context ) constructor. Use Task( taskNode["task"], context ) instead.
  • Dispatcher :
    • Removed createMatching() method.
    • Removed non-const TaskBatch accessors frames() and preTasks().
    • Made TaskBatch constructors private.
    • The job directory is no longer available in slots connected to preDispatchSignal().
    • Removed nodes arguments from dispatch signals. Use the dispatcher["tasks"] plug instead.
    • Removed script and context arguments from frameRange() method. The current frame and full frame range are now queried from the current context.
  • DispatcherUI :
    • Removed appendMenuDefinitions(), appendNodeContextMenuDefinitions(), executeSelected() and repeatPrevious() functions.
    • Removed DispatcherWindow class.
  • LocalDispatcher :
    • Removed JobPool.jobFailedSignal().
    • Removed JobPool.failedJobs() method. Failed jobs now remain in place in the main jobs() container.
    • Removed Job.failed() and Job.killed() methods. Use Job.status() instead.
    • Removed Job.execute() method. This should not have been public.
    • Removed Job.messageHandler() method. Use Job.messages() instead.
    • Removed Job.description() method.
    • Removed Job.statistics() method. Use Job.memoryUsage() and Job.cpuUsage() instead.
    • JobPool no longer derives from RunTimeTyped.
  • LocalDispatcherUI : Removed appendMenuDefinitions() function.
  • Process : Removed non-const variant of the handleException() method.
  • StringPlug : Removed deprecated precomputedHash argument from getValue() method.
  • OpenColorIOContext : Removed configEnabledPlug(), configValuePlug(), workingSpaceEnabledPlug() and workingSpaceValuePlug() methods. Use the OptionalValuePlug child accessors instead.
  • Windows launch script : Removed the hardcoded /debugexe switch used when GAFFER_DEBUG is enabled, making it possible to use debuggers other than Visual Studio. Debug switches can be added to the GAFFER_DEBUGGER environment variable instead.
  • Enums : Replaced IECore.Enum types with standard Python types from the enum module.
  • Shuffle :
    • Removed ChannelPlug type. Use Gaffer.ShufflePlug instead.
    • Renamed channels plug to shuffles plug, matching nodes such as ShuffleAttributes and ShufflePrimitiveVariables.
  • ShuffleUI : Removed nodeMenuCreateCommand().
  • ImageStatsUI : Removed postCreate().
  • 3Delight : Changed NSI scene description export with .nsi file extension from ASCII to binary (.nsia is used for ASCII now).
  • OSLShader : Output parameters are now loaded onto the out plug for all types (surface, displacement etc), not just shader.
  • DelightOptions : Changed default values for oversampling and shadingSamples plugs.
  • SceneProcessor : Subclasses no longer serialise internal connections to the out plug.
  • ImageProcessor : Internal connections to the out plug are no longer serialised.
  • USD : Removed Embree Hydra delegate.

Build

  • Cortex : Updated to version 10.5.6.1.
  • Cycles : Updated to version 4.0.2.
  • Embree : Updated to version 4.3.0.
  • Imath : Updated to version 3.1.9.
  • MaterialX : Updated to version 1.38.8.
  • LibWebP : Added version 1.3.2.
  • OpenEXR : Updated to version 3.1.12.
  • OpenImageIO : Updated to version 2.5.8.0.
  • OpenPGL : Updated to version 0.5.0.
  • OpenShadingLanguage : Updated to version 1.12.14.0.
  • OpenSubdiv : Updated to version 3.5.1.
  • OpenSSL : Removed.
  • OpenVDB : Updated to version 10.1.0.
  • PsUtil : Added version 5.9.6.
  • PySide : Updated to version 5.15.12.
  • Python : Updated to version 3.10.13.
  • Qt :
    • Updated to version 5.15.12.
    • Removed QtPurchasing library.
    • Removed QtNetworkAuth library.
  • USD : Updated to version 23.11.