Gaffer is a VFX application that enables look developers, lighters, and compositors to easily build, tweak, iterate, and render scenes. Gaffer supports in-application scripting in Python and OSL, so VFX artists and technical directors can design shaders, automate processes, and build production workflows.
An open-source project, Gaffer also provides an application framework for studios to design and create their own VFX production pipeline tools. Built using the Cortex libraries, Gaffer ships with a multi-threaded, deferred evaluation engine and a flexible user interface framework.
More information about Gaffer and its use in studios can be found at GafferHQ.
Users can learn how to use Gaffer through the documentation.
Developer notes are available on the Gaffer developer wiki.
Participating in the Gaffer community requires abiding by the project's Code of Conduct.
Compiled binary releases are available for download from the releases page.
Gaffer is officially supported and tested on Linux (CentOS 7) and macOS (macOS 10.14).
Gaffer targets the VFX Reference Platform. We are currently on CY2022. Aside from general platform development packages, we specifically require the following tools that may not be installed by default on your system. Without these, you will not be able to build Gaffer.
Note: From time to time, this list may change. For a complete, accurate, and up-to-date method of installing the prerequisites on CentOS, refer to the Docker setup we use for building automatic releases.
Note: Specific package names may differ depending on your Linux distribution and repository.
Package Name | Version |
---|---|
gcc |
6.3.1 |
scons |
|
inkscape |
Note: Building the documentation is optional.
Package Name | Minimum Version |
---|---|
sphinx |
1.8 |
Python Module | Required version |
---|---|
sphinx_rtd_theme |
0.4.3 |
recommonmark |
0.5.0 |
docutils |
0.12 |
git clone https://github.com/GafferHQ/gaffer.git
cd gaffer
Gaffer depends on a number of 3rd-party libraries. We recommend using the pre-built dependencies from the Gaffer dependencies project. These are used in our automated test builds and so are guaranteed to be up-to-date with Gaffer's requirements.
The dependencies distribution forms the basis of a Gaffer build and the root of the expanded archive becomes the BUILD_DIRECTORY
we pass to scons
.
The easiest way to get the right dependencies version is to use the config/installDependencies.sh
script included in the Gaffer source tree. This downloads the correct version for the version of Gaffer you are building and unpacks them to a directory of your choice.
In this example we're going to build gaffer to a gaffer-build
directory next to our checkout.
./config/installDependencies.sh ../gaffer-build
You can then build Gaffer itself:
scons build BUILD_DIR=../gaffer-build
Note: If
scons
has any issues finding dependencies or tools, seeSConstruct
for the various options that can be set to specify their location.
With any luck, you now have a functioning version of Gaffer.
../gaffer-build/bin/gaffer
Gaffer dependencies ships with Cycles, but to build the modules for one of the other supported third-party renderers, you will need to set appropriate scons
options pointing to your installation. The options are:
- Arnold:
ARNOLD_ROOT
- 3Delight:
DELIGHT_ROOT
For example, the following command builds Gaffer with Arnold support:
scons build ARNOLD_ROOT=/path/to/arnold/6 BUILD_DIR=...
If you have any questions about using Gaffer, or encounter problems setting it up, feel free to ask on the Gaffer community group. Our users and contributors are happy to help.
If there is a feature you would like to see in Gaffer, request it on the Gaffer community group. Do not create an Issue for it on GitHub.
Please see the project's contribution guidelines.
© 2011–2020 John Haddon. All rights reserved.
© 2011–2020 Image Engine Design Inc. All rights reserved.
© 2011–2020 Cinesite VFX Ltd. All rights reserved.
Distributed under the BSD license.