Intro
Some years back I wrote a blog post on how to use Lightroom with CG renders. Then Adobe rolled out some updates and broke it. The good news is, there’s a newer way and it’s much less hacky. And Lightroom now has the ability to master images for HDR displays, something few (if any) DCCs can do natively.
Lightroom and Lightroom Classic are editors and asset managers for a library called Adobe Camera Raw(ACR). In addition to handling raw files from regular cameras, it can also handle high dynamic range images, including 3D renders. The only small hiccup is that it does not support OpenEXR file import. But we can convert our images to a format it does support (32bit TIFF) to work around this limitation.
Why Would We Want to do This?
Lightroom is built to take master files of still images, organize them, color grade them, customize metadata, and export them to output referred formats. Some benefits that you won't get by finishing the image in your DCC or compositing tool:
- Lightroom can organize and archive your still render masters, so you can easily go back to them when needed
- Lightroom can easily generate multiple exports from a master file, such as a scaled down image for social media, and a large image for prints.
- Lightroom has very powerful color correction tools, including basic exposure/contrast adjustments, curve adjustments, shadow/mid/highlights color wheels, and the H/S/L color mixing board
- Lightroom supports system ICC color management for your display, so your main OS screen will show the image as accurately as possible, even on wide gamut monitors. Most DCCs and comp tools lack this, as they are designed for video workflows where you'd use a reference monitor while grading
- ACR is the standard rendering library for most professional photography due to how ubiquitous Lightroom and Photoshop are. This can help give your renders the same "look" that real photographs have
- Lightroom can master images for HDR displays, something that is currently not supported in most 3D tools
- Lightroom/ACR supports gamut mapping from big render color spaces to regular everyday output color spaces. Something ACES rather obnoxiously lacks
- Lightroom supports a number of color correction assists, such as soft proofing or clipping warnings
- If you do photography as well, you're probably using Lightroom for that already anyway
Ultimately, we treat stills and video as different mediums due to differences in delivery formats and usage. There's a temptation to treat CG as its own thing, separate from camera stills and camera video. But ultimately, cameras and renderers both produce light data we can make an image from. What matters is whether we are making a video (where we'd use tools like Resolve and a grading monitor) or a print/web still (where we'd use tools like Lightroom and ICC profiles). Where we got the light data from shouldn't matter for that, what matters is the format we are outputting for. Your still render is a raw photo, so let’s treat it like one!
The Workflow
Preparing an OpenEXR using Photoshop
Loading the File
The easiest and most foolproof way to pre-chew your render for Lightroom is to just save your finished render as an OpenEXR file and convert it with Photoshop. Make sure you disable any tonemapping before saving your image. For example, if you're exporting from the Movie Render Queue in Unreal Engine, don't forget to add the Color Settings module and check "disable tone curve"! Also note that Photoshop only supports reading the base RGBA channels in an OpenEXR file. Depending on your application and AOV settings, your beauty pass may not be written there. You may need disable multi-layer/packed EXR files to get a file that Photoshop can read
Once you have your EXR file, simple open it in Photoshop! If you're prompted for a color profile, see the section below on “Color Space Tagging” for what to do. If you are prompted for a transparency type, either option will work. Note that Lightroom’s support for alpha channels is limited. It can use them for cropping bounds, but that's about it. Your final image should not have partially transparent pixels, pixels with RGB values > 0 while having alpha=0, or regions with alpha < 1 that are inside the main image bounds.
Color Space Tagging
Lightroom will assume that any 32bit image is linear sRGB unless an ICC profile states otherwise. If you are not sure what color space your render is using, there is a good chance it is already linear sRGB! In which case, you don’t need to do anything. If Photoshop demands you specify a profile, select “sRGB IEC61966-2.1”. You can skip the rest of this section!
If you are using ACES, your render will be in ACEScg here. Or if you have used some other rendering space, your render will of course be in that color space. In that case, ICC tagging is not optional. You will need to assign a profile with your render color space. If you are using ACES, that would be ACEScg. You can find an ACEScg ICC profile in the files for DisplayCal if you need one, but there’s a good chance your system has one installed already. If you were prompted for a profile on opening the file, just select it there and you’re good. Otherwise, go to Edit > Assign Profile, click through any warnings about appearance changes, and select the ACEScg ICC profile there.
If you are using a different color space like linear Rec2020 or linear P3, I’m going to assume you know what you’re doing with color spaces. Just know you need to assign an ICC profile with the primaries and white point that match your rendering space.
Saving
Save the render as TIFF. Default options are fine, and should result in a float-32 TIFF file.
DO NOT at any point in this process convert your image to 16bit! Doing so will burn in a step(the output transform) that we are trying to do later in Lightroom! The issue is not the bit depth itself, DSLRs use 14bit raw files without an issue, the issue is the burned-in display-referred conversion that occurs when outputting a 16bit TIFF. Always maintain 32bit throughout the Photoshop steps here!
In Lightroom
Importing
Import your tagged render into Lightroom like you would any other file. You can copy it in to your normal RAW storage directory, or simply use the "add" option to link it into your library from where you saved it.
Using the Develop Module
For the most part, these adjustments work the same as they do with regular photographs. You will have access to the full dynamic range and bit depth for adjustments. However, there are a few settings worth covering specifically for this case:
- White Balance - White balance will be in “relative” mode, set both sliders to zero if you want to disable any white point adjustments
- HDR - Lightroom will likely enable HDR editing mode by default for 32bit files. You may or may not want this, see https://blog.adobe.com/en/publish/2023/10/10/hdr-explained If you'd rather edit in the older SDR pipeline, simply disable HDR in the treatment section.
- Highlights and Shadows - Since Lightroom will treat these files as display-referred (but HDR) images, the highlights and shadows sliders will act differently than they do with raw files from a real camera. They will have limited range and some odd shadow lifting behavior
- Detail module - Lightroom uses some sharpening by default unless you've defined a preset to disable it. This is useful for images from a real camera, but it is often detrimental for renders. You should generally start with the "sharpness", "luminance" noise reduction, and "color" noise reduction sliders at 0. Adjust to taste if you need their effects for something
- Lens profiles - There is no lens, this panel should be left disabled/at defaults
- Process version - You must set this to at least "version 3" when working with float TIFF files
Exporting
Since Lightroom is already designed to take raw files and export them for various uses, we can simply export as usual. You can export for any color space you need to target, which is handy when, say, you need to deliver a render for print and there is no ACES ODT for Adobe RGB! And there are tools to scale and compress images, and you can save export templates as presets! You can have a "export render for web" preset that compiles your render for adding to your ArtStation portfolio in one click! (plus a few more clicks to actually upload it. We can't do that directly from Lightroom. Yet)
Advanced Topics
Darktable
If you prefer to use Darktable instead of Lightroom, it can do this as well! This is actually much easier in Darktable than Lightroom, as Darktable supports OpenEXR import and allows user-defined input color spaces for each image. You get all the same benefits of asset management and color grading tools mentioned above. Just import your EXR like any other photo, and be on your way!
Exporting directly from Nuke/Fusion
Fusion and Nuke can directly save 32bit TIFF files, and you can ICC tag them using ExifTool. This can easily be applied to batches of images, and doesn’t require manually taking each one through Photoshop.
Once you have the TIFF written, you can tag with ExifTool using the following command:
exiftool -overwrite_original_in_place "-icc_profile<=pathToICCProfile" "pathToCompositeOutputImage"
For example, using paths from my system...
exiftool.exe -overwrite_original_in_place "-icc_profile<=C:\Users\jason\Documents\Color\ACEScg.icc" "F:\Art\RAW_Storage\2022\01\floodwater_comped_ACEScg_f000.tiff"
Again, note that for linear sRGB renders this tagging is optional as Lightroom will assume that 32bit TIFFs without a profile tag are in linear sRGB by default.
Linear DNG
Lightroom supports RGB-float DNGs as true raw files. However, tools that can convert OpenEXR to Linear DNG are scarce, and I do not have personal experience with any. Photoshop cannot do it. (It is my understanding that newer versions of Photomatix can though?)
If you import your render this way, the highlights and shadows sliders will work properly as Lightroom will see your image as being a true scene-referred raw file. However, there are a few additional points to be aware of:
- Your image may have a different exposure offset and color rendering than it did in the 3D package. You may find that setting the exposure and saturation sliders to something other than 0 produces a more accurate recreation of how the image appeared in the 3D viewport. Your mileage may vary, but try exposure = -0.67 and saturation = -10 as a starting point.
- White balance will be in “absolute” mode. It arguably shouldn’t be, but I believe Adobe does this so that when using linear DNG files with denoised images and HDR/panorama files, photographers do not get confused that they have lost the ability to edit white balance. The no-op setting is 5000K and +10 tint, you can return to this by using the “As Shot” white balance preset