What You Need to Know about OpenEXR, the File Format Behind Hollywood’s Stunning Visual Effects


The simplest explanation of OpenEXR - the powerful format that simplifies complex VFX scenes, enhances visuals, and saves time in post-production.

OpenEXR is a special file format created by ILM (Industrial Light & Magic) in 1999 and released in 2003. The latest version (as of this writing) of OpenEXR is 3.2.3, released on March 7, 2024.

This article explains OpenEXR in simple terms. We’ll cover why ILM created it, its unique advantages, and why it’s important in the VFX (visual effects) industry.

What exactly is OpenEXR?

A ‘regular’ video file is a self-contained thing, usually created to be watched and shared. Most consumer formats like H.264, H.265, and so on, are structured to store data efficiently but aren’t designed for complex manipulation.

In other words. they’re not designed for editing or grading. It is assumed the film has already been edited and graded, and this is the final version – ready to be compressed to the lowest possible value.

To understand the difference, let’s talk about document formats.

A Microsoft Word document has a specific file format, which is typically “.docx”. Once you’re done writing and formatting your document, you can save it to a distribution or consumption format, like PDF. The reason MS Word (and most software in general) needs its own file format is because it gives itself the freedom to play with data in the most efficient manner possible.

Another analogy: Imagine the difference between two kitchens – one in a home and another in a busy restaurant. The first one is usually designed on the basis of aesthetics, while the latter gives total priority to workflow, efficiency and speed of operation.

In the film world. you can edit and grade your footage “natively” in a RAW format, or one of the popular intermediary codecs like ProRes or DNxHR. If you’re new to RAW and compression in general, I suggest you read these two articles:

https://website-39341349.tnb.awf.mybluehost.me/the-beginners-guide-to-raw-video/
https://website-39341349.tnb.awf.mybluehost.me/raw-vs-log-vs-luts-vs-compression/

Camera acquisition formats like RAW are great for capturing the image in the best possible version at the lowest file size. Intermediary codecs are great for processing and for surviving multiple versions during renders.

In the visual effects world, though, a different kind of file format is required.

And that is why OpenEXR exists. Even though there are other formats like TIFF, Targa, DNG and so on, ILM was compelled to create its own file format (like MS did with MS Word, Photoshop did with PSD, and so on).

In VFX work, artists need maximum flexibility when compositing and adjusting images. Existing formats often slowed down this process or didn’t store enough information. OpenEXR was designed to fix that.

In their own words:

The purpose of EXR format is to accurately and efficiently represent high-dynamic-range scene-linear image data. 

OpenEXR.com

OpenEXR is an ‘assembly line’ file format, easy to break open, study, share, split, merge, manipulate and ‘bake’. It’s a kitchen where any kind of food can be made.

What makes OpenEXR special?

OpenEXR has several key features that make it ideal for VFX:

  • Raster format: It stores pixel data rather than vectors.
  • Multi-resolution support: OpenEXR can hold different versions of the same image at various resolutions, called mipmaps.
  • Multiple data channels: Artists can include extra layers like depth data, masks, or matte passes within a single file. This is its most critical feature, in my opinion.
  • Flexible compression: OpenEXR supports uncompressed, lossless, and lossy compression.
  • High dynamic range: It supports 16-bit and 32-bit float data, and unsigned 32-bit integers, all with up to 30 stops of dynamic range.
  • Codec flexibility: OpenEXR can incorporate other codecs beyond its default options.
  • EXRDisplay app: A built-in tool for viewing OpenEXR images.
  • Deep image compositing: Deep images or pixels are pixels that have RGB information plus information in the z-axis (which is why it is “deep”). This system of compositing was created by Weta Digital to make composites look more real.
  • Multi-Part Images: You can save multiple images in one file, improving efficiency when dealing with large projects.
  • Programming support: Written in C++ but also compatible with C, ensuring wide usability in non-web applications.
  • New Python API: The updated Python API simplifies working with .exr files, enabling easier integration with modern VFX pipelines.

And that’s not all. What else does it offer?

In addition, OpenEXR addresses two critical requirements for the VFX industry:

  • Licensing: OpenEXR is open-source, with no restrictions.
  • Flexible API and Library: this allows developers in major VFX facilities to build customized applications around it. The library feature allows for quick access to data such as titles, channels, etc.

All versions are fully backward compatible, as long as its features aren’t called into play.

OpenEXR has been widely adopted in the film industry for its ability to handle high-dynamic-range (HDR) imagery and complex visual effects.

Use Case Scenario: Enhancing Visual Effects with OpenEXR

Imagine a scene where a spaceship crash-lands on an alien planet at dusk. The sole surviving astronaut is lit by the light of the spaceship, while the distant landscape glows under an alien moon.

Capturing this complex lighting – flickering shadows, intense highlights, and shifting hues – would normally require multiple image layers, slowing down the post-production process.

With OpenEXR, VFX artists can store all these details in one file with the extension *.exr.

How?

An OpenEXR file is structured like a container, divided into key parts:

  • Header: This holds metadata such as resolution, color space, compression type, and custom data like shot names or scene references.
  • Channels: OpenEXR can store multiple image layers, including:
    • RGB: Standard red, green, and blue color channels.
    • Alpha: Transparency data for compositing.
    • Depth (Z-Depth): Information about the distance of objects from the camera.
    • Motion Vectors: Data to track movement for motion blur effects.
    • Normal Maps: Used to simulate surface details in 3D models.
    • Specular and Diffuse Layers: For separate control over light reflections and base colors.
    • Material ID Passes: To isolate specific objects or surfaces for easier post-production adjustments.
    • Any many other channels as you need! The format does not impose a strict limit on the number of channels. However, practical constraints such as storage and processing power may influence performance. The more channels you add, the bigger the file size. E.g., a typical image has three channels, RGB. If you add three more channels, you’ve doubled the file size!
  • Tiles or Scanlines: Depending on the project, OpenEXR files can use tiled or scanline storage. Tiles allow quick access to specific parts of an image for editing, while scanlines prioritize fast sequential reading for playback.
  • Deep Data: Each pixel can store multiple values, improving control over objects that overlap or require complex transparency effects.

Because OpenEXR holds more data in one file, artists can bypass multiple render passes, saving hours of re-rendering and adjustments.

This efficiency cuts costs by reducing processing time and streamlining the entire compositing workflow. By using OpenEXR, VFX artists can achieve high-end visuals faster and with fewer technical roadblocks.

Author Bio
Photo of author
Sareesh Sudhakaran is a film director and award-winning cinematographer with over 24 years of experience. His second film, "Gin Ke Dus", was released in theaters in India in March 2024. As an educator, Sareesh walks the talk. His online courses help aspiring filmmakers realize their filmmaking dreams. Sareesh is also available for hire on your film!

Leave a Comment