OpenEXR

OpenEXR is the high dynamic range image format of visual effects and 3D rendering. Industrial Light & Magic created it in 1999 and released it as open source in 2003; today the Academy Software Foundation maintains it, and it is the interchange format between renderers, compositors and color pipelines.

An .exr file stores floating-point pixels in linear light, so highlights far above white survive intact. One file can hold many named channels — a beauty image beside depth, normals, motion vectors, object IDs and any number of render passes — and, in the multipart form, several independent images.

Paintapp opens OpenEXR files as layered documents: every image layer in the file becomes a layer, and every data channel becomes a channel in the Channels panel. Paintapp also exports OpenEXR, including multi-channel render passes from the path tracer.

Capabilities

FeatureDetails
Single-part and multipart filesOpened; each part becomes a layer
Scanline and tiled imagesBoth opened
CompressionNone, RLE, ZIPS, ZIP, PIZ, PXR24, B44, B44A, DWAA, DWAB
Pixel types16-bit half and 32-bit float, kept at their own depth; 32-bit unsigned integer channels read as float
RGB and RGBA imagesOpened as layers
Luminance (Y) imagesOpened as grayscale layers
Luminance/chroma (Y, RY, BY) imagesOpened and displayed in color, including subsampled chroma
Named layers and render passesImage passes become layers; data passes become channels
Data channels (Z, masks, motion and disparity vectors, IDs)Read into the Channels panel as extra channels
Stereo and multi-view filesEach view becomes a layer named after the view
Data window and display windowHonored: the document is the display window, the layer sits where its data window says
Chromaticities attributeApplied: the document takes a color profile built from the file's own primaries and white point
Embedded previewUsed for thumbnails without decoding the image
Large filesRead on demand: the header first, pixels only for the parts you open
Export32-bit float RGBA; path-traced scenes export render passes as named channels

Opened documents composite in linear light. See Color Management for how scene-linear documents are displayed.

Limitations

LimitationResult
Deep images (deep scanline, deep tile)Not supported; the file is refused with a message. Their headers can still be read
Mipmap and ripmap levelsOnly the full-resolution level is opened; the smaller levels are skipped
Pixel aspect ratioNot applied; non-square pixels display as square
Unsigned integer channels above 16,777,216Values lose precision, since they are held as 32-bit float
Luminance/chroma images with an alpha channel, or with unsubsampled chromaRefused with a message
Export of layers, parts, views or data channelsNot supported; export writes the flattened image (plus render passes from the path tracer)
Export as 16-bit half, or with compressionNot supported; export writes uncompressed 32-bit float

Opening OpenEXR Files

Opening an .exr file creates a layered document sized to the file's display window. Pixels stay at the depth the file uses, 16-bit half or 32-bit float, and the document composites in linear light, so values above 1.0 are preserved through editing.

Layers and Channels

OpenEXR files name their channels, and a dotted prefix groups channels into a layer: R, G, B, A are the beauty image, while albedo.R, albedo.G, albedo.B form a layer called albedo. Paintapp sorts what it finds into two kinds:

The beauty layer is the unnamed one when the file has one, otherwise a layer whose name says combined, beauty or rgba, otherwise the first layer with an alpha channel. It sits at the top of the stack. A file with a single image, the common case, opens as one layer named after the file.

Extra channels can be loaded as selections, viewed and deleted like any other channel. See Channels Panel.

Stereo and Multi-View Files

A multi-view file names its views in a header attribute and prefixes each view's channels with the view name; the first view carries the unprefixed channels. Paintapp opens each view as a layer named after the view, with the first view visible. A multipart stereo file, one part per view, opens the same way with the part names.

Data Window and Display Window

An OpenEXR file distinguishes the display window, the frame of the image, from the data window, the rectangle that actually holds pixels. The two often differ: a render with overscan has a data window larger than the frame, and a crop or a sparse render has a smaller one. The document takes the display window as its size, and each layer is placed at its data window's offset. Pixels outside the frame are kept on the layer, not cut off.

Color

OpenEXR pixels are scene-linear, and the file says which primaries they are in: the chromaticities attribute gives the CIE coordinates of its red, green and blue plus its white point. Opening builds a color profile from exactly those, with a linear tone response, and assigns it to the document — so the file's own gamut is what the document is in, not an assumption about it. You can see it, and change it, under Image > Assign Profile.

A file with no chromaticities attribute is not unknown: the format defines its absence as Rec.709 primaries with a D65 white, so those files are profiled that way. Files whose primaries are the CIE axes themselves hold XYZ rather than RGB, and are profiled as XYZ.

The document composites in linear light and is displayed through Paintapp's color management, as any float document is. Values above 1.0 survive editing, but the display conversion has no exposure or tone control of its own yet, so highlights well above white clip on screen.

Luminance/chroma files, the Y, RY, BY encoding some tools write to halve file size, are reconstructed to color on display.

Thumbnails

A writer can embed a small preview in the header. When one is present, the File Browser uses it and never decodes the image. Otherwise the beauty layer is decoded for the thumbnail.

Export

Any document can be saved as OpenEXR. The flattened image is written as 32-bit float R, G, B, A, uncompressed, in linear light.

A document with a path-traced 3D scene can export render passes alongside the beauty image: albedo, normal, depth, position and object ID. Each becomes a named layer in the file, using the channel names Nuke and other compositors expect (albedo.R, N.X, Z, and so on). See Path Tracer.

OpenEXR is unusually well documented: the reference implementation, the file layout and the conventions for layers, views and deep data are all published by its maintainers.

Specifications and References

Files to Open

The project's own image collection is the test set every OpenEXR reader is measured against: scanline and tiled images in every compression, luminance/chroma files, the multi-view Adjuster and Balls, the Beachball stereo sequence in both single-part and multipart form, and the display-window series that tests cropping and padding.

See Also