Create 3D LUTs for DaVinci Resolve with DisplayCAL

An ICC profile fixes color inside color-managed applications — but DaVinci Resolve, like most video software, is not fully color-managed in that sense. The professional answer is a 3D LUT: a calibration baked into a lookup table that Resolve applies to everything on that display. DisplayCAL generates these LUTs from the same measurements as a normal calibration, and the free version of Resolve loads them fine. This guide walks through the whole pipeline: measuring, building, exporting, and applying the LUT.

You should already be comfortable with a basic DisplayCAL calibration. If not, do the quickstart first — everything here assumes DisplayCAL-py3 3.9.19 with ArgyllCMS 3.5.0 installed and your instrument working. The installers are on the download page.

What Is a 3D LUT (and Why DisplayCAL Makes Good Ones)

A 3D LUT is a three-dimensional grid that maps every input color to a corrected output color. Unlike a simple 1D curve (which only fixes brightness per channel), a 3D LUT corrects the full color volume: hue shifts, saturation errors, and gamut mismatches all get fixed at once.

DisplayCAL’s advantage is that it builds the LUT from measured data — hundreds or thousands of real readings from your specific display — rather than from a generic factory preset. The result is a correction tailored to your panel, your backlight’s current state, and your chosen target colorspace.

What You Need

  • DaVinci Resolve (the free version works; no Studio license needed for loading display LUTs).
  • A working DisplayCAL setup with a colorimeter, per the quickstart guide.
  • A display you can dedicate to grading — ideally the monitor Resolve’s viewer sits on, measured in the room lighting you grade in.
  • Your target colorspace decided in advance: Rec.709 for standard SDR delivery, DCI-P3 for cinema work, or sRGB for web. The LUT converts your display to this target, so pick the one matching your delivery.

Step 1 — Decide the LUT Size and Target

In DisplayCAL, open the 3D LUT tab. Two choices matter most:

  • LUT size: DisplayCAL offers 17³, 33³, and 65³ grids. 17³ builds fast and is fine for a first test; 33³ is the practical standard for grading work; 65³ is maximum quality but slow to generate and heavy to load. Start with 33³.
  • Source and destination: the source is your measured display profile; the destination is your target colorspace (Rec.709, DCI-P3, sRGB). DisplayCAL computes the transform between them.

Set the LUT format to .cube — the format Resolve reads natively.

Step 2 — Choose Your Pattern Source

Accurate measurement needs accurate test patches. You have two solid options:

  • On-screen patterns (simplest): DisplayCAL draws the patches full-screen on the display being measured. This works well for SDR. Make Resolve’s viewer occupy that display, or simply measure the display directly.
  • madVR as pattern generator: if you already use madVR in your playback chain, DisplayCAL can drive patterns through it. This is the more rigorous route when the signal path itself (GPU output, HDMI chain) is part of what you want to characterize.

Either way: disable the OS night light, HDR mode, and any “vivid” picture presets on the display before measuring. The LUT can only correct a stable, native-behaving panel.

Step 3 — Measure the Display

  1. On the Profiling tab, generate a testchart suited to LUT work — a few hundred patches minimum. More patches mean a smoother LUT; 500–1000 is a good working range.
  2. Warm up the display for 30 minutes, hang the instrument, and run the measurement exactly as in a normal calibration.
  3. When profiling finishes, you have an ICC profile describing your display. The 3D LUT tab will use this as its source.

Do not skip the warm-up or measure with the room lights changing — LUTs are only as good as the measurements behind them.

Step 4 — Build and Export the LUT

  1. Switch to the 3D LUT tab. Confirm the source profile (your fresh measurement), the destination colorspace, the size (33³), and the .cube format.
  2. Click Create 3D LUT. Generation takes from under a minute (17³) to several minutes (65³).
  3. Save the .cube file somewhere you will find it — for example a LUTs/DisplayCAL folder. Name it descriptively: LG_C2_Rec709_33.cube beats lut_final2.cube.
  4. Optional but recommended: generate a verification report in DisplayCAL to see the residual Delta E after the LUT is applied. If the numbers are bad, re-measure before blaming Resolve.

Step 5 — Apply the LUT in DaVinci Resolve

Resolve offers two places to load a display calibration LUT. Pick the one matching how you work:

  • Per-monitor output LUT (recommended): DaVinci Resolve > Preferences > System > Video Monitoring — assign the .cube as the LUT for your grading display. It then applies to the viewer on that display across all projects.
  • Per-project: Project Settings > Color Management > Lookup Tables — load the LUT and assign it as the display LUT. Useful when different projects target different colorspaces.

After loading, check a known reference image. Skin tones and neutral grays tell you immediately whether the LUT is doing its job. And remember: the LUT corrects the display, so grade with it always on — toggling it mid-session invalidates every decision you made.

How to Verify Your LUT

Do not trust a LUT you have not checked. Load it in Resolve and open reference material you know intimately — a portrait with natural skin tones, a grayscale step wedge, and saturated brand colors if you have them. Then run DisplayCAL’s verification measurement with the LUT active: an average Delta E under 1.0 is excellent, under 2.0 is good for most delivery work, and anything much higher means you should re-measure before using the LUT on real jobs. Verification takes minutes and is the difference between a calibration you can defend and one you merely hope is right.

HDR 3D LUTs: An Honest Status Note

HDR display calibration via 3D LUT is the frontier, and honesty matters here more than hype. DisplayCAL’s HDR 3D LUT support is actively improving — version 3.9.18 specifically improved HDR detection on Windows 11 22H2 and later — but HDR pipelines add variables (tone mapping, metadata handling, OS-level HDR switches) that SDR workflows simply do not have.

Practical advice for today:

  • For SDR delivery (still the bulk of real-world work), the workflow above is mature and reliable. Use it with confidence.
  • For HDR, treat DisplayCAL’s HDR LUT features as powerful but verify-everything territory: measure, generate, and then check the result against reference material before trusting it on a paid job. Keep your SDR pipeline as the fallback until you have validated the HDR one on your exact hardware and OS.
  • Watch the DisplayCAL-py3 GitHub repository for HDR-related fixes — this is where improvements land first.

Common Mistakes to Avoid

  • Measuring with OS calibration still active. If an ICC profile with calibration curves is already loaded, you are measuring a corrected display and the LUT will double-correct. Start from the display’s native state (temporarily unload the profile) for LUT measurements.
  • Wrong target colorspace. A Rec.709 LUT on a DCI-P3 timeline (or vice versa) looks subtly wrong everywhere. Match the LUT to the delivery spec.
  • Changing the display afterwards. New brightness setting, new picture preset, firmware update — any of these invalidates the LUT. Re-measure when the display changes.
  • Grading with the LUT off. The LUT is part of your monitoring chain, not an effect. If it is not loaded, you are not seeing what you think you are seeing.

For problems during measurement — instrument not found, driver issues, crashes — the troubleshooting guide has the fixes. And if you are new to the whole calibration idea, the guides index lists everything in learning order.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *