Fact-checked by Grok 2 weeks ago

OpenEXR

OpenEXR is a () developed for professional-grade image storage and processing in applications, particularly within the motion picture and industries. It supports 16-bit and 32-bit floating-point pixel data, enabling a of up to 30 f-stops and 1024 color resolution steps per f-stop, far surpassing traditional 8-bit formats limited to 7-10 stops. The format accommodates arbitrary channels such as RGB, alpha, and depth maps, along with multi-part and multi-view structures for complex imagery like stereo pairs. Originally created by (ILM) in 1999 to address the needs of high-fidelity image handling in , OpenEXR was released as in 2003, including a reference C++ library for reading and writing files. In 2019, it became a flagship project of the Academy Software Foundation (ASWF), fostering contributions from studios including Weta Digital, , and , which have enhanced its capabilities for collaborative VFX workflows. The latest version, OpenEXR 3.4.3, released on November 4, 2025, includes bug fixes and security updates. Key features of OpenEXR include support for scan-line, tiled, and multi-resolution (/rip-map) layouts to optimize memory usage and rendering efficiency, as well as deep image data for variable sample densities per pixel in tasks. Compression options like , PIZ, and B44 provide lossless or visually lossless reduction in by 35-55%, while extensive headers allow embedding of camera, , and rendering details. Introduced in version 3.1, the OpenEXRCore library offers a thread-safe C API for non-blocking I/O, improving performance in multi-threaded environments. Widely adopted as an industry standard, OpenEXR is integral to photorealistic rendering, , deep compositing, and digital intermediates in film and animation pipelines, with compatibility across major software like , , and Nuke. Its open-source nature and inclusion in the VFX Reference Platform ensure consistent implementation across tools, supporting high-accuracy workflows from production to .

Introduction

Definition and Purpose

OpenEXR (EXR) is a high-dynamic-range (HDR), multi-channel raster graphics file format designed for storing and exchanging scene-linear image data in the motion picture and visual effects industries. This format supports pixel data in 16-bit or 32-bit floating-point representations, allowing for the capture and manipulation of images with extensive tonal ranges and multiple data channels beyond standard RGB. Developed to meet the demands of professional production pipelines, OpenEXR facilitates the preservation of raw, unprocessed image information essential for complex visual workflows. The primary purposes of OpenEXR are to enable accurate representation of imagery in rendering, , and (DI) workflows, while providing robust storage for photorealistic images, textures, and auxiliary data such as depth maps. In these contexts, the format ensures that light intensities and color values remain proportional to real-world scene measurements, supporting operations like layering multiple elements without loss of fidelity. This makes it indispensable for industries requiring photorealistic output, where even subtle variations in brightness or depth can impact final results. Unlike display-oriented formats such as or , which encode data for direct viewing on standard monitors often with non-linear gamma curves, OpenEXR prioritizes computational accuracy over immediate visual presentation. It employs linear color spaces to maintain scene-referred data, preserving dynamic ranges up to 30 f-stops—far exceeding the 7-10 stops typical of 8- or 10-bit formats—thus avoiding compression artifacts in high-contrast scenarios. This design choice supports flexible post-processing, such as for various output devices, without compromising the integrity of the underlying image data. OpenEXR was initially created to overcome the limitations of traditional 8-10 bit image formats, which struggled to handle the high-contrast scenes common in and . By offering higher and broader dynamic range, it addressed key bottlenecks in storing and exchanging data for professional-grade imagery, enabling more reliable results in demanding creative processes.

Key Features

OpenEXR distinguishes itself through its support for an arbitrary number and combination of image channels, extending beyond standard RGB to include specialized data such as alpha, Z-depth, motion vectors, and normals, enabling the storage of multi-layered image data essential for workflows. This flexibility allows compositors and renderers to handle complex scene information in a single file, preserving all necessary layers for without multiple separate files. The format incorporates multi-resolution capabilities, including mipmaps and ripmaps, which store multiple versions of a tiled image at varying resolutions within one file to facilitate efficient texture access and zooming in pipelines. These features optimize in applications by reducing the need for resampling, particularly beneficial for large-scale in and . OpenEXR ensures compatibility, notably through its 16-bit floating-point , which aligns directly with frame buffers in modern graphics hardware for seamless, lossless data transfer between software and GPU processing. This integration supports high-performance rendering without intermediate format conversions, streamlining workflows in professional VFX environments. Metadata integration is a core strength, permitting the embedding of non-pixel attributes such as camera parameters, chromaticities, and exposure settings directly into the file to enhance and across production tools. These attributes provide contextual information that aids in accurate reproduction and pipeline automation, reducing errors in multi-software collaborations. For imagery, OpenEXR offers stereo multi-view support, allowing left-eye and right-eye views—or additional perspectives—to be consolidated in a single file, simplifying storage and handling of stereoscopic content. This capability is particularly valuable for efficient management of immersive visuals in and virtual production. Overall, OpenEXR balances with efficiency via optional methods, including lossless options like PIZ and , which can reduce file sizes of grainy photographic images to 35-55% of their uncompressed state in typical VFX assets. These techniques maintain while enabling practical storage and transmission in demanding production pipelines.

History

Development at ILM

OpenEXR was initiated in 1999 at (ILM) to address the limitations of existing image formats in production, particularly the inadequate for handling complex lighting in films such as and the Sorcerer’s Stone (2001). At the time, standard 8-bit and 10-bit formats suffered from crushed shadows and blown-out highlights in high-contrast scenes, making it difficult to composite elements with live-action footage featuring bright lights and deep shadows without losing detail or introducing artifacts. Developers at ILM, including Rod Bogart and , recognized that 16-bit integer formats, while offering some improvement, were inefficient for the precision required in VFX workflows. The format's development focused on providing higher precision to enable seamless of digital elements into real-world footage, supporting the evolving demands of ILM's rendering and processes. Over four years of use, OpenEXR was extensively adopted across ILM's , including with their custom RenderMan system and tools, where it demonstrated reliability in managing high-dynamic-range imagery for multiple productions starting from 2000, such as and the Sorcerer’s Stone (2001). This internal testing validated its performance in real-world VFX scenarios, allowing artists to preserve subtle tonal variations during iterative without banding or loss of fidelity. Central to OpenEXR's design principles was an emphasis on extensibility to accommodate future VFX needs, achieved through an API-based architecture inspired by standards like OpenGL, which facilitated easy integration into existing software tools. It incorporated support for floating-point pixels, specifically 16-bit half-floats, enabling representation of luminance ranges exceeding 10^9 (or 30 f-stops) without precision loss in most scenarios, far surpassing the capabilities of prior formats. This approach ensured robust handling of extreme contrasts, such as the interplay of intense highlights and subtle shadows in CGI-heavy sequences, while maintaining compatibility with emerging graphics hardware.

Open Source Release

Industrial Light & Magic (ILM) officially released OpenEXR as free software on January 22, 2003, transitioning it from a proprietary internal tool to an open standard available to the public. This launch included the complete file format specification, a reference implementation via the IlmImf C++ library for reading and writing EXR files, and a suite of sample utilities such as exrheader for examining image headers and exrmakepreview for creating embedded preview images. The release was announced through a dedicated website, openexr.com, marking a significant step in sharing high-dynamic-range imaging technology with the broader computer graphics community. The software was distributed under a modified BSD license, a permissive open-source agreement that explicitly permitted commercial use, modification, and redistribution without restrictive requirements. This licensing choice was instrumental in encouraging widespread adoption, as it alleviated concerns for developers and studios integrating the format into their pipelines. The IlmImf library provided core functionality for handling multi-channel, high-precision pixel data, while the utilities offered practical tools for file inspection and , enabling immediate experimentation and implementation. The open-source release elicited a swift and positive response from the industry, with key studios quickly incorporating OpenEXR into their workflows. Weta Digital and Animation Studios were among the early adopters, quickly incorporating the format into their high-end production workflows. This rapid uptake, facilitated by the format's robustness and the permissive license, solidified OpenEXR's position as an emerging standard for , influencing subsequent tools and pipelines in and animation.

Maintenance and Updates

In 2019, OpenEXR transitioned to the stewardship of the Academy Software Foundation (ASWF), a neutral organization dedicated to sustaining for motion picture production, ensuring long-term reliability, modernization, and community governance. This move facilitated collaborative development, security audits, and integration with other ASWF projects like Imath, while preserving for industry workflows. Major version milestones have marked significant enhancements to the format and library. OpenEXR 2.0, released in 2013, introduced support for deep data, enabling storage of multiple pixel samples per pixel for advanced tasks. Version 3.0, launched in 2021, bolstered multi-part file handling for layered images and addressed key security vulnerabilities, including buffer overflows and denial-of-service risks identified through . The most recent , version 3.4.3 on November 5, 2025, resolved multiple issues—such as heap-based overflows in routines and legacy bindings—along with use-after-free errors and uninitialized memory access, while updating the integration via OpenJPH 0.24.5 to fix related -detected crashes. Community-driven improvements have focused on robustness and accessibility. Contributors have implemented stricter rejection of corrupt input files to prevent crashes, enhanced the build system for cross-platform compatibility and easier dependency management, and expanded bindings to support advanced file operations like multi-part reading without disrupting existing . These efforts, often stemming from OSS-Fuzz reports and pull requests, emphasize and integration, with tools like exrmetrics added for performance analysis. Looking ahead, OpenEXR's development prioritizes maintaining strict format compatibility while incorporating features to streamline cross-studio workflows, such as the colorInteropID attribute for standardized identification, reducing interpretation errors in RGB pipelines.

File Format

Structure and Components

OpenEXR files are organized as a sequence of bytes consisting of a magic number, version field, one or more headers, corresponding offset tables, and pixel data chunks. The magic number identifies the file as an OpenEXR , while the version field indicates the format version, supporting both single-part and multi-part layouts. Each header is a collection of key-value attributes stored as name-type-length-value tuples, terminated by a null byte, providing about the 's layout and contents. The header includes essential attributes defining the image's spatial extent and channel organization. The display window attribute specifies the boundaries of the image as viewed on a display, represented as an axis-aligned in pixel coordinates with dimensions such as 1920 by 1080 for a standard high-definition frame. The data window attribute delineates the region containing actual , which may be from or extend beyond the display window to accommodate regions or partial renders. Additionally, the channels attribute lists the image's channels, each with a unique name (e.g., "R" for ), a , and optional sampling rates for subsampled channels. OpenEXR supports two primary storage modes for pixel data: scan-line and tile-based. In scan-line mode, pixels are stored in horizontal rows, enabling suitable for traditional rendering pipelines. Tile-based mode divides the image into rectangular blocks of configurable size (e.g., 64 by 64 pixels), facilitating to subregions and efficient handling of large images or partial updates. The choice of mode is indicated in the header via the lineOrder or tiles attributes, with scan-line files organizing data into chunks per scan line and tile files into chunks per tile level and coordinate range. For tile-based files, the tiles attribute further specifies the , determining how levels are structured for multi- support. The ONE_LEVEL stores a single full- image without additional levels. MIPMAP_LEVELS creates a of levels where each subsequent level halves the in both dimensions, ideal for minification in rendering. RIPMAP_LEVELS provides independent for horizontal and vertical , allowing flexible adjustments across levels. Tile coordinates within these levels are computed based on the level index, ensuring . In multi-part files, the structure extends to support multiple independent images within a single file, such as pairs or passes. Each part features its own header with part-specific attributes like displayWindow and channels, followed by a dedicated that maps chunk indices to byte offsets in the file. The offset table for each part lists positions of scan lines or tiles, enabling efficient navigation without scanning the entire file. Parts are numbered sequentially, and their headers include a part number attribute for identification. As of version 3.4, new header attributes include colorInteropID for specifying RGB interoperability and a bytes type for with optional length hints. The coordinate system in OpenEXR operates in a pixel space where the origin is at the top-left corner of the data window, with the x-axis increasing from left to right and the y-axis increasing from top to bottom. Pixel coordinates are integers, and windows are defined by inclusive minimum and exclusive maximum bounds (e.g., xMin=0, yMin=0, xMax=1920, yMax=1080). This system supports by allowing the data window to exceed the display window, providing extra s around the frame edges for or effects work.

Pixel Types and Color Depth

OpenEXR supports three primary pixel data types to accommodate (HDR) imaging and precise color representation in (VFX) and workflows. These include HALF, a 16-bit floating-point ; , a 32-bit floating-point ; and UINT, a 32-bit unsigned integer . The HALF type is a compact 16-bit floating-point representation compatible with standards, featuring 1 , 5 exponent bits, and 10 bits. This structure provides approximately 1024 evenly spaced steps per f-stop, enabling smooth gradients without visible contouring in most imagery. HALF is particularly suited for color channels in HDR images, storing values in linear RGB space where 18% corresponds to 0.18. For HDR capabilities, the HALF format delivers a of 30 f-stops—equivalent to a ratio of about 10^9—through its normalized range, with an additional 10 f-stops available via denormalized values for extended low-end , spanning from roughly 6.0×10^{-8} to 6.5×10^4. The FLOAT type, adhering to full 32-bit , offers even greater and accuracy, making it ideal for applications requiring minimal quantization errors, such as depth maps or intermediate computations. Meanwhile, UINT serves non-floating-point needs, such as storing discrete data like object IDs or indices, with exact 32-bit unsigned but no inherent expansion. OpenEXR enhances color precision by allowing subsampled channels, where auxiliary data like chroma can be stored at reduced rates (e.g., 2×2 relative to luma) to optimize file size while maintaining perceptual quality and minimizing banding in gradients. In practice, HALF is the default for most VFX imagery due to its optimal balance of dynamic range, precision, and compact file sizes, especially given hardware acceleration on platforms like NVIDIA GPUs. FLOAT is reserved for scientific visualization or archival purposes where maximum fidelity is paramount, while UINT is used sparingly for auxiliary integer-based metadata within image channels.

Compression Methods

OpenEXR supports a variety of methods designed to reduce file sizes while balancing data fidelity, encoding speed, and decoding performance, particularly for high-dynamic-range images in workflows. These methods are applied at the scanline or level, allowing per-channel or per-part compression within multi-part files. Most are lossless, ensuring exact value preservation upon , which is essential for iterative tasks.

Lossless Compression

Lossless methods in OpenEXR preserve all original pixel data, making them suitable for production environments where precision is paramount. The ZIP method employs the Deflate algorithm on blocks of 16 scanlines, achieving typical size reductions of 45-55% for photographic images and offering faster decompression compared to other lossless options; it performs well on scanline-based or tiled files, especially texture maps. ZIPS is a variant using Deflate on individual scanlines, providing similar ratios but with potentially finer granularity for varying content. PIZ uses a wavelet transform followed by Huffman encoding, yielding 35-55% size reduction and excelling on images with photographic noise or grain, such as rendered frames from visual effects pipelines. RLE applies run-length encoding to pixel differences, resulting in 60-75% compression for flat or uniform areas, though it is less effective on noisy data; it is notably fast for both compression and decompression.

Lossy Compression

Lossy methods trade minimal data precision for higher compression ratios and faster processing, ideal for previews, intermediate storage, or bandwidth-constrained scenarios while maintaining perceptual quality in VFX. PXR24 rounds 32-bit floating-point values to 24 bits, compresses the differences with zlib, and introduces a maximum error of approximately $3 \times 10^{-5} for FLOAT pixel types, achieving 50-60% size reduction; it is particularly useful for depth buffers but not recommended for deep compositing data. B44 packs 4x4 blocks of HALF pixels into a fixed 14 bytes per block (44% of original size), while B44A optimizes uniform blocks to 3 bytes; with luminance/chroma separation for RGB images, B44 can reach 22% size, enabling real-time playback for previews, though neither supports deep files. DWAA and DWAB employ discrete cosine transform (DCT) quantization in blocks of 32 and 256 scanlines, respectively, delivering 20-40% size reductions with minimal perceptual loss on typical VFX rendered frames; DWAA favors partial access efficiency, while DWAB prioritizes overall space savings and full-frame decoding speed. Compression selection in OpenEXR is flexible, applied per or part via the header attribute, with automatic fallbacks for hardware lacking support for certain codecs like DWAA/DWAB. For VFX data such as rendered frames, lossless options like PIZ or are preferred for final assets to ensure exact fidelity in downstream , while lossy methods like B44 or DWAA suit temporary storage or delivery due to their speed and size benefits. Trade-offs include lossless methods' higher computational cost and larger files versus lossy options' bounded errors that preserve visual integrity but risk accumulation in multi-step pipelines; ratios vary with image content, but all methods are optimized for the high-precision, multi-channel nature of OpenEXR files.
MethodTypeMechanismTypical Ratio (Size Reduction)Best For
Lossless (16 lines / per line)45-55%Texture maps, general photographic
PIZLosslessWavelet + Huffman35-55%Noisy/grainy renders
RLELossless60-75%Flat/uniform areas
PXR24Lossy24-bit float + zlib50-60%Depth buffers
B44/B44ALossy4x4 block packing44% / 22% (with lum/chroma)Previews, playback
DWAA/DWABLossyDCT quantization (32/256 lines)20-40%Efficient storage, partial access

Advanced Capabilities

Multi-Channel and Multi-Part Support

OpenEXR's multi-channel system allows for an arbitrary number of named s within an , enabling the storage of diverse types such as color components, depth, and motion vectors. Each is identified by a unique string name, such as "R", "G", "B", "A" for red, green, blue, and alpha values, or "Z" for depth information, and can be assigned data types including half-precision floating-point (HALF), full-precision floating-point (), or unsigned 32-bit integer (UINT). This flexibility supports complex workflows by accommodating application-specific without rigid limitations. Channels in OpenEXR can operate at independent sampling rates, defined by horizontal (x) and vertical (y) factors relative to the primary , which optimizes storage for with varying perceptual importance. For instance, in a luminance-chroma separation scheme, the channel "Y" is sampled at full (sampling rates of 1x1), while channels "RY" and "BY" are subsampled at half (2x2 rates), storing only at coordinates where x s_x equals 0 and y s_y equals 0. This subsampling reduces file size significantly—chroma requires only a quarter of the samples compared to full —while maintaining visual , as human is less sensitive to details, avoiding in the downsampled components. Sampling rates are always defined relative to the base channel set, ensuring compatibility across tools in rendering pipelines. Multi-part files extend this capability by encapsulating multiple independent sections within a single OpenEXR container, each functioning as a self-contained with its own header, data window, and . These parts can vary in , such as scanline-based, tiled, or formats, and support differing data windows that define the valid pixel region (e.g., a cropped subset like (-100, -100) to (2019, 1179) relative to a larger ). Notably, multi-part files permit mixing flat parts—where each holds a single sample—with parts that store variable sample counts per , each with its own offset table for efficient access. In pipelines, multi-channel and multi-part support streamlines by allowing layered data organization, such as storing a "beauty" pass (full RGBA) alongside a "" channel in separate parts of the same file, or grouping related channels via naming conventions like "light1.R" and "light1.specular.G" for nested layers. This consolidation reduces the proliferation of separate files in workflows handling multiple views (e.g., stereo pairs) or resolutions, minimizing storage overhead and simplifying across production stages. can be attached to individual channels or parts to describe their roles, further enhancing .

Deep Compositing and Metadata

OpenEXR's data format, introduced in , enables the storage of volumetric and particle-based effects by allowing a variable number of samples per , unlike traditional flat images that store only one value per per . Each sample includes a Z-depth value—typically via a required Z channel and an optional ZBack for volume ranges—along with corresponding values for all channels in that pixel, such as color (R, G, B) and alpha (A). Samples within a pixel may be sorted by increasing Z-depth, facilitating representation of complex phenomena like smoke, fog, or particle occlusions where multiple overlapping elements contribute to the final image. This structure provides significant advantages in visual effects , particularly for handling exact occlusions across layers without introducing artifacts that plague flattened or scanline-based merges. Deep images support operations like merging multiple render passes—such as foreground elements over volumetrics—while preserving depth relationships, allowing compositors to accurately resolve visibility and density in scenes rendered from different elements. For instance, in volumetric rendering, samples can represent light-absorbing media with opacity, and thick samples may be split to maintain precise density information during . Complementing deep data, OpenEXR headers store as flexible key-value attributes, supporting arbitrary typed data such as strings, matrices, or arrays to embed scene-specific information. Standard attributes include chromaticities, which define CIE x,y coordinates for RGB primaries and to ensure accurate representation (e.g., Rec. BT.709-3 with red at 0.6400, 0.3300). Other examples encompass whiteLuminance for specifying exposure in nits (typically 1.0 for RGB) and camera in f-stops, derived from divided by iris , aiding in photometric consistency across workflows. Unique to OpenEXR's deep ecosystem are ID manifests, which track render elements by associating numerical IDs per sample with human-readable identifiers like object or material names, stored as a idmanifest attribute since version 3.0. This enables precise selection and manipulation of elements during , such as masking specific objects for grading or . Additionally, multi-view stereo support allows left and right eye views to be stored in separate parts of a multi-part file, sharing identical channel names (e.g., R, G, B for both), with a multiView attribute listing view names to streamline workflows.

Software and Distribution

Libraries and APIs

The OpenEXR project provides several core libraries essential for implementing the in software applications. The primary library, OpenEXR (historically known as IlmImf), handles input/output operations for EXR image files, including reading and writing scanline, tiled, deep, multi-part, and multi-view images. Complementary libraries include Imath, which offers lightweight C++ primitives for mathematical operations such as half-precision floating-point types, / vectors, and matrices, and , which manages across the ecosystem. These libraries are designed to be modular, allowing developers to use subsets as needed for performance and integration. The is primarily exposed through in the , enabling straightforward access to contents and . For example, Imf::RgbaInputFile facilitates reading RGBA from an EXR , while Imf::Header allows inspection and modification of attributes like channels, , and custom keys. C bindings are available via the OpenEXRCore library, introduced in , which provides a thread-safe, non-blocking interface for I/O operations and supports integration in non-C++ environments, such as through language wrappers. Multi-threaded I/O is supported natively in OpenEXRCore to enhance performance for large , contrasting with the original 's more sequential approach. Distribution of the libraries occurs primarily through source code from the official repository at AcademySoftwareFoundation/openexr, where developers can clone the repository and build using for Windows, macOS, and Linux platforms. Pre-built packages are accessible via managers including (e.g., vcpkg install openexr on Windows), conda-forge (e.g., conda install -c conda-forge openexr), and Homebrew (e.g., brew install openexr on macOS), simplifying integration into existing workflows. ensures cross-platform compatibility, with options to enable or disable features like tools and bindings during configuration. Included with the source distribution are command-line utilities for common tasks, built via with the OPENEXR_BUILD_TOOLS=ON option. Notable examples include exr2aces, which converts OpenEXR files to the ACES color encoding system by enforcing specific restrictions on channels and metadata, and exrenvmap, which transforms latitude-longitude environment maps to cube-face formats or vice versa for lighting applications. bindings are provided through the official OpenEXR module, installable via pip install OpenEXR, offering NumPy-integrated access to file I/O; additional bindings for Imath components are in using pybind11 to replace older .Python dependencies.

Industry Adoption

OpenEXR has become a cornerstone in (VFX) pipelines, with native integration in leading software tools such as , SideFX Houdini, and Foundry's Nuke and . In , OpenEXR support enables loading and displaying (HDR) images as file textures, facilitating exposure control during previews and rendering workflows. Houdini incorporates OpenEXR through its core libraries, supporting HDR image handling for procedural modeling, simulation, and tasks. Similarly, Nuke and Katana leverage OpenEXR for advanced and look development, including multi-channel data exchange in production environments. In film and animation, OpenEXR serves as the standard format for major studios, enabling seamless HDR workflows from rendering to final output. Industrial Light & Magic (ILM) has relied on OpenEXR as its primary image file format since 2000, utilizing it across all visual effects contributions to motion pictures, including numerous Marvel Cinematic Universe films like Avengers: Endgame. Weta Digital adopted OpenEXR extensively for Avatar (2009) and its sequels, particularly for deep compositing techniques that manage layered depth data in stereoscopic 3D sequences. Walt Disney Animation Studios employs OpenEXR for rendering in projects such as Moana 2 (2024), where it supports high-precision image storage alongside other open-source tools for volumetric effects and color management. Beyond cinema, OpenEXR finds application in game development for texture storage, with support in engines like via dedicated wrappers for importing and processing assets. In , plugins and importers enable OpenEXR handling for high-fidelity textures in real-time environments. In scientific imaging, utilizes OpenEXR's half-float format for astronomy visualizations, such as the Deep Star Maps project, which renders star fields for space science outreach. This extends to simulations in fields like , where OpenEXR preserves precision in volumetric data representations. OpenEXR's standardization has amplified its adoption, with endorsement from the Academy of Motion Picture Arts and Sciences (AMPAS) through the Academy Software Foundation, which stewards the format as an open-source project. It integrates deeply with the Academy Color Encoding System (ACES), where OpenEXR files serve as the primary container for colorimetric image data in production pipelines, ensuring consistent color exchange across tools. Additionally, advancements in GPU-accelerated loaders are expanding OpenEXR's role in real-time rendering, allowing efficient playback and processing of sequences in modern graphics applications.

Credits and Contributors

Original Developers

OpenEXR was originally developed at (ILM) by a small team in the company's imaging group, who addressed the limitations of existing image formats for in production during the early . The primary designers were , who served as the lead architect for the overall format and library; Rod Bogart, responsible for key implementations in compression and input/output handling; and Wojciech Jarosz, who made early contributions to half-float data handling. This effort began in 1999 amid the demands of films like Star Wars: Episode I – The Phantom Menace, where precise HDR imaging was essential to manage wide dynamic ranges without losing detail in shadows or highlights, enabling more flexible workflows. Kainz authored the core specification, outlining the file format's structure, including support for multi-channel data to accommodate auxiliary information like depth maps and motion vectors beyond standard RGB channels. Bogart developed the PIZ compression method, adapting an algorithm by Christian Rouet to achieve efficient suitable for large VFX image files. Drew packaged and adapted ILM's code for the public open-source release in and maintained the distribution. The team's collective work emphasized extensibility, allowing the format to evolve with industry needs while maintaining . Their contributions were recognized in the original 2003 open-source release notes and later histories from the Academy Software Foundation (ASWF), with Kainz receiving a 2007 Scientific and Technical Academy Award for the design and engineering of OpenEXR.

Current Maintainers

The OpenEXR project is maintained by the Academy Software Foundation (ASWF), an organization dedicated to fostering for media and entertainment. Governance and technical oversight are handled by the project's Technical Steering Committee (TSC), which reviews contributions, sets development priorities, and ensures the format's reliability and evolution. The TSC operates under ASWF's open participation model, with meetings held biweekly and open to the public. The TSC is chaired by , R&D Supervisor at (ILM), who has led the project since its transition to ASWF in 2019. Phillips, a long-time contributor since OpenEXR's origins at ILM, focuses on maintaining , integrating enhancements, and coordinating with industry stakeholders. His role includes representing OpenEXR on the ASWF Technical Advisory Council (TAC). A key maintainer is Kimball Thurston, at Weta FX, who serves on the TSC and handles core implementation tasks. Thurston developed the OpenEXRCore C-language library in 2021, enhancing performance and portability, and remains active in addressing bugs, fuzz testing, and release management as of 2025. Other TSC members contributing to maintenance include Rod Bogart from , an original developer focused on and standards alignment, and Peter Hillman from SideFX, who supports integration with tools and testing frameworks. This committee structure ensures diverse expertise from major VFX studios, with contributions tracked via the project's repository. Recent efforts, such as a 2025 security audit by Shielder and OSTIF, highlight the maintainers' commitment to robustness, resolving issues like buffer overflows and fuzz-detected crashes.

References

  1. [1]
    Technical Introduction to OpenEXR
    OpenEXR is a high-quality image format with high dynamic range, good color resolution, lossless compression, and arbitrary image channels.
  2. [2]
    About OpenEXR
    OpenEXR is a project of the Academy Software Foundation. The format and library were originally developed at Industrial Light & Magic and first released as ...Missing: history | Show results with:history
  3. [3]
    OpenEXR Joins Academy Software Foundation Projects - ILM
    May 3, 2019 · The ASWF has brought together virtually every major company in the industry, and it provides a vital forum to discuss sensible, practical ...Missing: history | Show results with:history
  4. [4]
    OpenEXR
    OpenEXR provides the specification and reference implementation of the EXR file format, the professional-grade image storage format of the motion picture ...OpenEXR File Layout · Reading and Writing Image... · OpenEXR · OpenEXR Tools
  5. [5]
    OpenEXR Concepts
    Overview of the OpenEXR File Format · Luminance/Chroma Images · The half Data Type · What's in the Numbers? Recommendations · Standard Attributes · Basic ...
  6. [6]
    Scene-Linear Image Representation - OpenEXR
    Scene-Linear Image Representation¶ OpenEXR images are intended to store scene-referred linear data. “Scene-referred” means the pixel values indicate how much ...
  7. [7]
    ASWF Deep Dive: OpenEXR Origin Story: Part 1
    Apr 15, 2021 · Learn about the origins of OpenEXR, an ASWF project, and an HDR image file format for high-quality image processing and storage developed by ILM
  8. [8]
    [PDF] Industrial Light & Magic Releases Proprietary Extended Dynamic ...
    San Rafael, Calif. – January 22, 2003– Industrial Light & Magic (ILM), a division of Lucas Digital Ltd. LLC, today announced the launch of OpenEXR ...Missing: initial exact
  9. [9]
    News - OpenEXR
    Software compiled with OpenEXR v3.4 will be able to read HTJ2K compressed OpenEXRs without any code changes. Software that writes files may automatically ...
  10. [10]
  11. [11]
    OpenEXR Project Update: One Year at ASWF!
    May 29, 2020 · OpenEXR moved to full ASWF adoption, made bug fixes, released five versions, and plans a 3.0 release with Imath as external dependency.
  12. [12]
    OpenEXR News - GitHub Pages
    See the downloads section for the source code. January 22, 2003 - OpenEXR Press Release click here. January 22, 2003 - openexr.com web site is officially ...
  13. [13]
    OpenEXR Debuts New Version 3.0 with Improved Imath - ASWF
    Apr 1, 2021 · The 3.0 release of OpenEXR addresses a number of security issues and introduces several new features, including ID Manifest attributes.
  14. [14]
    Release v3.4.3 · AcademySoftwareFoundation/openexr
    ### Release Notes Summary for OpenEXR v3.4.3
  15. [15]
    Releases · AcademySoftwareFoundation/openexr - GitHub
    The OpenEXR project provides the specification and reference implementation of the EXR file format, the professional-grade image storage format of the ...Missing: components exrmakepreview 2003
  16. [16]
    OpenEXR File Layout
    An OpenEXR file is a sequence of 8-bit bytes. Groups of bytes represent basic objects such as integral numbers, floating-point numbers and text. Those objects ...
  17. [17]
    Standard Attributes - OpenEXR
    An OpenEXR file may not have pixel data for all the pixels in the display window, or the file may have pixel data beyond the boundaries of the display window.<|control11|><|separator|>
  18. [18]
    Reading and Writing Image Files with the OpenEXR Library
    In an OpenEXR file, pixel data can be stored either as scan lines or as tiles. Files that store pixels as tiles can also store multi-resolution images. For each ...
  19. [19]
    Interpreting OpenEXR Deep Pixels
    The open-source OpenEXR file I/O library defines the file format for deep images, and it provides convenient methods for reading and writing deep image files.
  20. [20]
    OpenEXR Deep IDs Specification
    Introduction. Deep IDs are primarily used in compositing applications to select objects in images: The 3D renderer stores multiple ids per pixel in the final ...
  21. [21]
    Storing Multi-View Images in OpenEXR Files
    This document recommends a standard way to represent multi-view images in OpenEXR files. A “multi-view” image shows the same scene from multiple different ...Example File Structures · Default Channel Naming · The Multiview Attribute
  22. [22]
    The OpenEXR API
    OpenEXRCore . The C++ API is the original, widely-used interface first released in 2003. It consists of the OpenEXR , Iex , and IlmThread libraries, with ...Missing: components | Show results with:components
  23. [23]
    AcademySoftwareFoundation/openexr - GitHub
    The OpenEXR project provides the specification and reference implementation of the EXR file format, the professional-grade image storage format of the ...Openexr-images · Issues 209 · Pull requests 17 · Actions
  24. [24]
    Install - OpenEXR
    OpenEXR can be installed via package managers on Linux, Homebrew on macOS, vcpkg on Windows, or by building from source using CMake.Build From Source · Openexr/imath Version... · Cmake Build-Time...Missing: key | Show results with:key
  25. [25]
    Openexr - Anaconda.org
    OpenEXR is a high dynamic-range (HDR) image file format developed by Industrial Light & Magic (ILM) for use in computer imaging applications.
  26. [26]
    OpenEXR Tools
    OpenEXR tools convert between exr file types and edit metadata. They are built from source with cmake, and some are developer tools.
  27. [27]
    exr2aces - OpenEXR
    exr2aces reads an OpenEXR file and saves it as an ACES image file, which is a subset of OpenEXR, with specific restrictions on image data.Missing: command- line
  28. [28]
    exrenvmap - OpenEXR
    exrenvmap converts an OpenEXR latitude-longitude environment map into a cube-face environment map or vice versa. It reads an input and stores the result.Missing: command- | Show results with:command-
  29. [29]
    The OpenEXR Python Module
    The OpenEXR Python module provides basic access to data in EXR image files, using python dictionaries for metadata and numpy arrays for pixel data.Reading Exr Files With... · Header Metadata · Openexr. ChannelMissing: features | Show results with:features
  30. [30]
    Maya Help | Display a high dynamic range image | Autodesk
    You can load a floating-point image into Maya as a file texture and control its exposure for preview. Supported formats include OpenEXR, TIFF, and DDS.
  31. [31]
    OpenEXR - SideFX
    Houdini 21.0 Houdini third-party libraries and tools. OpenEXR. Copyright (c) 2006, Industrial Light & Magic, a division of Lucasfilm Entertainment Company ...
  32. [32]
    OpenEXR and OpenColorIO in Foundry's Nuke and Katana - ASWF
    Feb 3, 2020 · Now, Nuke is proud to offer unmatched OpenEXR support encouraging further adoption of this powerful, refined format. OpenEXR is fundamental ...
  33. [33]
    ASWF Deep Dive: OpenEXR Origin Story: Part 2
    Apr 19, 2021 · OpenEXR, a project at the ASWF, is an HDR image file format for high-quality image processing and storage, originally developed by Industrial ...
  34. [34]
    fmx 2011: Avatar tech to form part of OpenEXR 2.0 | CG Channel
    May 5, 2011 · fmx 2011: Avatar tech to form part of OpenEXR 2.0. Weta CTO Sebastian Sylwan demonstrates the studio's deep compositing technology at fmx 2011.Missing: Marvel films
  35. [35]
    Disney's 'Moana 2' Sets Sail with Help from Open Source Tools
    May 22, 2025 · Disney used OpenVDB for volumetric effects, OpenEXR for rendering, OpenColorIO for color management, OpenTimelineIO for timelines, OpenUSD for ...
  36. [36]
    OpenExrWrapper | Unreal Engine 5.6 Documentation
    Building Virtual Worlds, Designing Visuals, Rendering, and Graphics, Creating Visual Effects, Gameplay Tutorials, Blueprints, Visual Scripting, Programming ...
  37. [37]
    Deep Star Maps 2020 - NASA SVS
    Sep 9, 2020 · The star maps are in OpenEXR's half-float format, which provides higher dynamic range in a linear colorspace while easily accommodating very ...
  38. [38]
    ACES | Image Science | Learn & Help - ARRI
    The ACES Container uses OpenEXR to hold colorimetric image data, while ADX is a constrained form of DPX used for densitometric film scan data. These formats ...
  39. [39]
    ASWF Deep Dive: OpenEXR Origin Story: Part 3
    Apr 21, 2021 · Learn about the origins of OpenEXR, an ASWF project, and an HDR image file format for high-quality image processing and storage developed by ILM
  40. [40]
    AMA with Kimball Thurston - Hack Club Events
    He is the current maintainer of the OpenEXR image file format, and has decades of experience with advanced graphics programming. He recently was awarded an ...
  41. [41]
    2025-02-19 | Academy Software Foundation TAC
    Feb 19, 2025 · Cary: they reported 4 issues against OpenEXR, “garden variety” crash bugs, they fixed GitHub security advisories, Kimball fixed them. Not sure ...
  42. [42]
    OpenEXR Audit Complete! – OSTIF.org
    Jul 31, 2025 · OpenEXR maintainers and community, especially: Cary Phillips and Kimball Thurston · Shielder: Abdel Adim Oisfi, Davide Silvetti, Nicolò Daprelà, ...