An in-depth look at 3D LUTs in Pixelmator Pro
Pixelmator Pro now includes support for LUTs and, in this tutorial, we’ll explain what exactly these files are and how to use them.
Last updated
Pixelmator Pro now includes support for LUTs and, in this tutorial, we’ll explain what exactly these files are and how to use them.
Last updated
First of all, what is a LUT? Imagine if the filters from your favorite filter app could be shared to other editors and even video editing apps so you could get the same look everywhere. That’s a basic (although very simplified) way of looking at LUTs.
LUTs are very common in the film industry and, equally often, they’re used not just creatively – to get a certain look and feel – but also to match the look of different cameras or correct unwanted color shifts. We’ll be focusing mostly on using LUTs for creative effect.
Quick overview of digital color
Before we get into the finer details of how LUTs work, let’s start with a quick recap of how digital color works. Using the three additive primary colors – red, green, and blue – you can create a much wider range of colors, pretty much every color you could need.
You do this by varying the intensity of each primary color. Imagine you have three colored lights: red, green, and blue. Every digital color can be expressed in RGB values, by specifying the intensity of each color using numbers from 0 to 255, for example. With 256 intensity values for each color, we’d be using an 8-bit-per-channel color depth.
To create pure red, you’d just shine the red light at full intensity and turn off the other two lights. To create yellow, you would shine both the red and green lights at 100% intensity. To create orange, you’d shine the red light at 100% intensity and the green light at 50%.
In 8-bit RGB terms, red is RGB(255,0,0). Yellow is RGB(255,255,0). Orange would be RGB(255,127,0).
8 bits? What’s that?
It’s called 8-bit color because, when counting in binary, 256 values (from 0 to 255) require 8 bits of data. 0 in binary is the same as the value 0 in the decimal (a.k.a. base-10) system that most us are used to. But the value 2 in the decimal system is expressed as 10 in binary. 3 in decimal is 11 binary, and 255 is 1111111. There are 8 ‘1s’, therefore 8 bits of data are needed to express this value.
LUT stands for “lookup table” and a LUT file is actually a simple text file that contains a list (or table) of colors. Using that list, an app can find out (i.e. look up) that pure black, which is RGB(0, 0, 0) should be changed to RGB(5, 1, 1), a slightly faded black with a red tint. Instead of 8-bit or 16-bit integer values, LUT files often use floating-point notation – values from 0.0 to 1.0. In fact, if we open a LUT file exported from Pixelmator Pro in the TextEdit app, we’ll see just that – a long list of colors in fixed-point notation.
It should be noted that LUT files don’t include every possible color. With 16-bit color depth, there are over 281 trillion colors, which is an impractically huge amount. Instead, a number of samples – 32 or 64, for example – are taken along each each axis (R, G, and B) and other values are approximated from these. A 64x64x64 LUT might sound quite small, but such a lookup table contains 262,144 lines (64^3) in total and is around 7 MB in size.
The most important thing to note is that 3D LUTs have nothing to do with 3D computer graphics. The “three dimensions” refer to the fact that each color is sampled along three axes – the red, green, and blue channels mentioned above.
1D LUTs also exist, which are a little simpler and adjust the intensity values of one channel at a time. For example, the color orange is RGB(255, 127, 0) and dark green is RGB(0, 127, 0). So changing the intensity of the green channel will have an effect on both the oranges and the greens (as well as other colors), therefore 1D LUTs are less precise than 3D LUTs. However, they can also be imported and used in Pixelmator Pro.
Find the Custom LUT adjustment
To use LUTs, you’ll need to turn on the Custom LUT adjustment in the Color Adjustments tool. LUTs work just like any other color adjustment, so they can be applied to individual layers or layer groups.
Applying a LUT and finding the built-in LUT collection
Once you turn on the adjustment, you’ll see there’s a pop-up menu and an Intensity slider. You’ll notice Pixelmator Pro includes a collection of 48 LUTs, ranging from cinematic look LUTs to technical LUTs for grayscale conversion, and photo filters.
Also, notice that when you hover over a LUT in that pop-up menu, you’ll see a handy live preview of it in your image!
Applying your own LUTs
To apply your own custom LUT, you’ll need to open the pop-up menu and click Choose Custom LUT. The LUT you choose will automatically be imported to your Pixelmator Pro LUT library and will then always be available for you to use.
Intensity slider
A LUT works like any other adjustment, so it will be combined with other adjustments if they’re active. Using the Intensity slider, you can fine-tune how strongly the LUT is applied.
Converting a LUT into color adjustments
One really great feature of LUTs in Pixelmator Pro is that you can convert a LUT into adjustments. To do this, Pixelmator Pro uses the machine learning algorithm that powers ML Enhance, ML Match Colors, and our individual ML adjustments to intelligently reverse-engineer the LUT into Pixelmator Pro adjustments.
To convert a LUT into color adjustments, apply the LUT and choose Convert LUT into Adjustments from the Custom LUT pop-up menu.
Exporting adjustments as a LUT
One of the biggest advantages of using LUTs is that they work across many different image, video, and even 3D apps. If you’ve edited an image using some color adjustments in Pixelmator Pro and would like to apply the same adjustments to different images or videos in other apps, you export the adjustments as a LUT. To do that, open the More menu next to the ML Enhance button and choose Export Adjustments as LUT. You’ll also find this option when Control-clicking presets in the Presets browser.
Tip Almost every adjustment in Pixelmator Pro is also supported in LUT files, except for the three adjustments below the Custom LUT adjustment (Sharpness, Vignette, and Grain) because these change the colors of specific areas of images, rather than every pixel of a specified color.
Managing your LUT collection
Managing LUT presets work a little differently from other presets in Pixelmator Pro – you can manage your collection directly in the Finder. If you turn on the Custom LUT adjustment, open the pop-up menu and choose Reveal in Finder, you’ll automatically be taken to the folder in which LUTs are stored. Simply put your LUTs there, organizing them into folders if you’d like them to appear in sub-menus in Pixelmator Pro.
Let’s take a quick look at one real-life workflow that would involve using LUTs – color grading a still from video footage using Pixelmator Pro and LUTs.
When editing video footage, you’ll often want to first correct its colors and then apply a specific look to the footage. If you enjoy using the color adjustments in Pixelmator Pro, you can export a frame from Final Cut Pro, edit it in Pixelmator Pro, and then apply those changes to your entire footage using a LUT.
To start, open some video in Final Cut Pro and export a frame by choosing File > Share > Save Current Frame. Export the frame in PNG or TIFF format and open it in Pixelmator Pro.
After opening the frame in Pixelmator Pro, adjust its colors – feel free to use either the presets, or make your own manual edits and once you’ve made your changes, open the More menu next to the ML Enhance button and choose Export Adjustments as LUT.
Finally, open Final Cut Pro again and apply the Custom LUT effect to your footage. In the Video Inspector, open the LUT pop-up menu, click Choose Custom LUT, and find the LUT you exported earlier from Pixelmator Pro.
Once the LUT has been applied, the look of your footage will be transformed according to the edits you made in Pixelmator Pro. Awesome!
Pixelmator Pro includes extensive support for AppleScript and we’ve also made it possible to apply custom LUTs to files and images using AppleScript.
To make it easier to get started, we created a quick example script that can open a series of images in any supported format, apply a custom LUT to each one, and save the changes back to the same image whenever possible or another format for any formats that cannot be exported to. Here’s the script: