How to use a color grading LUT in Unity URP, Unreal Engine 5 and Godot 4
A LUT (lookup table) is a color recipe: every input color maps to an output color. In video tools it ships as a .cube file. Game engines want the same recipe baked into a flat image, a strip of small squares, and every engine wants it slightly different. That is why a LUT that looks right in Unity can look broken in Godot. I am a video editor and colorist and I bake my looks for all three; this is what I learned.
The short version
| Engine | Strip size | Where it goes |
|---|---|---|
| Unity URP | 1024x32 (32 squares of 32x32) | Volume, Color Lookup |
| Unreal Engine 4 / 5 | 256x16 (16 squares of 16x16) | Post Process Volume, Color Grading LUT |
| Godot 4 | 1024x32, imported as Texture3D | WorldEnvironment, Adjustments, Color Correction |
The squares are slices of a color cube. Engines do not agree on which way is up inside each slice, so the same look needs a different file per engine. Always start from the engine's own neutral LUT (one that changes nothing): if the neutral strip changes your image, the layout or the import settings are wrong.
Unity URP
- Drop the PNG into your project and select it. In the Inspector: Texture Type Default, sRGB (Color Texture) off, Generate Mip Maps off, Wrap Mode Clamp, Filter Mode Bilinear, Compression None. Click Apply.
- Open your URP Asset (the Universal Render Pipeline Asset your project uses). Under Post-processing set LUT size to 32, so it matches the strip height.
- In the scene: GameObject, Volume, Global Volume. Create a new Profile, then Add Override, Post-processing, Color Lookup. Tick Texture, drag the PNG in, and set Contribution.
- On your Camera, under Rendering, turn Post Processing on.
The usual error: "Invalid lookup texture". It almost always means sRGB is on, or the LUT size in the URP Asset does not match the strip height.
Unreal Engine 5 (and 4)
- Import the 256x16 PNG and open it. Set Texture Group to ColorLookupTable and save. If you see banding in smooth gradients, a common fix is Compression Settings set to an uncompressed format.
- Add a Post Process Volume and tick Infinite Extent (Unbound) so it covers the whole level.
- In its details: Color Grading, Misc, Color Grading LUT. Pick your texture and lower Color Grading LUT Intensity to taste.
Godot 4
- Select the PNG in the FileSystem dock and open the Import tab. Set Import As Texture3D, Slices Horizontal 32, Vertical 1, and click Reimport. If Godot asks to restart the editor, accept.
- Select your WorldEnvironment node, open its Environment, go to Adjustments and tick Enabled.
- Drag the Texture3D into Color Correction.
Godot has no intensity slider for the LUT itself. To soften a look, bake a softer version, or balance it with the Brightness, Contrast and Saturation sliders in the same Adjustments section.
So it does not look fake
- Fix exposure and white balance first, then the look. A LUT exaggerates whatever is already wrong.
- Start at 50 to 70% intensity (Contribution in Unity, Intensity in Unreal).
- Check skin and UI. A strong teal and orange look can turn skin orange and push your menus off brand. If your UI is rendered after post processing, it stays clean.
- Compare against the neutral strip with a quick toggle, so you judge the look and not your memory.
Making your own strip from a .cube
If you already have a look in DaVinci Resolve or Premiere as a .cube, you can bake it into each engine's strip with a small script: sample the cube at every grid point and lay the slices out in the order that engine expects. Getting the slice order wrong is the number one reason a LUT looks broken, so test it with the neutral first.
Try a cinematic LUT in your engine, free
Teal Gold Lite, graded on footage I shot myself, already baked as Unity 1024x32, Unreal 256x16 and Godot 4 strips, plus the .cube for video tools. Pay what you want from zero. The full pack has 8 looks in every format.
Get the free LUT on itch.io See the 8-look pack