# Color management, linear and OCIO in compositors

> How Nodespell compositors manage color with OCIO: scene-linear working spaces, view transforms, input interpretation, EXR masters and what is not managed.

Source: https://docs.nodespell.com/edit/color-management/ · Last updated: 2026-11-10

Color management in Nodespell is an OCIO pipeline built into compositors. New compositors convert every input into a scene-linear working space, process in floating point, show the result through a display and view transform, and deliver either a display-referred review image or a linear EXR master. If you know a Nuke show-LUT workflow, the model is the same, and it all runs in your browser.

## How does color flow through a compositor?

A colour-managed compositor follows four stages, each with its own settings:

| Stage         | What happens                                                                  | Where you set it                             |
| ------------- | ----------------------------------------------------------------------------- | -------------------------------------------- |
| Input         | Each source is interpreted from its colour space into the working space       | The compositor's **Inputs**                  |
| Working space | Effects and merges run on scene-linear, floating-point values                 | Project setup, or a compositor override      |
| Viewing       | The viewer applies a display, view and optional look for inspection only      | Viewer toolbar and project review defaults   |
| Result        | The compositor writes a review image or video "as viewed", or a linear master | **Result** in the compositor's colour status |

Viewing never changes pixels. Exposure, gamma and saturation you set in the viewer are personal, stored in your browser, and never baked into results.

## What are the defaults?

Every new compositor (Image Compositor and Compositor) is colour-managed and follows the project's colour setup. The project setup starts on **Standard**.

| Setup                  | Configuration                      | Working space                         | Viewer display and view              |
| ---------------------- | ---------------------------------- | ------------------------------------- | ------------------------------------ |
| **Standard** (default) | Built-in ACES 1.3 CG configuration | Linear Rec.709 (sRGB)                 | sRGB - Display, Un-tone-mapped       |
| **ACES**               | Built-in ACES 1.3 CG configuration | ACEScg                                | sRGB - Display, ACES 1.0 - SDR Video |
| **Studio config**      | Your imported OCIO configuration   | A scene-linear space from that config | From that config                     |

Working precision defaults to half float; full float is available. Standard keeps the familiar sRGB look of ordinary images while you work in linear light. ACES gives a filmic tone-mapped view and an ACEScg working space for wide-gamut work.

## Set up colour for a project

1. Open the **Edit** menu and choose **Project Colour Management**.
2. Choose a setup: **Standard**, **ACES** or **Studio config**. Changing the setup asks you to confirm, because every compositor that follows the project updates immediately.
3. Optionally turn on a **Show look**: a client LUT or CDL applied to viewing and review results, never to master EXRs. Set **LUT output** to **Creative** (the view transform runs after it) or **Display-ready** (the LUT already includes the display transform).
4. Check the master settings: **Master EXR space** (the working space by default) and precision.
5. Under **Advanced**, set context variables, such as `SHOT`, if your configuration uses them.

Only the project owner can save project colour settings. **Use these settings for new project compositors** applies the current settings to compositors created later without changing existing ones.

To import a studio configuration, use **Import OCIO configuration** and choose a ZIP containing one `.ocio` file and its LUT files, keeping their relative folders. The maximum size is 64 MB. Paths must stay inside the bundle; configurations that need a machine path or an external file must be made portable first.

## Override colour for one compositor

Right-click a compositor and choose **Colour settings…**, or use the colour status in its viewer. A compositor follows the project until you change its configuration or working space, which pins a custom pipeline for that compositor only. **Use project settings** reconnects it to the project. Input assignments and OCIO graph nodes always stay local to the compositor.

## Interpret inputs correctly

When a source enters the compositor, Nodespell converts it into the working space.

| Source          | Automatic behaviour                                                            |
| --------------- | ------------------------------------------------------------------------------ |
| PNG, JPEG, WebP | Uses the embedded colour profile; standard or untagged images are read as sRGB |
| EXR             | Uses supported colour metadata; otherwise you must assign a space              |
| Video           | Uses supported video colour tags; ambiguous sources need an assignment         |

In the compositor's **Inputs**, you can override any source's space, choose **Raw / data** to bypass colour transforms for depth, normals, motion vectors and other data, and mark that **Source RGB is premultiplied by alpha**. For correctly tagged SDR camera or video media, **Video Rec.709 signal (scene-linear decode)** reverses the Rec.709 video transfer to scene-linear. A source that needs a decision shows how many inputs need a colour space.

Some video cannot enter a colour-managed compositor, such as rotated video, non-square pixels or HLG HDR without a manual choice. The compositor explains the problem and offers fixes, including **Turn off colour management for this compositor**, which you can undo.

## Convert inside the graph with OCIO nodes

Colour-managed compositors add OCIO nodes to the Tab menu. Their choices are saved on the node, so copy, paste, undo and snapshots carry them.

| Node                        | What it does                                                                                                                                                                                                  |
| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **OCIO ColorSpace**         | Converts pixels between spaces in the compositor's configuration. **From** set to Automatic uses the frame's declared space; an explicit From reinterprets the pixels. **To** can return to the working space |
| **OCIO Assign Colourspace** | Changes the declared space without changing pixel values. Use only when an interpretation is wrong                                                                                                            |
| **OCIO File Transform**     | Applies an imported LUT, CDL, CLF or CTF                                                                                                                                                                      |
| **OCIO Look**               | Applies a named look from the configuration                                                                                                                                                                   |
| **OCIO Named Transform**    | Applies a named transform from the configuration                                                                                                                                                              |

Import files for **OCIO File Transform** in the compositor's colour window, under **Transforms**. Files must be CUBE, 3DL, CLF, CTF, CC, CCC or CDL, up to 32 MB each.

> **Caution:** An OCIO ColorSpace node can output a space other than the working space for inspection. Convert back to the working space before any effect, Merge or Compositor Output. A Merge whose inputs are in different spaces fails instead of guessing.

## View transforms and the viewer

The compositor viewer shows the result through the selected **Display** and **View transform**, plus any look. The viewer toolbar adds personal **Exposure**, **Gamma** and **Saturation**, a show-look toggle, and **Bypass** to inspect raw values where the display has a raw view.

The browser draws on an sRGB surface, so the viewer shows display signal values clipped to 0–1. Choosing another display target lets you inspect its signal values; it is not calibrated wide-gamut or HDR monitoring.

## Choose what the compositor delivers

| Compositor       | **Result** option                        | Output                                                                                     |
| ---------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------ |
| Image Compositor | **Review · as viewed (PNG)** (default)   | Display-referred PNG with the review display and view, without personal viewer adjustments |
| Image Compositor | **Master · linear EXR**                  | Scene-linear EXR in the master space, half or full float, never with the show look         |
| Compositor       | **Review · as viewed (video)** (default) | Display-referred video                                                                     |
| Compositor       | **HDR review · 10-bit WebM PQ**          | Rec.2100 PQ video, with the built-in configuration on supported devices only               |

A video Compositor can also write a linear EXR image sequence to a folder with **Export EXR sequence…** in desktop Chrome or Edge. Choose an empty folder.

When a composite feeds an AI generator, use a review result: generators expect ordinary display images, not linear EXR data.

## What is and is not colour-managed

| Area                                             | Managed?                                                                                                                                                                                                                                                         |
| ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Inside a colour-managed compositor               | Yes: inputs, working space, viewer and results                                                                                                                                                                                                                   |
| Older compositors saved before colour management | No, until you choose **Enable linear OCIO workflow**. They show **Working Precision** (8-bit, 16-bit float, 32-bit float), **Output Precision**, **View Transform** (Auto, LTX ACES SDR, sRGB, Rec.709, Raw linear) and **View Exposure** instead                |
| Image effect nodes in the ordinary Graph         | No OCIO. Most decode the sRGB image to linear for the operation and encode back to sRGB                                                                                                                                                                          |
| **Color Space** node                             | Fixed conversions between sRGB, Linear sRGB / Rec.709, Rec.709, Display P3, Linear Display P3, Rec.2020, Linear Rec.2020, ACEScg, HSV, HSL, LAB / CIE L\*a\*b\* and CIE XYZ D65, with optional **Clamp Output**. Inside OCIO compositors, prefer OCIO ColorSpace |
| Design panel image viewers outside compositors   | Show stored image values; exposure, gamma and saturation are display filters only                                                                                                                                                                                |
| Fullscreen viewer for EXR files                  | Its own **Tone mapping** choices for display                                                                                                                                                                                                                     |

When you enable OCIO on an older compositor that uses **Color Space** or **Apply LUT** nodes, Nodespell asks you to migrate them first and can migrate exact matches automatically.

## Frequently asked questions

### Does Nodespell use OCIO?

Yes. Colour-managed compositors run OCIO 2 in the browser, with a built-in ACES 1.3 CG configuration or your own imported configuration.

### What working space do new compositors use?

Linear Rec.709 (sRGB) in half float, with an sRGB display and un-tone-mapped view, unless the project uses the ACES or a studio setup.

### Is the viewer exposure baked into my output?

No. Viewer exposure, gamma and saturation are personal display settings. Review results use the project's display and view without them, and masters stay linear.

### Can I monitor HDR in Nodespell?

No. The viewer shows SDR display values on an sRGB surface. You can deliver an HDR review video or linear EXR masters for review elsewhere.

### Why does my video need a colour choice?

Its colour tags are missing, ambiguous or unsupported, such as HLG. Assign a space in the compositor's Inputs, re-export the video, or turn off colour management for that compositor.

## Related

- [Compositing](https://docs.nodespell.com/edit/compositing/): compositor types and Merge.
- [Color correction](https://docs.nodespell.com/edit/color-correction/): grading nodes.
- [Depth and defocus](https://docs.nodespell.com/edit/depth-and-defocus/): depth data as Raw input.
- [Viewers](https://docs.nodespell.com/edit/viewers/): channels, exposure and pixel readout.
- [Export](https://docs.nodespell.com/edit/export/): getting results out.
