Color Collapse

Tone Mapping Explorer

Exposure slice

+4.00 EV

Outer ring: chroma 0.20

○ Input ring● Output↶ Hue shift

Color family 24 samples

Select a color to highlight its curve
INOUT
Hue shift
Chroma
Of input chroma
Lightness

Reading Color Collapse

Follow a family of colors through one tone mapper. Select a swatch or drag a curve to inspect hue movement and loss of colorfulness.

Lightness 3D
Height is output OKLab lightness. The color paths and the active gamut shell share the same lightness, hue and chroma coordinates. Horizontal stretch widens both color axes together; 1× restores equal axis scaling. This changes display proportions only. Exposure controls path growth and the selected output markers; markers at the same exposure may have different heights. The gamut shell switches on when this view is first opened and can be toggled off. Drag a curve to scrub exposure or orbit the background.
Exposure 3D
Height is exposure in stops, angle is output hue, and distance from the center is OKLCH chroma. The small hue wheel lies on the −6 EV base plane as an orientation reference; it is not a mapped output. The dashed input ring at 0 EV marks the original inputs.
Top and exposure slice
Warm hues sit toward the upper left, with hue increasing clockwise in a grading-inspired orientation. This is a rotated/reflected OKLCH plot, not a YCbCr vectorscope. Primary-color labels are orientation references, not broadcast target boxes.
Unwrapped
Horizontal position follows continuous output hue; height remains exposure. Sideways bends reveal hue shifts. True output colors fade as chroma decreases. Curve thickness also reflects output chroma relative to the input, especially useful with enhanced colors. At chroma below 0.01, hue is undefined: a dashed curve holds its last defined horizontal position. Repeated edges continue curves across the 0°/360° seam.
Fair starting colors
Colors begin with the same OKLab lightness and OKLCH chroma. The common chroma limit fits every hue inside the selected gamut. Changing gamut may change this limit; choosing P3 does not automatically increase the chroma slider. Exposure acts on decoded linear-light RGB, not on display-encoded channel values.
Gamut points
The active sRGB or Display P3 gamut boundary is sampled at fixed lightness and hue, as in Color Flow. In Lightness 3D, the points form the full gamut shell around the mapped colors. In Exposure 3D, they are projected onto the −6 EV base plane; top views project away height. Points retain their original colors. They show the gamut across all lightness levels, not the available chroma at any one output lightness. Hidden in Unwrapped because that view has no chroma axis.
Visibility controls
Surface opacity changes only the connecting skin; zero leaves the curves. Enhance colors uses brighter, more colorful plot ink with the same measured hue wherever hue is defined. Plot positions, metrics, output swatches, CSS and JSON are unchanged. PNG captures the current view, including enhancement and opacity, and labels those choices.

Film LUT

Load a local 3D .cube with DaVinci Wide Gamut / DaVinci Intermediate input and Rec.709 Gamma 2.4 output. Exposure is applied in scene-linear light before the input conversion. The LUT uses tetrahedral interpolation; inputs outside its domain are clamped and flagged in JSON. Output is decoded with power 2.4 and re-encoded for the browser, with no additional tone mapper. Display P3 changes the input family and browser encoding; it does not turn the LUT into a P3 film transform. LUTs capture color and tone only, not grain, halation, or other spatial effects. This is the supplied emulation's response, not a physical prediction of Kodak film. Files are read locally, retained only in this tab, and never uploaded.

Rendering and display

ACES 1 uses the SDR Video output from OCIO’s ACES 1.3 config. ACES 2 uses the 100-nit SDR output from its ACES 2.0 config. Both are sampled 65³ LUT approximations with a logarithmic input shaper and tetrahedral interpolation; neither is the previous one-dimensional “ACES fitted curve.” Exact versions and transform names are included in JSON.

Clip and Reinhard act per channel in the selected RGB primaries. AgX remains the published minimal approximation in linear Rec.709 working primaries, not Blender’s reference view transform. P3 inputs are converted into those working primaries before AgX, with explicit guards for its log-domain limits; its output is converted into Display P3 before the final clamp.

Khronos PBR Neutral evaluates the reference equations directly in linear Rec.709. In Display P3 mode, applying those equations in P3 primaries is an extension, not the Khronos specification. OpenDRT evaluates a direct port of v1.1.0 Standard at 100 nits, with 10-nit grey, D65 creative white and bright surround. Its hue and purity modules are included. The display-linear result is encoded using the browser’s sRGB transfer function instead of the reference display preset’s power 2.2 encoding. Other Resolve looks, surrounds and display settings can produce different results. Neither new model uses a sampled LUT.

Display P3 uses D65 and the sRGB transfer function; this is SDR, not HDR or cinema DCI-P3. P3 swatches use tagged CSS colors and the plot requests a P3 canvas. The browser and display determine what is actually visible. A Mac does not make untagged RGB values P3 automatically. Any sRGB-only canvas fallback is identified beside the gamut switch.

Hue is undefined when input or output chroma is below 0.01. “Of input chroma” is a ratio of OKLCH C, can exceed 100%, and is not a calibrated saturation percentage. Deltas compare against original inputs, not mapped EV 0. The connecting skin is illustrative; opaque swatches are the output color reference.

Drag a curve to scrub exposure. Drag empty space to orbit; scroll to zoom; Shift-drag or middle-drag to pan. Arrow keys orbit, +/− zoom, 0 resets. In Unwrapped, drag empty space vertically to scrub exposure. Playback stops at +8 EV and pauses when the page is hidden.

Model references and attribution

Export this exposure slice

All sampled inputs and outputs, the chosen response, exposure, metrics, and assumptions. JSON preserves full precision; CSS uses sRGB hex or tagged Display P3 values. PNG captures the plot and its display settings.

Download JSONDownload plot PNG