Setting up the Production Pipeline for Color Management

Now that we know the different types of color spaces and where they come into play during the production, let’s see how to prepare a complete production pipeline to effectively manage colors from design to delivery.

The first step is to list all the formats used as input of the pipeline (supplied and imported videos or images, generated images) as well as all the formats to be delivered in the end of the production process (final videos and images).
Depending on these formats, and therefore the associated color spaces, one will be able to choose the different spaces to use during production, keeping in mind that “which can do more can do less”: the easiest thing is to set up an high-performance pipeline that can deliver in all formats.

It will also be necessary to take care that all the steps which modify images use a color space larger than that of delivery: both with a wider gamut* and a greater depth.

It’s also necessary to to limit the number of spaces (and thus limit possible errors and shifts due to conversions). Preparing the pipeline therefore most often consists of choosing the most adequate working color space based on the input and especially output formats, and supported by the all applications.

Here are some examples of possible choices, compatible with cinema quality (and therefore all types of production).

3D animation with Blender, Filmic or AgX

Blender provides two efficient working spaces for 3D renders: Filmic or AgX. Since these spaces are configured using OCIO, it’s quite easy to create a production pipeline around them.

For simplicity, the textures can be produced in a standard Linear RGB space.

As in most pipelines, openEXR can be used as an intermediate image format, both for textures and for intermediate renderings or the final master.

Blender Pipeline Diagram

Step Type Color Space / Format Notes
All Color Pickers sRGB (of the screen) It’s always more practical, and safer, to choose your colors in the non-linear screen space.
All Display Screen (sRGB) Colors are always displayed in the screen space.
Textures Working space Linear RGB
Textures Output Linear RGB
16 bpc openEXR
3D Working space Filmic or AgX
3D Output Filmic or AgX
16 bpc openEXR
Compositing Working space Filmic or AgX
Compositing Working space Linear RGB If the application doesn’t manage OCIO, you’ll then need to apply a Filmic or AgX LUT to the footage.
Compositing Softproofing Output space (e.g. Rec.709) If in doubt, it’s better not to configure soft-proofing and to stay on the screen space.
Compositing Final Output depending on the format: Rec.709, Rec.2020
Compositing Master / Archive Filmic or AgX
16 bpc openEXR
Compositing Output for color correction Filmic or AgX
32 bpc openEXR
The 32 bpc are necessary to avoid losing quality when converting to a probably non-linear space for color correction.

Textures and other 2D images

Whatever the application (Substance Painter, Substance Designer, Krita, Adobe Photoshop, The Foundry Mari, etc.), color textures can be created in Linear RGB; simply be careful to have at least 16 bpc floatting point values for export.

When imported into Blender, the images will be interpreted in Linear RGB space, and data textures (normal maps, metalness, etc.) in Raw, without conversion. It’s also possible to work directly on textures in the Filmic or AgX space if the application supports OCIO* by simply loading Blender’s OCIO configuration, but this is not of much interest…

3D Rendering

3D rendering in Blender will be done in Filmic by default (depending on the version of Blender). You can choose whichever one you prefer to use, along with different levels of contrast; it’s an artistic choice to make when working on lookdev development, you’ll just have to re-apply the same one when compositing.

Compositing

If the compositing is done in Blender, it automatically uses the same working space, i.e. Filmic or AgX (with the contrast choice), and there’s nothing to configure.

In case of compositing in a third-party application, the easiest way is to use OCIO and load Blender’s OCIO configuration to be able to reapply the Filmic or AgX space (and the contrast choice) on the openEXR files rendered by Blender and imported in the compositing application.

Warning

When rendering to openEXR, the images are linear and do not include color space information: the Filmic or AgX space must be reapplied in the compositing software. When rendering in any other format, Blender converts to the default space of the format (sRGB for PNG for example), which allows to have exactly the same image by default in compositing, but losing the floating point values* and thus strongly limiting the work on colors and compositing in general.

Exports

From the compositing software, openEXR files can simply be exported as master or backup, and video files directly in the standard color space that corresponds to them for final exports.

It is very common, and recommended, to only output openEXR files from the compositing (or editing), as a master, and do all subsequent exports from these EXR files with an encoder that can work in the correct color space (Filmic or AgX for this example, with OCIO or a LUT).

Warning

It’s not necessary to convert to a more standard Linear RGB space from Filmic or AgX for the compositing output: the interest of OCIO (whether in Filmic, AgX, or any other space like ACES) is precisely to keep all the files in the same space.

3D animation with ACES.

As almost all 3D software using OCIO* for color management, all will be able to use ACEScg* as a space for rendering.

As in most pipelines, openEXR can be used as an intermediate image format, both for textures and for intermediate renderings or the final master.

It should be noted that the commonly used ACES* configuration, provided by OCIO, includes a very long list of color spaces, notably those from various camera manufacturers. If you don’t need all these formats, on an animation production that doesn’t include shooting, you can quite easily remove all these spaces from the configuration. We provide here for download such an adapted configuration of ACES, more practical in animation production.

ACES Pipeline Chart

Step Type Color Space / Format Notes
All Color Pickers sRGB (froofm the screen) It’s always more practical, and safer, to choose your colors in the non-linear screen space.
All Display Screen (sRGB) Colors are always displayed in the screen space.
Textures Working space Linear RGB
Textures Output Linear RGB
16 bpc openEXR
3D Working space ACEScg
3D Output ACEScg
16 bpc openEXR
Compositing Workspace ACEScg
Compositing Soft-Proofing Output space (e.g. Rec.709) If in doubt, it’s better not to configure soft-proofing and stay on the screen space.
Compositing Final output depending on the format: Rec.709, Rec.2020
Compositing Master / Archive ACEScg
16 bpc openEXR
You may use ACES 2065-1 as stated in the ACES standard, but it’s not really useful and may be too complicated.
Compositing Output for Color Correction ACEScg
32 bpc openEXR
The 32 bpc are necessary to avoid loing quality when converting to a probably non-linear space for color correction.

Textures and other 2D images

Whatever the application (Substance Painter, Substance Designer, Krita, Adobe Photoshop, The Foundry Mari, etc.), color textures can be created in Linear RGB; just be careful to have at least 16 bpc floatting point values for export.

It is also possible, but not for all applications, to work directly in ACEScg; in this case, it’s necessary to be vigilant when importing into the 3D software to specify the right space, linear RGB or ACEScg (or raw/data for data maps such as normal maps, specular, etc.)

3D Rendering

3D rendering is done with ACEScg

Compositing

For compositing, the easiest way is to use OCIO and load the ACES configuration so that you can reapply the ACEScg space to the rendered openEXR files and as a workspace.

For the particular case of Adobe After Effects, there is no need to use OCIO, ACEScg is provided natively.

Exports

From the compositing software, openEXR files can simply be exported as master or backup, and video files directly in the standard color space that corresponds to them for final exports.

It’s very common, and recommended, to only output openEXR files from the compositing (or editing), as a master, and do all subsequent exports from these EXR files with an encoder that can work in the correct color space (Filmic or AgX for this example, with OCIO or a LUT).

Warning

It’s not necessary to convert to a more standard Linear RGB space from Filmic or AgX for the compositing output: the interest of OCIO (whether in Filmic, AgX, or any other space like ACES) is precisely to keep all the files in the same space.

2D Animation

In 2D animation, it’s less essential to use a wide gamut* workspace. Although it’s recommended to follow the same methods as in 3D, some animation software won’t allow this and we can therefore fall back on a Linear RGB pipeline for example.

To the extent that no image is generated directly by computer, and no light is really simulated, unlike in 3D production, one can perfectly work in non-linear and standard spaces such as sRGB in 2D animation. However, we must remain vigilant about the problems with gradients (in particular banding* artifacts) and loss of quality when working on colors and in compositing; in fact, the too small range of values due to both gamma* and integer values* of non-linear files, especially when limited to 8 bits per channel, regularly causes various color problems, which aren’t recoverable if one didn’t properly configure the upstream pipeline, therefore preferring linear spaces and favoring floating point* formats, or at the very least 16 bpc, is better.

Prefer as much as possible to work in linear RGB spaces and use openEXR files throughout the pipeline like in 3D production to ensure optimal quality and the absence of loss of information from a step to another.

Step Type Color Space / Format Notes
All Color Pickers sRGB (of the screen) It’s always more practical, and safer, to choose your colors in the non-linear screen space.
All Display Screen (sRGB) Colors are always displayed in the screen space.
Textures Working space Linear RGB
Textures Output Linear RGB
16 bpc openEXR
Animation Working space Linear RGB
Animation sRGB If the application doesn’t allow you to work in linear RGB.
Animation Output Linear RGB
16 bpc openEXR
Animation Output sRGB
16 bpc PNG
If the application doesn’t allow you to export EXR files.
Compositing Working space Linear RGB Or why not use something more specific like ACEScg in case of very advanced compositing.
Compositing Soft-Proofing Output space (e.g. Rec.709) If in doubt, it’s better not to configure soft-proofing and keep the screen space.
Compositing Final output depending on the format : Rec.709, Rec.2020
Compositing Master / Archive Linear RGB
16 bpc openEXR
You may use ACES 2065-1 as stated in the ACES standard,but it’s not really useful and may be too complicated.
Compositing Output for Color Correction Linear RGB
32 bpc openEXR
The 32 bpc are necessary to avoid losing quality when converting to a probably non-linear space for color correction.

Video, live action and VFX

A pipeline including video could be very similar to a 3D pipeline, especially if it involves 3D rendering.

Simply, just be be careful and import the photos and videos by specifying the correct color space, that of the camera which captured the images, as soon as they’re imported into the software which uses them.

OCIO and ACES contain a large selection of color spaces from various camera models, so it’s often easiest to use a pipeline with ACES for production, as described above…

Stop-Motion, raw images

The specificity of a stop-motion production, and even of certain video productions, is the use of cameras that can record images in so-called raw format (or DNG files); i.e. a format retaining the raw data as recorded by the sensor. This raw format is relatively similar to EXR files, in the sense that they contain luminosity values that can exceed 1.0, and where the colors are not transformed: to be displayed, these images must go through a conversion to the display space, such as those made by color spaces like ACEScg, Filmic or AgX in 3D render engines for example.

These files therefore theoretically make it possible to use a production pipeline similar to what would be done in CGi, while retaining the possibility of adjusting all lights and colors until the end of production, using an adequate working space.

The difficulty comes from the fact that these raw image formats are closed formats and depend on camera models and their manufacturers. The ideal case would be to be able to convert them to openEXR but this is generally not the case.

There are thus two scenarios: