General
This document explains how SCRATCH deals with color spaces and in particular the ACES color space. Although ACES for SCRATCH is 'just another color space', it has been the trigger for implementing a series of functional and user-interface changes in order to easily manage media of multiple color spaces within a single project. To understand this document a rudimentary knowledge of color and gamma spaces is required. Note that this article applies to SCRATCH v7.0 as of build 745.
Color Spaces
Inside SCRATCH the colors of an image are represented by RGB values. All shots in SCRATCH - as well as the different displays identified in SCRATCH - are flagged with a color space. Flagging a shot with a certain color space does nothing to the color values. The color space only affects the color values when converting an image from one color space to another.
- SCRATCH handles the following standard color spaces:
- Lin/sRGB (previously called Lin)
- Log/Film (previously called Log)
- Rec709
- XYZ P3
- ACES - discussed in more detail later in this document
- Wide Gamut
- Scene Linear - a color space often used in a compositing / 3D environment with a 1.0 gamma.
Lin/sRGB, Log/Film, Rec709, and Scene Linear all use the same color primaries. The difference is the associated gamma (resp. 2.2, 1.0, 2.4 and 1.0). For some formats the color space is automatically deter-mined from the metadata. If the color space cannot be determined automatically, SCRATCH assumes Lin/sRGB.
The shot's color space is shown and can be adjusted in the Source Mode section of the Input menu of the Matrix. The Source Mapping section below can be used to adjust the levels of the source media, getting it in line with the standard color spaces set in the Source mode. You can use this section, for example, if you have Log/Film footage but want to grade in Lin/sRGB, or add an F65-Rec709 gamma curve to Sony F65 footage to adjust it to REC709.
Next to the series of standard adjustments you can also load a custom LUT or color transform (CTL) in the Source Mapping section to perform the desired transformation.
Conversions
SCRATCH can manage multiple color spaces in a single project, a single timeline, or inside a composite without having to convert color spaces. However, in some cases SCRATCH will do an automatic color-space conversion.
First, and similar to other nodes, an Output or Nest-node has an associated color space. By default if the color spaces of the output node differ from that of an input, SCRATCH will pass that data along unchanged. It is only by enabling the Apply option (next to the color space settings) on an output node that SCRATCH will perform a conversion when processing an output node that has an input with a different color space.
Second, SCRATCH will always do a color space conversion if the color space of the node being viewed differs from the color space that is associated with the monitor it is viewed on. You can set the associated color space for each monitor in the Player - Settings - Monitor menu. For the main monitor you can select how conversion is applied separately for your left and right view.
A color-space conversion consists of a color transformation and a possible gamma adjustment. The default gamma associated with the different color spaces and used in a conversion can be adjusted in the Project Settings, except for Log/Film. For Log/Film the gamma used depends on the target and is automatically determined.
Workflows
The current setup for dealing with color spaces provides flexibility, whether on one end you prefer to work in a single color space by converting all source media at the input transform; or, on the other end to work with multiple color spaces and only convert before rendering to the target format; or anything in between. As such, there is not a single preferred workflow, but there are various considerations to determine the right workflow for your situation - with preference also being a major determinant.
- Keeping the number of conversions down is in general a good practice; each transformation means math is applied to the color values and rounding errors are introduced. However, note that in general these errors are very small and are not noticeable .
- Maintaining multiple color spaces in a single project or timeline will hinder your ability to copy a grade from one shot to the next. But then again, how often do you actually copy a (primary) grade between two unrelated shots coming from different (camera) sources?
- It is not always possible to convert an image to the desired color space. Converting to ACES without a proper IDT (from the camera manufacturer) is just a color-space transformation of the image without the proper tone-mapping.
- Grading controls have a different 'feel' / 'response' to them depending on the color space, most noticeably the difference between 'Lin/sRGB' and 'Log/Film' or 'Scene Linear' footage.
- XYZ is only output format, not a working space: the color primaries are rotated compared to the other standard color spaces, making the SCRATCH grading controls hard to use. (Like grading before applying a hue-shift to an image.)
ACES
This section covers a number of aspects of ACES in relation to SCRATCH. As such, it is not an explanation of what ACES is. There is a large amount of ACES information available on-line.
In broad terms ACES covers two concepts. First, ACES as a color space which differs from most other color spaces in that is has a much broader gamut. In SCRATCH, the ACES color space is treated just like any other color space. Secondly, there is the ACES Color Transformation Language (CTL) for creating for example an IDT, RRT or ODT (described later). CTL is a programming language. It is often viewed as a replacement for LUTs, but as a programming language it has many more options and potential applications. SCRATCH is capable of interpreting CTL script directly. You can load a CTL script everywhere you can load a LUT. Note however that a CTL script often references other scripts. These references should be available in the same folder or first combine the scripts in a single file.
IDT, RRT and ODT
The Input Device Transform (IDT) is used to convert a (camera raw/native) format into the ACES color space. As such, an IDT can only be provided by the camera manufacturer. Manufacturers like ARRI and Sony have built in the IDT with their SDK for decoding their images, and SCRATCH uses that SDK. ARRI also published multiple IDTs for different ISO values. Other camera manufacturers, like RED, have not (yet) published an IDT or incorporated it into their SDK.
Without an IDT SCRATCH does not have a proper way to convert shots to an ACES color space. You can force SCRATCH to convert footage into ACES (for example, by using a nest-node + the Apply option) but this will only perform a color-space conversion, not a tone-mapping. If you do have an IDT for your source footage, you would typically load that in the Source Mapping section in the Matrix - Input menu.
Note that you can also load an ACES image directly into SCRATCH. If an EXR image contains metadata describing the ACES primaries, SCRATCH will automatically flag it as being ACES after loading.
The Reference Rendering Transform (RRT) normalizes the ACES values to a standard output / capture device, bringing it into the OCES color space. From that point, output device manufacturers can create their own specific Output Device Transform (ODT) to convert it further for their specific device.
SCRATCH incorporates the standard RRT as is published by the Academy of Motion Picture Arts and it has standard (built in) ODTs for conversion from ACES to the other standard color spaces. If you have a custom ODT, you can only load that in combination with a (custom) RRT. This means you have to combine the two CTL scripts into one single script and then load that with the specific device in the Player-Settings-Monitor menu.
Note that if you have a custom RRT and ODT loaded the Apply Always option is in effect. All non-ACES shots will also be processed.
If you want to apply a custom RRT and ODT separately on a single node, you can load the RRT in the Source Mapping section and the ODT as a Grading LUT. That way they are applied in sequence to execute the full ACES transform. Preferably you would do this in a nest-node or derived output. Alternatively, you could combine the RRT and ODT into a single script and load it as a grading LUT.
ACES Workflow
When you have an IDT with all your source footage, working in ACES is straight forward. If the footage is ARRI you can just set it to decode to ACES in the FX Ctrl menu. Currently that does not auto-flag the node's color space (in Matrix-Input) to ACES. This you need to set manually, possibly using the Media Browser to change the flag for multiple shots at once (setting the proper color space will be automated in a future version).
In case of Sony footage the ACES implementation in v7.0 is still a bit less straight forward. The current transform to ACES does not include an (S-Log) gamma conversion. To get ACES in a linear gamma space a different IDT is needed. The required steps are:
- set color settings in FX Ctrl to "Raw"
- in Input - set the Source Mode to "ACES"
- and in with the Source Mapping load this F65_RAW_to_ACES.ctl (to load it select the "Color Transformation Language" filter in the file browser)
Note that you can copy this setup easily from one (Sony) shot to the next with the Copy Forward function.
Next, in the Player - Settings - Monitor menu you flag your output device(s) with one of the available color spaces. SCRATCH will then auto convert views of all nodes to that color space. Note that you can only choose between Lin/sRGB, REC709, Wide Gamut and (for your dual-head monitor) XYZ/P3. ACES is not considered a valid device output format. Also note that you need to have the Auto Apply viewing option selected for this behavior. With the Disabled viewing option, no conversions are performed. The Apply Always option has no particular meaning when using the default conversions.
Instead of the default conversions you can also implement a custom conversion for your output device by loading a custom LUT or CTL. When using this option you become responsible for making sure that all footage viewed is of the correct input format for that custom transform. You could use this option to load a custom RRT+ODT script. Setting the Apply Always option will ensure that all nodes are converted using the script. However, this will also mean that any non-ACES node is converted using the script.
The custom LUT / CTL should be used for a uniform timeline. In addition to custom ACES transform, it is often used for other functions, such as implementing a calibration LUT or a film-stock LUT.
For rendering out ACES footage to a different target, just flag the (derived) output node to that target and enable the Apply button.
Other considerations:
- It is not recommended to convert media into ACES without an appropriate IDT, even if the media is in one of the other default color spaces. When converting from ACES an RRT is involved, which is a non-reversible operation. When forcing a conversion to ACES, SCRATCH only applies the color transform and no tone-mapping. Rather, footage should be maintained in its original color space.
- There are tools available to convert a custom RRT and ODT into a LUT. Though a LUT might carry less precision than interpreted CTL script, the differences are generally small enough that this alternative might make more sense for your situation than using a custom RRT directly.