My name is Travis Saul and I'm a technical director and CG artist. In the past I've worked to build CG pipelines using ACES in production, built software tools to aid artists in using ACES day to day, and have worked to help artist understand the fundamentals of working in ACES. This modest site has come as a result of working with artist over the years and seeing an increasing interest by many to work with ACES. It is designed as an introduction of the ACES colorspace for digital artists to help those who are interested in and would like to start working within an ACES colorspace, to understand what ACES is, and how to get started implementing and using ACES it in their CG workflows.
I aim to provide easy-to-use conversion tools for translating their digital images into and out of ACES colorspaces.
We've made free tools allowing you to convert your images into and out of ACEScg HERE.
Additionally, we've made free tools to allow you to convert rgb values into and out of ACEScg HERE.
Hundreds of productions, from films to television series to commercials, and VR content has been produced using ACES, including The Lego Movie, The Lego Batman Movie, Guardians of the Galaxy Vol. 2, King Arthur: Legend of the Sword, The Grand Tour, Café Society, Bad Santa 2, The Legend of Tarzan (film), Chef's Table, The Wedding Ringer, Baahubali: The Beginning, and The Wave - Wikipedia (2019)
For those not interested in the tidal wave of hollywood-image-format peer pressure, I offer this explanation for why converting to ACES is worth the time: ACES renders and displays images in a manner that is most true to how people actually see the world - and, this makes for a BIG difference in quality. First: a quick review of the mechanics of sight - Humans see the world via the waves (or wavelengths) of light that enter the eyes and collide with color and luminance receptors. Each receptor transmits collisions as signals - which together, our brains combine and translate into images. ACES represents and range of hues and brightness values that closely matches that which the receptors in our eyes are capable of perceiving. The ACES color space therefore comes closest to exemplifying the actual “gamut of human vision” than other digital colorspace - especially sRGB.
For CG or digital artists, the primary reason they would want to use ACES is their final renders/output look and feel richer, and more photo-realistic. The
realism is due to the extended dynamic range that ACES provides. Your final images/renders look and feel much closer to what one would sees with their own eyes, and are visibly superior to typical renders. There are three important benefits that come from this:
Below are two images clearly demonstrating why one would want to render using ACES. The first is an image rendered in sRGB and the second has been rendered in ACEScg. Two important differences to talk about between these images are the highlights and the difference in brightness. For the highlights notice in the sRGB images how the highlights seem to be clipping. They completely click to white with a complete loss of any detail. Additionally you'll notice that the bright colors in the sRGB images start to shift very unrealistically towards yellow. In the ACEScg image these highlights retain a lot of their detail and the colors start to desaturate as they brighten. This desaturation is behaviour we would observe in a photograph and see with our own eyes. There is also a noticeable difference in brightness. A pixel that has a brightness halfway between 0 and 1 in the sRGB image will have a brightness value of around 3%. This is due to the much higher dynamic range of ACEScg. More brightness values are being crammed into the image. You can think of the sRGB image as being a sample of a small sliver of values out of the larger ACEScg value range. You will get a much more realistic render using ACES but you will also have to light a little differently; you can use much more realistic light values.
ACES (Academy Color Encoding System) is not simply a single colorspace like Adobe RGB, Rec. 709, or sRGB. ACES includes the following components:
AN ASIDE: Typically, the collection of transforms you’ll see in various software packages are in fact, implemented using OpenColorIO (OCIO). You will see OCIO comes up a LOT when working with ACES. OpenColorIO is an opensource color management framework made by Sony Imageworks. OCIO provides the tools, specifications, and color transforms needed for working in a particular colorspace.
To use ACES, all digital images must be saved in the linear half-float 16bit EXR format. If the images aren’t in that format, they must first be re-exported or converted into it. Many CG and post production CCDs provide
linear half-float 16bit EXR as an output option. However, you can easily use this site to convert your images.
ACES compliant images should always be linear half-float 16bit EXRs. Though it is getting easier to work with floating point EXRs some applications make this difficult (I’m staring hard at you Adobe). Hopefully, this site can make this a little easier.
In typical CG color workflows, such as with linear sRGB images/textures, pixel values are normally in the range of 0 to 1. However with ACES, you will have to deal with a much higher dynamic range. Because of this difference, it’s important for an artist to be very attentive to and be mindful of the options offered when converting images into one of the various ACES color-spaces.
The application (or purpose) of one's images generally dictates which value ranges should be desired in the conversion process. Different use cases require different color-space and conversion choices. For example, an image that is to be applied as a diffuse color on a material (in a 3D application) should be converted differently than an image applied as a backplate.
Right now there are only a handful of different ACES colorspaces. Each is different and has specific scenarios governing when you would want to use them.
ACES2065-1 can also seen by the name AP0. It has the widest gamut of all the ACES colorspaces fully encompassing the entire visible spectrum. You will almost never work in this colorspace it is meant primarily to be a transfer and archival format. Typically, this is the colorspace you would use to transfer images/animations between production studios.
ACEScg is the colorspace a CG artist will be using. It is "scene-referred" or linear. It doesn't have as wide a color gamut as ASES2065-1 but it is far larger than most other colorspaces one might use and has an enormous dynamic range.
ACEScc and ACEScct are primarily used for color grading. This is not a linear colorspace and maps black at 0 and white at 1. ACEScct is similar to ACEScc except it has a "toe" or a gamma curve in the dark values of the image. This allows grading/editing software to behave and feel like it did while working in other colorspaces making some colorists very happy.
ACESproxy is primarily used for camera playback and video displays. Like ACEScc and ACEScct, ACESproxy has a non-linear transform function and maps black at 0 and white at 1.
Below is a closer look at a few common case scenarios for a CG artist, each of which would require a different conversion solution.
Typically the images a CG artist uses for texturing an object in a 3D application wold be 8bit sRGB images with the usual sRGB gamma curve. Usually the artist would simply remove the gamma curve and make the image linear and slap it on their material. Now, while working in and rendering in ACEScg, there are a few more things to consider:
ACEScg is a scene-referred (linear) working colorspace meaning any image will need to be made linear.
ACEScg has a different white point from sRGB. ACEScg has a D60 white point and sRGB has a D65 white point.
Last there is dynamic range. This is where we have seen a lot of CG artist get hung up. sRGB images represent white with a value of 1. The materials we use to describe the surfaces of objects in a 3D application expect values to be in this range as well. Now there's a problem. White in ACEScg has a value of ~16. What do we do?
There is a transform in OCIO called "Utility - sRGB - Texture" which will linearize, convert white point, and convert the primaries of the images to ACEScg but keep mapping of values to stay between 0 and 1. Thus converted, these textures on our materials will render correctly and look beautiful.
When it comes to textures like displacement and normal maps, the actual numeric values of the pixels mean something other than brightness or color. Images slated for use as displacement and normal maps do not need to have their pixel values converted into ACES. For these images we DO NOT want to do any conversion of the colors at all. However, part of ACES compliance is image format and bit depth, so, you will need to convert your images to half-float 16bit EXRs. This is what the "Utility - Raw" color transform is used for. When using this transform it will leave the numeric values of the pixels alone.
There are times when you want to bring an images into the ACEScg colorspace and have it "look" exactly the same as if you opened it in Photoshop. For this you would use the "Output - sRGB" transform. Wait... WTF?! Why the hell would you use an Output transform for image input. Well, this is the other weird thing about some of the OCIO color transforms; some are capable of doing inverse transforms in addition to their regular transforms. All of the "Output" transforms can do this. You use "Output - sRGB" to get an image out of ACEScg and into sRGB and they look identical. Which means because it can do an inverse transform it can bring an sRGB image into ACEScg and they look identical.
IMPORTANT !!! You will never view a raw ACES image. You will always view the images through the RRT/ODT (see below for explanation) so it will display correctly on your monitor/device. For example, if your monitor was calibrated for sRGB and you were using Nuke you'd select "(ACES) sRGB" for your viewer. That would be the RRT and sRGB ODT tranforming the ACES image for viewing on your sRGB calibrated monitor. There are no ACEScg monitors capable of viewing ACEScg images so we need to convert the images to an apropriate colorspace for our monitors.
The Input Device Transform is the transform used to convert the pixel colors of images/videos from specific devices into an ACES colorspace.
The Reference Rendering Transform prepares scene referred linear data into high dynamic range display referred data. This data is then meant to be handed over to an ODT to convert the data to be viewed in a specific display type.
The Output Display Transform is responsible for converting the data created by the RRT to data that can be viewed on specific devices or color-spaces: sRGB, P3, Rec. 709.
This is a very common diagram depicting the extent of colors humans can perceive. It is important to note that the diagram does not depict value/intensity only hue and saturation. To explain gamut, primaries, and white points I will be using a CIExy diagram to visualize color-spaces so we can easily see the size of a colorspace and how much of the visual light spectrum can be represented by these colorspaces.
A colorspace's gamut is the set of all the colors that can be represented within that colorspace. In the diagram below the gamut is the set of all the colors within the colorspace triangle. Many popular gamuts have been graphed to help illustrate the wide range to pick from. Notice how few colors can actually be represented by sRGB.
For RGB images primaries are your reddest reds, greenest greens, and bluest blues of a color gamut. In the diagrams below you can see these are represented by the corners of the gamut triangles. Also note the position of the green primary of the ACEScg colorspace. It falls outside of the visible spectrum of hues (called an imaginary color). It was placed there so as many hues between rend and green could fall within the ACEScg gamut. One consequence of the primary being where it is is you will never use a fully green value by itself.
The white point is the point within a colorspace we consider to be white. ACEScg and sRGB have different white points. Below the Kelvin temperature scale (and P3) is graphed over all human visible hues (CIE 1931 Chromaticity Diagram). Often you will see a white point of a colorspace refered to by its CIE Standard Luminant designation. These usually start with the letter "D" and two numbers. For example ACEScg and sRGB have D60 and D65 white points. These closely translate to a value on the Kelvin scale: D65 is 6500 Kelvin and D60 is 6000 Kelvin.
When dealing with gamma you are going to come across the terms
gamma curves quite often. ACES is linear but marjority of the time the images we take with our camera, make in photoshop, and download off the internet are not. So, we need to understand what gamma is and how to make a non-linear image linear. Back when computers were slow, drive space was expensive, and memory was small we needed to store our images in as efficient a manner as possible. First of all we could only store our images using 8 bits per color channel which meant each channel only had 256 individual values it could store. It turns out our eyes are more sensitive to small increases of value in darker colors than in lighter colors. We could store our images using a gamma curve to dedicate more of the 256 values in each channell to the darker colors rather than the lighter ones. This meant as a pixel value increased that value would increase by greater and greater amounts. So, to put it another way, going from 0 to 1 would result in a smaller increase in value than an increase from 254 to 255. In a linear image the value increases are uniform. 3D applications prefer a linear image as it makes the math for calculating color and light a lot easier and it makes using high dynamic range images possible. Understanding if your non-ACES images is linear or has a gamma curve is really important to converting it properly.
When doing research on ACES on your own you will often come across the terms
display-referred and it is important to understand what they mean and how they relate to your images.
Scene referred images are linear and are meant to represent real-world light values or light as it actually is. However, they look terrible when displayed raw on a monitor because they don't take into account the characteristics of the display (dynamic range, gamma, etc.). ACES and ACEScg are both Scene-Referred. Scene-referred images have a linear gamma curve.
Display referred images are encoded in a way to make them look good when displayed or has the data encoded in a way affords efficient storage. sRGB, P3, Rec. 709, and Adobe RGB (1998) are all Display-Referred images. Display-Referred images are encoded to be looked at on a specific device (sRGB monitor, Rec. 709 TV, P3 movie screen) or come from a specific camera colorspace (RED DRAGONcolor, ARRI LogC, Sony S-Log, etc.). Display-referred images have a non-linear gamma curve.
ACES - Academy Color Encoding System
AMPAS - Academy of Motion Picture Arts and Science
OCIO - Open Color IO
OIIO - Open Image IO
LUT - Look Up Table
ICC - International Color Consortium
ICM - Image Color Management
IDT - Input Device Transform
ODT - Output Device Transform
LMT - Look Modification Transform
RRT - Reference Rendering Transform
UI - Unsigned Integer
OCES - Output Color Encoding Specification