Q100327: How do Nuke's internal "colorspaces" work?



This article explains how Nuke's "colorspaces" work, and why these are different from standardised colorspaces such as The Academy Color Encoding System (ACES).



Nuke's "Colorspaces"

When you use Nuke's internal color management system (Nuke's "color model"), you can create and select different LUTs to use for various file types (8-bit, log files, etc.), as shown below: 


Then when reading in an image, Nuke will set the "colorspace" for the Read node to be the one defined for that image type in the Project Settings.

In the example below, reading in a 8-bit .jpg image will have the "colorspace" set to default (sRGB) as it is controlled by the 8-bit files space in the color management settings shown above.

 However, Nuke's "colorspace" isn't a standard colourspace.

As discussed in the article Q100328: What is a Colourspace?, a colourspace is a set of parameters which define the colour capabilities of a particular device or stored in a digital file, generally outlined by a set of three colour primaries, a white point and transfer function(s).

Nuke's internal color management does not define primaries, white point and transfer function(s), instead they are driven by a transfer function from one "colourspace" to another "colourspace". This works because of the Grassman's Law principle of additive colour mixture, more information about which can be found here:


What this means is that the primaries don't matter for any of the operations Nuke does, provided they are consistent. Switching between "colorspaces" involves a linear operation with a matrix, which through a linear transfer function preserves the linearity required when modelling the accumulation or attenuation of light. 

This also allows users to mix a variety of images from various colourspaces as they would be only having linear based colour transforms applied to them.

Nuke's working space is locked to linear in order for it to be able to obey Grassman's Laws.

As of Nuke 13.1, to reflect that different types of color transforms can be used, the "colorspace" label on these nodes has to input or output (sometimes with transform):


Using Nuke's LUTs

Nuke's internal color management converts between different transforms using LUTs (Look Up Tables).

A LUT defines a transformation which is the difference of the pixel values between the reference colourspace (linear for Nuke) and another colourspace, in the example below from linear to sRGB.

You would apply the above sRGB curve to a linear image in order to get the sRGB result.

If you wanted to go from an sRGB image to linear, you would then apply the inverse operation of the transform:

More information about how LUTs work can be found here: http://www.cambridgeincolour.com/tutorials/gamma-correction.htm

Per the above, a standard basic workflow for using colourspaces in Nuke would be:


A more in-depth description of how to use colourspaces in Nuke can be found in this article: Q100319: How to use colorspaces in Nuke? 



Q100328: What is a Colourspace?
Q100319: How to use colorspaces in Nuke?
Q100330: Generating chromaticity diagrams

    We're sorry to hear that

    Please tell us why