Openexr
Author: m | 2025-04-24
Technical Introduction to OpenEXR; Standard Attributes; Storing Multi-View Images in OpenEXR Files; Scene-Linear Image Representation; Interpreting OpenEXR Deep Pixels; Theory of Deep Samples; OpenEXR Deep IDs Specification; OpenEXR File Layout; OpenEXR/Imath 2.x to 3.x Porting Guide; Symbol Visibility in OpenEXR Technical Introduction to OpenEXR; Standard Attributes; Storing Multi-View Images in OpenEXR Files; Scene-Linear Image Representation; Interpreting OpenEXR Deep Pixels; Theory of Deep Samples; OpenEXR Deep IDs Specification; OpenEXR File Layout; OpenEXR/Imath 2.x to 3.x Porting Guide; Symbol Visibility in OpenEXR
GitHub - AcademySoftwareFoundation/openexr: The OpenEXR
3ds Max can both read and write image files in the OpenEXR format. OpenEXR is both an image file format and a general open-source API for reading and writing such files. OpenEXR files have a filename extension of .exr or .fxr. The best place to look for information on OpenEXR itself is the official Website. The following is taken directly from the OpenEXR home page: “OpenEXR is a high dynamic-range (HDR) image file format developed by Industrial Light & Magic for use in computer imaging applications. “OpenEXR is used by ILM on all motion pictures currently in production. The first movies to employ OpenEXR were Harry Potter and the Sorcerer's Stone, Men in Black II, Gangs of New York, and Signs. Since then, OpenEXR has become ILM's main image file format. “OpenEXR's features include: “Higher dynamic range and color precision than existing 8- and 10-bit image file formats. “Support for 16-bit floating-point, 32-bit floating-point, and 32-bit integer pixels. The 16-bit floating-point format, called “half,” is compatible with the half data type in NVIDIA’s Cg graphics language and is supported natively on their new GeForce FX and Quadro FX 3D graphics solutions. “Multiple lossless image compression algorithms. Some of the included codecs can achieve 2:1 lossless compression ratios on images with film grain. “Extensibility. New compression codecs and image types can easily be added by extending the C++ classes included in the OpenEXR software distribution. New image attributes (strings, vectors, integers, and so on) can be added to OpenEXR image headers
Difference between OpenEXR and OpenEXR
Without affecting backward compatibility with existing OpenEXR applications.” The OpenEXR Bitmap I/O software goes beyond the “standard” OpenEXR format, taking advantage of the flexibility of the format itself. It can write channels and attributes as well as general RGBA data in formats that many OpenEXR file importers cannot understand, due to implementation limits as well as limits to the current set of standards. For example, you can output full-latitude 32-bit floating-point RGBA files. While the OpenEXR API itself fully supports this capability, and these files are written using the standard set of OpenEXR libraries, most applications read only the 16-bit “half” floating-point RGBA files: These are considered “standard” EXR files. Note: When you render with floating-point, 32-bit output, bright areas such as self-illumination or reflections of light sources might appear to be jagged. Configuration File The OpenEXR plug-in stores configuration information in a binary CFG file named fopenexr.cfg. The file is generated automatically the first time you edit the OpenEXR configuration settings, and is updated each time you modify settings when you load or save an EXR file.GitHub - mitsuba-renderer/openexr: OpenEXR with an
+= b;b += a;b = a + 7; 26.1.3 Range of Representable Values The most obvious benefit of half is the range of values that can be represented with only 16 bits. We can store a maximum image value of 65504.0 and a minimum value of 5.96–8. This is a dynamic range of a trillion to one. Any image requiring this range would be extremely rare, but images with a million-to-one range do occur, and thus they are comfortably represented with a half. Photographers measure dynamic range in stops, where a single stop is a factor of 2. In an image with five stops of range, the brightest region is 32 times brighter than the darkest region. A range of one-million to one is 20 stops in photographic terms. 26.1.4 Color Resolution The second, less obvious benefit of half is the color resolution. Each stop contains 1024 distinct values. This makes OpenEXR excellent for normal-dynamic-range images as well. In an eight-stop image that ranges from 1.0 down to 0.0039 (or 2–8), the half format will provide 8192 values per channel, whereas an 8-bit, gamma 2.2 image will have only 235 values (21 through 255). 26.1.5 C++ Interface To make writing and reading OpenEXR files easy, ILM designed the file format together with a C++ programming interface. OpenEXR provides three levels of access to the image files: (1) a general interface for writing and reading files with arbitrary sets of image channels; (2) a specialized interface for RGBA (red, green, blue,. Technical Introduction to OpenEXR; Standard Attributes; Storing Multi-View Images in OpenEXR Files; Scene-Linear Image Representation; Interpreting OpenEXR Deep Pixels; Theory of Deep Samples; OpenEXR Deep IDs Specification; OpenEXR File Layout; OpenEXR/Imath 2.x to 3.x Porting Guide; Symbol Visibility in OpenEXR Technical Introduction to OpenEXR; Standard Attributes; Storing Multi-View Images in OpenEXR Files; Scene-Linear Image Representation; Interpreting OpenEXR Deep Pixels; Theory of Deep Samples; OpenEXR Deep IDs Specification; OpenEXR File Layout; OpenEXR/Imath 2.x to 3.x Porting Guide; Symbol Visibility in OpenEXRopenexr/INSTALL.md at master mitsuba-renderer/openexr
75 percent of the uncompressed size. Optionally, the pixels can be stored in uncompressed form. If stored on a fast file system, uncompressed files can be written and read significantly faster than compressed files. 26.4 Using OpenEXR The electronic materials accompanying this book contain the full source code for a simple image-playback program, along with the associated Cg shader code. This section provides excerpts of the code to demonstrate reading an OpenEXR image file, displaying the image buffer with OpenGL, performing a simple compositing operation, and writing the result to an OpenEXR file. 26.4.1 Reading and Displaying an OpenEXR Image The simple code in Listing 26-1 reads an OpenEXR file into an internal image buffer. Note that the OpenEXR library makes use of exceptions, so errors such as "file not found" are handled in a catch block. There is no need to explicitly close the file because it is closed by the C++ destructor for the RgbaInputFile object. Example 26-1. Reading an OpenEXR Image File Imf::Rgba *pixelBuffer;try{ Imf::RgbaInputFile in(fileName); Imath::Box2i win = in.dataWindow(); Imath::V2i dim(win.max.x - win.min.x + 1, win.max.y - win.min.y + 1); pixelBuffer = new Imf::Rgba[dim.x * dim.y]; int dx = win.min.x; int dy = win.min.y; in.setFrameBuffer(pixelBuffer - dx - dy * dim.x, 1, dim.x); in.readPixels(win.min.y, win.max.y);}catch (Iex::BaseExc &e){ std::cerr Once the buffer is filled, the code segment in Listing 26-2 binds the image to a texture for display with a Cg fragment shader (see Section 26.5 for more details). The full program invokes this display code toGitHub - paxsonsa/openexr-header-wasm: OpenEXR's
And alpha channels, or some subset of those); and (3) a C-callable version of the programming interface that supports reading and writing OpenEXR files from programs written in C. The examples in this chapter use the RGBA C++ interface. 26.2 The OpenEXR File Structure An OpenEXR file consists of two main parts: the header and the pixels. 26.2.1 The Header The header is a list of attributes that describe the pixels. An attribute is a named data item of an arbitrary type. In order for OpenEXR files written by one program to be read by other programs, certain required attributes must be present in all OpenEXR file headers. These attributes are presented in Table 26-1. Table 26-1. Required Attributes in OpenEXR Headers Name Description displayWindow The image's resolution [1] dataWindow Crop and offset pixelAspectRatio Width divided by the height of a pixel when the image is displayed with the correct aspect ratio channels Description of the image channels stored in the file compression The compression method applied to the pixel data of all channels in the file lineOrder The order in which the scan lines are stored in the file (increasing y or decreasing y) screenWindowWidth, screenWindowCenter The perspective projection that produced the image In addition to the required attributes, a program can include optional attributes in the file's header. Often it is necessary to annotate images with additional data that's appropriate for a particular application, such as computational history, color profile information, or camera position and view direction. TheseGitHub - mitsuba-renderer/openexr: OpenEXR with an improved
Play back multiple frames. Example 26-2. Binding an Image to a Texture GLenum target = GL_TEXTURE_RECTANGLE_NV;glGenTextures(2, imageTexture);glBindTexture(target, imageTexture);glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);glTexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);glTexParameteri(target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);glPixelStorei(GL_UNPACK_ALIGNMENT, 1);glTexImage2D(target, 0, GL_FLOAT_RGBA16_NV, dim.x, dim.y, 0, GL_RGBA, GL_HALF_FLOAT_NV, pixelBuffer);glActiveTextureARB(GL_TEXTURE0_ARB);glBindTexture(target, imageTexture);glBegin(GL_QUADS);glTexCoord2f(0.0, 0.0);glVertex2f(0.0, 0.0);glTexCoord2f(dim.x, 0.0);glVertex2f(dim.x, 0.0);glTexCoord2f(dim.x, dim.y);glVertex2f(dim.x, dim.y);glTexCoord2f(0.0, dim.y);glVertex2f(0.0, dim.y);glEnd(); 26.4.2 Rendering and Writing an OpenEXR Image Images rendered by the GPU can be saved in OpenEXR files. Often, we want to create a foreground image and a background image and combine them later. The example in Listing 26-3 uses a pbuffer to do a simple compositing operation, and then it writes the result to an OpenEXR file. In the code fragment, we read the two input images (which are already open) into the allocated image buffers, and then we call a compositing routine and write the result. Example 26-3. Compositing Two Images and Writing an OpenEXR File //// Read A and B.//Imath::V2i dim(dataWinA.max.x - dataWinA.min.x + 1, dataWinA.max.y - dataWinA.min.y + 1);int dx = dataWinA.min.x;int dy = dataWinA.min.y;Imf::Array imgA(dim.x *dim.y);Imf::Array imgB(dim.x *dim.y);inA.setFrameBuffer(imgA - dx - dy * dim.x, 1, dim.x);inA.readPixels(dataWinA.min.y, dataWinA.max.y);inB.setFrameBuffer(imgB - dx - dy * dim.x, 1, dim.x);inB.readPixels(dataWinB.min.y, dataWinB.max.y);//// Do the comp, overwrite image B with the result.//Comp::over(dim, imgA, imgB, imgB);//// Write comp'ed image.Imf::RgbaOutputFile outC(outputFilename.c_str(), dpyWinA, dataWinA, Imf::WRITE_RGBA);outC.setFrameBuffer(imgB - dx - dy * dim.x, 1, dim.x);outC.writePixels(dim.y); The call to Comp::over is implemented simply as a call to the routine shown in Listing 26-4 (Comp::comp) with the name of a Cg shader that performs an over operation. Full details of over and various other compositingGitHub - sandflow/openexr-ht: The OpenEXR project provides the
Exr-IO 2: Cryptomatte release Exr-IO 2.00 Press Release (www.exr-io.com) 3d-io has released Exr-IO 2.00, an update for the free OpenEXR plug-in for Adobe Photoshop. For two years we have gathered and studied the requests and wishes from creative artists and studios across the world. They expressed urgent needs for fluent, fast, precise and feature-rich production turnarounds when it comes to editing of professional image material. The new version of the popular Exr-IO file format plug-in includes... Read More Exr-IO v 1.01 update released Christmas Update for Exr-IO 1.01 Patch notes: The features “Split Alpha to all channels” and “Add Alpha to all channels” can now be used simultaneously, giving you a seperate Alpha-layer and Transparency in the other layers. The user interface now displays scaled DPI properly (before background images were corrupted if non-standard DPI values were used) The Photoshop auto-recognition in our installer was improved. Download Exr-IO 1.01: DOWNLOAD Press... Read More Exr-IO Photoshop plugin released! Exr-IO v1.0 released 3d-io announces Exr-IO, a free OpenEXR reader / writer for Adobe Photoshop. Exr-IO (www.exr-io.com) is the bridge between Photoshop and the advanced image file format OpenEXR. It is a free, robust and exact solution for dealing with complex multi-layer pictures: Exr-IO loads all image channels from OpenEXR files into separate Photoshop layers, while preserving exact values, transparencies and dimensions. Exr-IO supports all OpenEXR features and provides... Read More. Technical Introduction to OpenEXR; Standard Attributes; Storing Multi-View Images in OpenEXR Files; Scene-Linear Image Representation; Interpreting OpenEXR Deep Pixels; Theory of Deep Samples; OpenEXR Deep IDs Specification; OpenEXR File Layout; OpenEXR/Imath 2.x to 3.x Porting Guide; Symbol Visibility in OpenEXR Technical Introduction to OpenEXR; Standard Attributes; Storing Multi-View Images in OpenEXR Files; Scene-Linear Image Representation; Interpreting OpenEXR Deep Pixels; Theory of Deep Samples; OpenEXR Deep IDs Specification; OpenEXR File Layout; OpenEXR/Imath 2.x to 3.x Porting Guide; Symbol Visibility in OpenEXR
GitHub - afichet/openexr-viewer: Simple viewer for OpenEXR
Florian Kainz Industrial Light & Magic Rod Bogart Industrial Light & Magic Drew Hess Industrial Light & Magic Most images created on a GPU are fleeting and exist for only a fraction of a second. But occasionally you create one worth keeping. When you do, it's best to store it in an image file format that retains the high dynamic range possible in the NVIDIA half type and stores additional data channels, as well. In this chapter, we describe the OpenEXR image file format, give examples of reading and writing GPU image buffers, and discuss issues associated with image display. 26.1 What Is OpenEXR? OpenEXR is a high-dynamic-range image file format developed by Industrial Light & Magic (ILM) for use in computer imaging applications. The OpenEXR Web site, www.openexr.org, has full details on the image file format itself. This section summarizes some of the key features for storing high-dynamic-range images. 26.1.1 High-Dynamic-Range Images Display devices for digital images, such as computer monitors and video projectors, usually have a dynamic range of about 500 to 1. This means the brightest pixel in an image is never more than 500 times brighter than the darkest pixel. Most image file formats are designed to match a typical display's dynamic range: values stored in the pixels go from 0.0, representing "black," to 1.0, representing the display's maximum intensity, or "white." To keep image files small, pixel values are usually encoded as eight- or ten-bit integers (0–255 or 0–1023, respectively), which is just enough toDifference between OpenEXR and OpenEXR Multilayer file format?
Data can be packaged as extra attributes in the image file's header. 26.2.2 The Pixels The pixels of an image are stored as separate channels. With the general library interface, you can write RGBA and as many additional channels as necessary. Each channel can have a different data type, so the RGBA data can be half (16 bits), while a z-depth channel can be written as float (32 bits). 26.3 OpenEXR Data Compression OpenEXR offers three different data compression methods, each of which has differing trade-offs in speed versus compression ratio. All three compression schemes, as listed in Table 26-2, are lossless; compressing and uncompressing does not alter the pixel data. Table 26-2. OpenEXR Supported Compression Options Name Description PIZ A wavelet transform is applied to the pixel data, and the result is Huffman-encoded. This scheme tends to provide the best compression ratio for photographic images. Files are compressed and decompressed at about the same speed. For photographic images with film grain, the files are reduced to between 35 and 55 percent of their uncompressed size. ZIP Differences between horizontally adjacent pixels are compressed using the open-source zlib library. ZIP decompression is faster than PIZ decompression, but ZIP compression is significantly slower. Compressed photographic images are often 45 to 55 percent of their uncompressed size. RLE Run-length encoding of differences between horizontally adjacent pixels. This method is fast, and it works well for images with large flat areas. However, for photographic images, the compressed file size is usually 60 to. Technical Introduction to OpenEXR; Standard Attributes; Storing Multi-View Images in OpenEXR Files; Scene-Linear Image Representation; Interpreting OpenEXR Deep Pixels; Theory of Deep Samples; OpenEXR Deep IDs Specification; OpenEXR File Layout; OpenEXR/Imath 2.x to 3.x Porting Guide; Symbol Visibility in OpenEXRGitHub - afichet/openexr-viewer: Simple viewer for OpenEXR files
AI4, AI5, EPS, PS; continuously rasterized)Adobe PDF (PDF; first page only; continuously rasterized)Adobe Photoshop (PSD)Bitmap (BMP, RLE, DIB)Camera Raw (TIF, CRW, NEF, RAF, ORF, MRW, DCR, MOS, RAW, PEF, SRF, DNG, X3F, CR2, ERF)Cineon/DPX (CIN, DPX with 8-, 10-, 12-, and 16-bpc DPX files, including those with an alpha channel and timecode)Discreet RLA/RPF (RLA, RPF; 16 bpc ; imports camera data)EPSGIFJPEG (JPG, JPE)Maya camera data (MA)Maya IFF (IFF, TDI; 16 bpc )OpenEXR (EXR, SXR, MXR; 32 bpc )PICT (PCT)Portable Network Graphics (PNG; 16 bpc)Radiance (HDR, RGBE, XYZE; 32 bpc)SGI (SGI, BW, RGB; 16 bpc)Softimage (PIC)Targa (TGA, VDA, ICB, VST)TIFF (TIF) 3D Channel effect plug-ins from fnord software are included with After Effects to provide access to multiple layers and channels of OpenEXR files. Learn more about using channels in OpenEXR files.After Effects can also read ZPIC files corresponding to imported PIC files. Learn more about importing and using 3D files from other applications.You can import files of any still-image format as a sequence. Learn about preparing and importing still images. Animated GIF (GIF)Avid DNxHRHEVC (H.265) MPEG-4Support for ARRIRAW files from the ARRI ALEXA or ARRIFLEX D-21 camerasFor more information on ARRIRAW files, see the ARRIRAW FAQ on the ARRI Group website.CinemaDNGNote: CinemaDNG is a subset of Camera Raw. A subset of Camera Raw settings can be accessed via More Options in the Interpret Footage dialog box. Color management for CinemaDNG includes the same color spaces as After Effects existing Camera Raw: Adobe RGB, sRGB IEC619662.1, ColorMatch RGB, and ProPhoto RGB.DVComments
3ds Max can both read and write image files in the OpenEXR format. OpenEXR is both an image file format and a general open-source API for reading and writing such files. OpenEXR files have a filename extension of .exr or .fxr. The best place to look for information on OpenEXR itself is the official Website. The following is taken directly from the OpenEXR home page: “OpenEXR is a high dynamic-range (HDR) image file format developed by Industrial Light & Magic for use in computer imaging applications. “OpenEXR is used by ILM on all motion pictures currently in production. The first movies to employ OpenEXR were Harry Potter and the Sorcerer's Stone, Men in Black II, Gangs of New York, and Signs. Since then, OpenEXR has become ILM's main image file format. “OpenEXR's features include: “Higher dynamic range and color precision than existing 8- and 10-bit image file formats. “Support for 16-bit floating-point, 32-bit floating-point, and 32-bit integer pixels. The 16-bit floating-point format, called “half,” is compatible with the half data type in NVIDIA’s Cg graphics language and is supported natively on their new GeForce FX and Quadro FX 3D graphics solutions. “Multiple lossless image compression algorithms. Some of the included codecs can achieve 2:1 lossless compression ratios on images with film grain. “Extensibility. New compression codecs and image types can easily be added by extending the C++ classes included in the OpenEXR software distribution. New image attributes (strings, vectors, integers, and so on) can be added to OpenEXR image headers
2025-04-19Without affecting backward compatibility with existing OpenEXR applications.” The OpenEXR Bitmap I/O software goes beyond the “standard” OpenEXR format, taking advantage of the flexibility of the format itself. It can write channels and attributes as well as general RGBA data in formats that many OpenEXR file importers cannot understand, due to implementation limits as well as limits to the current set of standards. For example, you can output full-latitude 32-bit floating-point RGBA files. While the OpenEXR API itself fully supports this capability, and these files are written using the standard set of OpenEXR libraries, most applications read only the 16-bit “half” floating-point RGBA files: These are considered “standard” EXR files. Note: When you render with floating-point, 32-bit output, bright areas such as self-illumination or reflections of light sources might appear to be jagged. Configuration File The OpenEXR plug-in stores configuration information in a binary CFG file named fopenexr.cfg. The file is generated automatically the first time you edit the OpenEXR configuration settings, and is updated each time you modify settings when you load or save an EXR file.
2025-04-1575 percent of the uncompressed size. Optionally, the pixels can be stored in uncompressed form. If stored on a fast file system, uncompressed files can be written and read significantly faster than compressed files. 26.4 Using OpenEXR The electronic materials accompanying this book contain the full source code for a simple image-playback program, along with the associated Cg shader code. This section provides excerpts of the code to demonstrate reading an OpenEXR image file, displaying the image buffer with OpenGL, performing a simple compositing operation, and writing the result to an OpenEXR file. 26.4.1 Reading and Displaying an OpenEXR Image The simple code in Listing 26-1 reads an OpenEXR file into an internal image buffer. Note that the OpenEXR library makes use of exceptions, so errors such as "file not found" are handled in a catch block. There is no need to explicitly close the file because it is closed by the C++ destructor for the RgbaInputFile object. Example 26-1. Reading an OpenEXR Image File Imf::Rgba *pixelBuffer;try{ Imf::RgbaInputFile in(fileName); Imath::Box2i win = in.dataWindow(); Imath::V2i dim(win.max.x - win.min.x + 1, win.max.y - win.min.y + 1); pixelBuffer = new Imf::Rgba[dim.x * dim.y]; int dx = win.min.x; int dy = win.min.y; in.setFrameBuffer(pixelBuffer - dx - dy * dim.x, 1, dim.x); in.readPixels(win.min.y, win.max.y);}catch (Iex::BaseExc &e){ std::cerr Once the buffer is filled, the code segment in Listing 26-2 binds the image to a texture for display with a Cg fragment shader (see Section 26.5 for more details). The full program invokes this display code to
2025-04-10And alpha channels, or some subset of those); and (3) a C-callable version of the programming interface that supports reading and writing OpenEXR files from programs written in C. The examples in this chapter use the RGBA C++ interface. 26.2 The OpenEXR File Structure An OpenEXR file consists of two main parts: the header and the pixels. 26.2.1 The Header The header is a list of attributes that describe the pixels. An attribute is a named data item of an arbitrary type. In order for OpenEXR files written by one program to be read by other programs, certain required attributes must be present in all OpenEXR file headers. These attributes are presented in Table 26-1. Table 26-1. Required Attributes in OpenEXR Headers Name Description displayWindow The image's resolution [1] dataWindow Crop and offset pixelAspectRatio Width divided by the height of a pixel when the image is displayed with the correct aspect ratio channels Description of the image channels stored in the file compression The compression method applied to the pixel data of all channels in the file lineOrder The order in which the scan lines are stored in the file (increasing y or decreasing y) screenWindowWidth, screenWindowCenter The perspective projection that produced the image In addition to the required attributes, a program can include optional attributes in the file's header. Often it is necessary to annotate images with additional data that's appropriate for a particular application, such as computational history, color profile information, or camera position and view direction. These
2025-04-22Exr-IO 2: Cryptomatte release Exr-IO 2.00 Press Release (www.exr-io.com) 3d-io has released Exr-IO 2.00, an update for the free OpenEXR plug-in for Adobe Photoshop. For two years we have gathered and studied the requests and wishes from creative artists and studios across the world. They expressed urgent needs for fluent, fast, precise and feature-rich production turnarounds when it comes to editing of professional image material. The new version of the popular Exr-IO file format plug-in includes... Read More Exr-IO v 1.01 update released Christmas Update for Exr-IO 1.01 Patch notes: The features “Split Alpha to all channels” and “Add Alpha to all channels” can now be used simultaneously, giving you a seperate Alpha-layer and Transparency in the other layers. The user interface now displays scaled DPI properly (before background images were corrupted if non-standard DPI values were used) The Photoshop auto-recognition in our installer was improved. Download Exr-IO 1.01: DOWNLOAD Press... Read More Exr-IO Photoshop plugin released! Exr-IO v1.0 released 3d-io announces Exr-IO, a free OpenEXR reader / writer for Adobe Photoshop. Exr-IO (www.exr-io.com) is the bridge between Photoshop and the advanced image file format OpenEXR. It is a free, robust and exact solution for dealing with complex multi-layer pictures: Exr-IO loads all image channels from OpenEXR files into separate Photoshop layers, while preserving exact values, transparencies and dimensions. Exr-IO supports all OpenEXR features and provides... Read More
2025-04-03Florian Kainz Industrial Light & Magic Rod Bogart Industrial Light & Magic Drew Hess Industrial Light & Magic Most images created on a GPU are fleeting and exist for only a fraction of a second. But occasionally you create one worth keeping. When you do, it's best to store it in an image file format that retains the high dynamic range possible in the NVIDIA half type and stores additional data channels, as well. In this chapter, we describe the OpenEXR image file format, give examples of reading and writing GPU image buffers, and discuss issues associated with image display. 26.1 What Is OpenEXR? OpenEXR is a high-dynamic-range image file format developed by Industrial Light & Magic (ILM) for use in computer imaging applications. The OpenEXR Web site, www.openexr.org, has full details on the image file format itself. This section summarizes some of the key features for storing high-dynamic-range images. 26.1.1 High-Dynamic-Range Images Display devices for digital images, such as computer monitors and video projectors, usually have a dynamic range of about 500 to 1. This means the brightest pixel in an image is never more than 500 times brighter than the darkest pixel. Most image file formats are designed to match a typical display's dynamic range: values stored in the pixels go from 0.0, representing "black," to 1.0, representing the display's maximum intensity, or "white." To keep image files small, pixel values are usually encoded as eight- or ten-bit integers (0–255 or 0–1023, respectively), which is just enough to
2025-03-28