How to Color Grade your 360/ 180 Degree Renders from Unreal Engine

How to use a professional color grading pipeline in Unreal Engine with .exr, OCIO and ACES and color accurate pre-visualisation

Last updated 2 days ago

Overview

The OWL 360 Camera/ Component integrates with Unreal’s OCIO and .EXR tools for use with post production software such as Premier Pro, Davinci or Nuke.

Unreal’s OCIO pipeline comes with a preset config and can be used with the ACES workflow.

Alternatively, you can useDisable Tone Curve without OCIO to preserve the full dynamic color range and prevent the clipping of highlight values, providing an image similar to a RAW workflow in a real world camera.

You can render to .EXR file format with multiple different compression options to ensure color fidelity. EXR is a file type that can encode data as 16-bit for beauty passes. But also 32bit floating point values for compositing channels such as a Z depth pass or a matte.

Unreal Engine also offers a range of color grading tools within the engine, these can be used to achieve cinematic looks that can be rendered out as final pixel beauty passes, bypassing the need for color grading in Post Production software.

Color Grading in Unreal Engine

Unreal Engine has it’s own color grading tools which in many cases will be sufficient to enable final beauty pass rendering direct from Movie Render Queue.

These can be used to decomplicate your production pipeline or can be employed by creators who wouldn’t normally add these passes to improve the look of their content.

Some of the features of more tailored color editing softwares, such as advanced scopes and pre-existing LUTs, are not included.

The workflow is very simple, and just requires a Post Process Volume from which the 360 Camera will inheirit its settings:

N.B. The Exposure value cannot be changed in the color grading panel. It must be set in the OWL 360 Camera/ Component as explained in the main documentation.

  1. Open the Color Grading tab in Window > Color Grading:

  2. Add a Post Process Volume to your scene from Place Actors and set it’s bounds to Infinite Extent (Unbound):

  3. In the Color Grading Tab, you will see both your OWL 360 Camera/ Component and the Post Process Volume:

    1. Only use the PPV as 360 Camera will not inheirit the settings from the color grading panel.

    2. If you are using the 360 Component attached to an Unreal Camera you can select and color grade with that camera and the settings will be inheirited if your Post Process Update Location is set to Camera Component (in the Details panel of the 360 Component).

  4. Tick one of the color panels to adjust it’s settings using the color wheel. The Tabs and Dials correspond to different sections of the Post Process Volume Color Grading panel, but are easier to use due to the color visualisation.

  5. Any adjustments you make will automatically update your Post Process Volume and carry through to the final Movie Render Queue output:

Unreal Set-Up for External Color Grading

OCIO

OCIO is a Library of LUTS and color spaces designed for converting colors between devices and systems. Color spaces are used to ensure that color is exactly right when viewed on a screen or program.

Since Unreal Engine 5.2 the OCIO Plugin includes a configuration file with a selection of commonly used color spaces.

To use OCIO in Unreal, you need to create a Config Actor which stores the different color spaces you want to convert to/ from.

You can then use this config in your Editor Viewport, OWL 360 Camera/ Component and Movie Render Queue to preview and render the exact color output you need:

  1. Enable the OpenColorIO Plugin in Edit> Plugins, restarting if prompted.

  2. Right click in the Content Browser and search Miscellaneous> OpenColourIO Configuration

  3. In the OCIO Actor you can modify the input and output color spaces you want to use, as well as the config file that has the instructions on how to use them:

    1. Configuration File: Unreal provides a lightweight version of ACES which may be sufficient for your needs but otherwise you will should replace it with a comprehensive library such as this (click Reload and Rebuild after you have changed the file destination to your target library).

    2. Desired Color Spaces: Is where you chose the color space you want to work in:

      1. Utility Linear Rec 709 sRGB is the default working color space for Unreal Editor so you need this option as it will typically be what you convert from in your renders.

        1. If your monitor works in a different colorspace and you have already modified your Project Settings then select that option instead.

      2. If you are using the ACES color workflow then you also should select ACES> ACEScg so you can select this as your output color space in Movie Render Queue.

      3. You can add other working color spaces here as well if you need (they can be selected between both in your preview and in your render settings).

    3. Desired Display-View: Is where you select the color space of your monitor/s or display:

      1. sRGB is the standard for computer monitors and web content.

      2. If you have a specialist monitor/ display then you can select it from the list.

      3. You can add more than one option here if you will be toggling between different color spaces. You can select between these in Viewport/ 360 Camera / Movie Render Queue.

    4. Context: This is an advanced setting which lets you define specific shots for which you want to use different color spaces, this is normally reserved for high-end studio pipelines.

Real-Time Preview

The OWL 360 Camera/ Component can be used with OCIO so that you can preview your content in the correct color space while working on it.

Monitor Color Space

Although Unreal does it’s calculations in Linear colorspace, most computer monitors show color in sRGB, so Unreal automatically converts its colors to Rec 709 sRGB in Editor.

  1. If your computer monitor is set up in a different colorspace, you can change the working color space in your Project Settings. If you change this you will also need to select the same in your Desired Color Space in your OCIO config Actor. In most cases you don’t need to change this option.

Viewport and 360 Camera Preview

  1. To change the colorspace in the Viewport you just select the OCIO config Actor you have set up in the View Mode menu, and then select the color spaces you need from its options:

  2. To change the color space in the 360 Camera/ Component, you load the OCIO config Actor in the Details panel in Color> OpenColorIO Configuration, select the color spaces you need and then tick Enable OCIO:

  3. If you haven’t selected OCIO in your Viewport, you should instantly see the difference in colors in your 360 Camera preview:

Rendering: ACES Color Workflow (OCIO)

The ACES (Academy Color Encoding System) color workflow enables compatibility between many different types of cameras and graphics software to ensure color consistency through the creation pipeline.

It’s easy to use this workflow in Unreal, either with the default OCIO config files or using a more comprehensive ACES library.

You set up your OCIO and preview your output as explained above.

  1. In Movie Render Queue settings, select .exr:

  2. In the Color Output section in Movie Render Queue settings:

    1. Enable OCIO: Ticked

    2. Confguration Source: Use the OCIO config Actor you set up above (this determines the color space options you have available).

    3. Transform Source: This should be the colorspace you have set in your Unreal Project Settings. The default is Utility Linear Rec 709 sRGB.

    4. Transform Destination: This is the colorspace you want to render in. In ACES this is normally ACEScg.

    5. Disable Tone Curve: This should be ticked to remove the Unreal Tonemapper (which will otherwise affect the colors of your output).

  3. In your OWL 180/ 360 Rendering settings, go to Rendering> Optimisations and ensure that is set to at least 16bit so that colors are not crushed.

    1. 32bit is sometimes necessary for very subtle gradients if color banding is visible but will significantly increase render times:

  4. Now when you render, you will output to your selected colorspace.

Rendering: Disable Tone Curve (no OCIO)

In Movie Render Queue, we can use EXR output with Disable Tone Curve to preserve the original Linear colorspace of Unreal before it is converted to sRGB for your monitor, giving a wider colour gamut for more color conversion options at a later stage.

This option doesn’t require any OCIO configuration:

  1. In Movie Render Queue settings, select .exr:

  2. In the Color Output section in Movie Render Queue settings, open the OCIO Configuration drop down and

    1. Untick Enable OCIO.

    2. Tick Disable Tone Curve:

  3. In your OWL 180/ 360 Rendering settings, go to Rendering> Optimisations and ensure that is set to at least 16bit so that colors are not crushed.

    1. 32bit is sometimes necessary for very subtle gradients if color banding is visible but will significantly increase render times:

  4. Your render is now ready for color correction in post production software.

Post-Production Workflows

Using a LUT from External Software in Unreal Engine

Unreal’s documentation lists this as a workflow that is not recommended for precise color accuracy because of it’s application after Unreal’s Tonemapper. This workflow may also lead to a lack of flexibility due to the reliance on the Look Up Table asset.

However, you can use the process below to get your Look Up Table configured correctly for Unreal giving you color precision in your final render without needing external post process software.

Look up tables can be imported in to Unreal Engine to achieve an approximation of a film look from existing software.

Sometimes it can be preferrable not to use Post Production Software, in which case, this is a way to get final pixel from Unreal Engine with color looks from external software.

Importing a LUT into Unreal for a Render

  1. Download the Color Neutral LUT from Unreal Engine’s Documentation.

  2. Import the LUT in to a sequence within Premier Pro or Davinci and apply any color grading to this image. For Example the FujiFilm Stock below:

  3. In DaVinci, right click in the Timeline Preview Viewport and select Grab Still:

  4. In the Gallery Tab, Export this Still as a Jpeg.

    1. You will need to crop this image to 256×16 in another image editing program:

  5. Drag the Image into your Unreal Content Browser:

  6. Double click the image and ensure that:

    1. Mip Gen Settings are set to NoMipMaps,

    2. Texture Group is set to ColorLookupTable and

    3. Compression Settings is set to UserInterface2D (RGBA8):

  7. With your OWL360Camera or Post Process Volume selected, search LUT and apply your Look Up Table Texture to the Color Grading LUT section:

  8. The resulting image will be an approximation because of Unreal Engine’s Tone Curve so some settings will need to be adjusted:

    1. For this image it was necessary to set Tone Curve Amount to 0; and

    2. To increase the Gamma of the Shadows by 1.4 to acheive a comparable image.

Previewing your Render Ouput

  1. To preview LUTs from your Unreal render, use an EXR with a Disabled Tone Curve:

  2. In Davinci, convert the image to sRGB, followed by any further color adjustments:

  3. Apply any color grading to this clip after the VFX I/O conversion:

  4. Apply the same colour adjustments to your look up table clip by dragging the Look up table image in to the same sequence, then in the clips panel of the Color Grade tab select the LUT clip, then right click the color graded clip and select Apply Grade:

  5. Remove the VFX Conversion node from this clip:

  6. Export this LUT using the same Grab Still and Export process as above.

  7. Import and apply this LUT in the same way as before, remembering to make any final adjustments in the Color Grading window:

  8. Once you are happy with the colors you can then progress to final pixel render.

Converting EXRs in Davinci

Once rendered, EXRs can be brought in to Post Production Software as a single sequence and color graded with full color precision.

  1. In Davinci, open a new project and go to the Cut panel. Bring your still or sequence in to any selected bin:

  2. Right click on the newly imported clip and select Create New Timeline Using Selected Clip..:

  3. Check the timeline settings and press Create:

  4. Find your clip in the newly created timeline in the bottom right of the Cut or Edit Panels:

  5. You may need to disable the Alpha Channel on your clip. To do this right click on the clip and select Clip Attributes:

  6. Set the Alpha mode to None and click OK:

  7. Go to the Color tab and ensure Nodes is selected in the top right.

  8. Select the node and use Alt+S to duplicate it:

  9. To add the sRGB tone curve and re-gain the image as it appears out of the standard UE viewport, add the conversion from Linear to sRGB from the VFX IO section of the LUTS menu:

  10. Converting the image to sLog2 can be useful for replicating a RAW output from a camera, this kind of output responds to additional LUTs in the best way because of the uncompressed and flat look of the footage. Using a RAW image as a basis can make color grading consistently a lot easier across multiple shots. To convert from EXR to RAW use the VFX IO Linear to sLOG conversion from the LUTs menu:

  11. Press Alt+S again to make another new node, this one will be where to add any LUTs or color correction:

  12. Selecting LUTs in the top left corner will give you preset LUTs to choose from:

  13. Hover over the LUT to preview it’s effect or drag it on to the last node in the list to apply it:

  14. Compare multiple LUTs by Duplicating a node, applying a LUT then selecting a node and pressing Shift+D to Disable one node at a time. This way you can see the effect each node is having:

  15. Use the Color Wheels and Curve Controls to fine tune a color grade:

Converting EXRs in Premier Pro

  1. Open a new project or Bin in Premier Pro navigate to the Bin Panel, right click and select New Bin:

  2. Double Click on the new Bin and drag your footage or still in to it:

  3. Right Click and select New Sequence from Clip then double click on the newly created Timeline to open it:

  1. To disable the Alpha Channel right click on the clip and select Modify > Interpret Footage > Ignore Alpha Channel checkbox.

  2. In the Lumetri Color tab, set Input LUT to None, override Color Space to Rec.709 and Color Setup to Wide Gamut (No Tonemapping) with the Output Color Space to Rec.709. This will restore the colours to something comparable to the Unreal Viewport:

  3. In the Effects Panel under Lumetri Presets you can find color grading presets and LUTs to choose from:

  4. Drag a LUT on to your clip in the timeline to apply it:

  5. Use the Effect Controls panel to further adjust your color grade:

  6. You can also use the Lumetri Color effect to use the Lumetri color grading adjustments without a preset-existing LUT applied.