Color management in Blender can be a confusing topic. In this article, we look at some common misconceptions I've encountered while running Blendergrid. I'll also share my recommendations for an efficient color workflow for rendering and post processing.
Screencast where I demonstrate some of the points made below
Blender includes color management settings under the Render tab in the Properties panel. The most important one is the "View Transform" dropdown, which defaults to "Filmic" in Blender 4.0.
Blender Color Management Settings
Let's look at some useful insights about managing your color in Blender.
Misconception: The View Transform (Filmic) Affects the Rendering
Many users think the Filmic setting changes how Blender renders the image. But as the Blender documentation explains: It only handles the conversion going from linear to display space when viewing the render, or when exporting to web images.
The blue dots show where in the pipeline the view transform happens
To see this, you can render with Filmic enabled, then change the View Transform to Standard. You'll see the rendered image update without having to re-render. It's not affected by the color management settings.
Which File Formats Have the View Transform Baked In?
I exported the sample render to a bunch of different image formats. I compared the final image when saving with different View Transforms. Typical web formats like BMP, JPEG, PNG, and TIFF showed changes. This means the color management is baked in.
But, EXR, HDR, and DPX ignored the View Transform, they looked the same across Filmic, Standard, and AgX. This means they store raw color data without applying any color transforms into the file.
Here's a full table of the render saved in all file formats, with file size, and whether it was saved in original rendered linear colorspace:
Image Format | Bit Depth | File Size | Linear Space |
---|---|---|---|
BMP (.bmp) | 8-bit | 5.0MB | No |
Cineon (.cin) | 10-bit | 6.7MB | Yes |
DPX (.dpx) | 8-bit | 5.0MB | Yes |
DPX (.dpx) | 10-bit | 6.7MB | Yes |
DPX (.dpx) | 12-bit | 7.5MB | Yes |
DPX (.dpx) | 16-bit | 10MB | Yes |
HDR (.hdr) | 32-bit | 6.0MB | Yes |
Jpeg (.jpg) | 8-bit | 537KB | No |
OpenEXR (.exr) | 16-bit | 7.3MB | Yes |
OpenEXR (.exr) | 32-bit | 19MB | Yes |
PNG (.png) | 8-bit | 3.3MB | No |
PNG (.png) | 16-bit | 9.1MB | No |
Targa (.tga) | 8-bit | 5.0MB | No |
Tiff (.tiff) | 8-bit | 3.4MB | No |
Tiff (.tiff) | 16-bit | 9.1MB | No |
WebP (.webp) | 8-bit | 510KB | No |
Recommendation: Use EXR for Flexibility
OpenEXR is the most common linear image format. Saving renders as EXR keeps them in linear space. This is useful for post processing in compositing or other software. It also allows re-applying color management later by importing back into Blender.
Comparing EXR Codecs and File Sizes
The only clear downside of EXR is the file size. But, Blender supports various EXR compression codecs. These offer different compression levels and file sizes.
In the previous table where we compare file types, I used the default EXR compression codec in Blender: ZIP. This is a high quality lossless compression codec and can lead to large files.
So to compare, I exported the sample render using all combinations of codecs and bit depths. For reference, the same image saved in 8-bit PNG is 3.3MB, and in 16-bit PNG is 9.1MB!
EXR Codec | Bit Depth | File Size |
---|---|---|
B44 | 16-bit | 4.4MB |
B44A | 16-bit | 4.4MB |
DWAA | 16-bit | 3.1MB |
DWAA | 32-bit | 3.1MB |
DWAB | 16-bit | 3.0MB |
DWAB | 32-bit | 3.0MB |
None | 16-bit | 10MB |
None | 32-bit | 20MB |
PIZ | 16-bit | 7.0MB |
PIZ | 32-bit | 18MB |
Pxr24 | 16-bit | 7.7MB |
Pxr24 | 32-bit | 11MB |
RLE | 16-bit | 9.7MB |
RLE | 32-bit | 20MB |
ZIP | 16-bit | 7.3MB |
ZIP | 32-bit | 19MB |
ZIPS | 16-bit | 7.8MB |
ZIPS | 32-bit | 20MB |
The DWAA/DWAB codecs produced EXR files smaller than 8-bit PNG while preserving highlight details! This makes them a great low-filesize option.
But even the lossless ZIP compression isn't too bad if you use 16-bit EXR files. With this scene, the 16-bit EXR files were smaller than 16-bit PNG files!
With that in mind, this makes the 16-bit PNG format seem like a poor choice for render export. (unless the final delivery format has to be 16 bit PNG, AND you want to take the render straight to the final delivery without any post processing)
Practical Benefits of EXR
I imported some of the exported images back into Blender to look at some of the differences.
The main benefits of the linear formats is that they don't clip the highlights. But also the fact that they are "raw renders" means you can apply any color transform later. Whether it has to be Filmic, AgX, or something else your team or client asks for.
Here's an example of our render saved as PNG (left) and then removing 2 stops of exposure with the compositor, vs. doing the same on an EXR saved render (right):
Reducing exposure of a PNG
Reducing exposure of an EXR
When you import a PNG that was saved with Filmic, the result looks bad an Filmic might get applied twice. So this is clearly a format not meant for compositing.
If you need to save disk space, and you're concerned about the "lossy" EXR codecs that are listed in the settings, check this out: Check the difference between the "lossless" PNG and the original render (left) versus the "lossy" EXR codec and the original render:
Lost color of a 3.3MB PNG
Lost color of a 3.0MB EXR
When we compare the "loss" we get between the lossy EXR codec and "lossless" PNG, we see that the PNG actually loses way more color information! Interesting :)
The main reason for this is that the PNG clips off the brightness when it goes above pure white, and then saves it "lossless", but you will lose a lot if you have some bright areas in your render. EXR keeps the bright areas, then saves this in a "lossy" way if you choose one of those lossy EXR codecs, but the total loss is way less than with the PNG.
Summary
The key things to understand about Blender's color management are:
- View Transforms like Filmic only affect display and output, not the render itself.
- Saving renders as OpenEXR allows you to apply any custom color transform in post, and do color correction/compositing.
- EXR offers great compression options, if you choose PNG because of file size, check out EXR's compression settings.
Following these recommendations will help with an efficient and flexible color workflow between Blender and other software. or other departments you need to collaborate with.
Also for anyone rendering on Blendergrid who is not delivering the final render straight to the client. If you need the flexibility to do some scolor correction or change the color transform: I recommend saving as OpenEXR.