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.
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.
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:
-
Either the files can be imported into applications in raw and HDR mode (keeping values greater than
1.0
). In this case one can work as described previously, by finding the right color space to apply, or the right corrections to make, to find, after the import, the right colors as they were displayed by the camera or as they are in the standard reference file (JPEG, mp4, etc.), and then work on post-production from this base, in a non-destructive manner. This is possible in the Adobe suite via Camera Raw by checking the HDR option, then by searching, by trial and error, for the right color working space or by adding some color correction effects. Unfortunately, there is generally no way to automatically retrieve the colors of the reference or as displayed by cameras, since the transformations applied to raw data depend on the color spaces, LUTs and transformations applied by manufacturers, which aren’t publicly available. Camera Raw together with Photoshop or After Effects, or the free and open source Darktable, could be used to re-export EXR files for other applications from raw files. -
If it’s not possible to use raw files directly, photos need to be exported from manufacturers’ software, which generally can only export in standard image formats (JPEG, PNG or TIFF for example). In this case, choose the format with the greatest color depth*, and ideally using floating point values* if possible, but this is generally not available. The color transformations will then be applied and the images exported in a standard color space (sRGB or sometimes others like Rec.2020 in so-called HDR mode), and can be imported into other software, but losing the interest of the raw data, without keeping highlight values greater than
1.0
…