UNREAL LOOKDocumentation Choose the curve. Keep control.
UNREAL LOOK / USER GUIDE

A different curve.
Your rendering.

Explore eleven tonemappers inside Unreal Engine. Tune a look in Preview, then compile it into the production rendering path when it is ready.

11tonemappers
4AgX looks
You choosewhen to compile
About this guide

These instructions describe the plugin’s current workflow. Recorded GPU validation covers Unreal Engine 5.0.3, D3D12 / SM5 and SDR rendering. Reference fidelity and support for other configurations have separate limits, explained below.

01 / GET STARTED

From installation to your first look

  1. Install and enable the plugin

    Install the plugin build that matches your Unreal Engine version. Enable UnrealTonemapper in the editor’s Plugins window, then restart the editor when requested. A source distribution also requires a compatible C++ toolchain and a successful project build.

  2. Open Tonemapper Studio

    Use the plugin’s editor toolbar action. Plugin settings are also available under Project Settings → Plugins → Unreal Tonemapper.

  3. Enable Preview and choose a curve

    Select a tonemapper in the sidebar. For AgX, choose a look as well. Enable Preview to see your draft in the editor viewport and adjust its parameters.

  4. Compile when satisfied

    Click Compile Tonemap. After a successful compilation, Preview switches off and its checkbox clears. The viewport displays the newly compiled version.

Start with stable exposure.

Use a consistent camera, scene and exposure while comparing curves. Automatic exposure can make two settings look more similar—or more different—than the tonemapper alone.

02 / WORKFLOW

Preview freely. Compile deliberately.

The plugin keeps two states: your editable draft and the last compiled snapshot. Changing a setting saves the draft; it does not automatically replace the compiled tonemapper.

01

Draft

The tonemapper and parameter values you are editing.

02

Preview

Shows the draft immediately, with an editor-only PREVIEW frame.

03

Compiled

The committed curve used when Preview is off and when cooking.

What you doWhat the viewport showsPlugin requests compilation?
Enable PreviewCurrent draftNo
Change a curve or parameter in PreviewUpdated draftNo
Disable PreviewLast compiled snapshotNo
Edit with Preview disabledLast compiled snapshotNo
Click Compile TonemapNew compiled snapshot after completionYes

What happens during compilation?

The explicit request waits if Unreal’s shader compiler is busy. Preview remains active while the request is pending and switches off after successful completion. Compile is disabled while compilation is pending, and when your draft already matches the committed snapshot.

Closing the window with uncompiled changes

Yes / CompileCompile the draft, wait for completion, then close.

No / Keep draftKeep the draft for later and return to the last compiled rendering.

CancelKeep Studio open and continue editing.

The PREVIEW watermark

A thin frame repeats PREVIEW along all four viewport edges, leaving the center clear. Its default opacity is 0.6. It is an editor overlay, separate from the color processing; it does not appear in scene captures, standard or high-resolution screenshots, or packaged games. Watermark style settings are kept in code and configuration rather than exposed in Studio.

Engine compilation is separate

Unreal may still compile shaders after installation, a renderer change, an update or a cache miss. This engine activity does not mean the plugin has promoted your draft into the compiled snapshot.

03 / THE CURVES

Find a starting point

Each operator offers a different response to brightness and color. The descriptions below identify the implementation and its limits; a familiar name alone does not guarantee a match to another application.

Native Unreal

Default (ACES)

Uses Unreal’s native FilmToneMap with the engine’s color processing.

A useful baseline. This does not certify a complete ACES transform.

4 looks

AgX

An analytic polynomial approximation with exposure-range controls. Choose True AGX, Golden, Punchy or ACES Like.

The historical “True AGX” label does not imply a verified Blender or OCIO match.

Uncharted 2 structure

Hable

A rational filmic curve with adjustable shoulder, linear section, toe and white normalization.

Uses an exposure bias of 2 and a default white point of 11.2; custom grading changes the response.

Scalar approximation

ACES Fitted (Narkowicz)

A compact scalar fit using Narkowicz’s published five coefficients.

Distinct from a complete ACES transform and from Stephen Hill’s matrix fit.

Per-channel compression

Reinhard

A simple curve, with optional extended white-point control. White Point 0 selects the classic form.

Independent channel compression can change RGB ratios.

Luminance compression

Reinhard (Luma)

Applies the curve to luminance and preserves RGB ratios at that stage. Supports an extended white point.

Later processing can still clip out-of-gamut colors.

Khronos structure

Khronos PBR Neutral

Uses the published operator structure and constants, designed around linear Rec.709 input and output.

Reference comparisons require neutral grading, saturation and output-gamma settings.

Artistic variant

Lottes Filmic

The plugin’s existing Lottes-inspired curve, with contrast, shoulder, toe and toe-exponent controls.

Its coefficient construction differs from the author’s anchored formulation.

Parametric filmic

Uchimura

Adjusts the toe, linear section and shoulder using the author’s parametric structure.

The corrected toe blend was checked against the author’s graph; full independent GPU reference validation remains separate.

Legacy-inspired

UE4 Legacy

A custom rational filmic response or a linear response with optional S Curve contrast.

Not matched to the complete pipeline of a specific Unreal release. S Curve applies only with Filmic Mode disabled.

Source-inspired

Source Engine (Valve)

A custom style using linear clipping followed by Unreal’s display encoding.

Does not reconstruct Source’s complete HDR, exposure or contrast pipeline.

04 / PARAMETERS

Small changes, controlled results

Studio shows the selected operator’s controls. Open More settings for additional curve and output controls. Hover a parameter for its specific tooltip.

ControlHow to use it
Min EV / Max EVSet the operator’s exposure range. AgX uses a log-exposure range; the other operators use the shared black-point and range-scale grading before their curve.
Pre exposureShift exposure before the curve. The default 0 adds no bias.
SaturationUse 1 for unchanged saturation, 0 for monochrome, or larger values for a stronger effect.
Output gammaUse 1 for no additional artistic gamma adjustment. Unreal still performs the final display encoding; 2.2 is not a neutral “enable sRGB” setting.
White pointControls white normalization in Hable and extended compression in Reinhard. The meaning is operator-specific.
Convert from ACEScgAgX’s optional AP1-to-Rec.709 conversion. Its implementation omits D60-to-D65 white adaptation; it is not a complete OCIO transform.

Reset one value

A small reset icon appears beside a numeric or boolean parameter only when it differs from its native default. It restores that parameter alone. Its space stays reserved so the input does not move. Resetting a value updates the draft without requesting compilation.

Reset the current tonemapper

Reset to Default restores the active operator’s parameters. For AgX, it restores the active look’s parameters, output gamma and Force SDR. The separate look reset returns the look selection to True AGX. Reset actions remain draft edits until you compile.

Built-in starting values

Shared grading for non-AgX operators starts at Min EV −20, Max EV 0, Pre exposure 0 and Saturation 1. Output gamma starts at 1.

True AGX, Golden and Punchy start at Min EV −12.47393, Max EV 4.026069 and Pre exposure 0. ACES Like starts at −6.5 and 0.5, with saturation 0.9 and per-channel slope/power 1. Conversion defaults follow whether the project uses ACES AP1.

Hable’s default A–F coefficients are 0.15, 0.50, 0.10, 0.20, 0.02 and 0.30, with white point 11.2. Reinhard white point defaults to 0. Uchimura starts at P 1, a 1, m 0.22, l 0.4, c 1.33 and b 0. Lottes starts at contrast 1.6, shoulder 0.977, toe 0.18 and toe exponent 0.22.

05 / COLOR MANAGEMENT

Choose the working space intentionally

The sidebar selector changes Unreal’s working color space. It is not a display-gamma switch or a substitute for the tonemapper. The available choices are:

sRGB / Rec.709Rec.2020ACES AP0ACES AP1 / ACEScgP3 DCIP3 D65Custom
A working-space change requires an editor restart.

The selector uses Unreal’s renderer setting and offers to restart. Until restarted, the footer’s startup color space identifies the space active for the current session. Selecting Custom does not define its primaries; configure those through Unreal’s renderer settings.

For reliable comparisons, hold the working space, exposure, white balance and display output constant. AgX’s conversion toggle does not provide complete color management, and disabling it applies a Rec.709-oriented operator directly to AP1 values.

06 / RENDERING

Understand what is measured

Preview ↔ compiled

Do the two paths agree?

Preview evaluates the production curve with live parameters into a LUT. The compiled path uses constants and the same curve functions. Both feed the native tonemapping lookup.

The recorded SDR run passed 20 cases on Unreal Engine 5.0.3 / D3D12 / SM5. Each case compared all 32,768 cells of a 32³ LUT. The maximum accepted and observed difference was one 10-bit LUT code; four graded profiles matched exactly.

Operator ↔ reference

Does it match the original author?

This requires an independent reference with the same input space, exposure, parameters and output encoding. Preview agreement alone cannot establish it.

The source audit checks selected formulas and identifies artistic variants. It does not certify every operator against an independent GPU reference, Blender, OCIO, HDR luminance or a calibrated display.

What stays in Unreal’s pipeline?

Exposure, bloom, vignette, film grain, artistic LUT blending, post-tonemap materials and output transfer functions keep their native order. Preview is not a second curve applied to an already display-encoded image.

A useful comparison procedure

  1. Fix the camera, manual exposure, working space and white balance.
  2. Use neutral ramps alongside saturated primaries, secondaries and skin colors.
  3. Keep grading neutral and disable grain, adaptation and temporal effects for measurements.
  4. Compare Preview with the compiled result at the same settings.
  5. For external fidelity, compare the isolated operator and then the full pipeline against a pinned reference configuration.

Internal validation also exercises manual compilation, draft persistence, Studio controls and resets. Those checks describe the tested build; they do not extend the compatibility claim to untested engines or displays.

07 / PRODUCTION

Build and package with the committed look

AreaDocumented scope
Recorded rendering validationUnreal Engine 5.0.3, D3D12 / SM5, SDR native 32³ LUT.
C++ build validationEditor Development and standalone Game Development builds passed in the tested environment.
Other engine versions / renderersUse a matching plugin distribution and validate it for your target. The measurements above do not establish support.
HDRThe plugin contains a project-specific HDR extension. SDR parity results do not validate HDR displays or absolute luminance.
Packaged renderingUses cooked shaders and forces Preview off. A successful C++ build alone is not a packaged visual validation.

Before cooking

Compile the desired look explicitly and inspect the result with Preview disabled. Cooking uses the committed constants. A pending draft should not be treated as the production look.

Moving a source project

Keep Config/UnrealTonemapperCompiled.ush with the source project: it records the last compiled constants separately from the draft configuration. On startup, the plugin uses that snapshot without deliberately promoting draft changes. A cooked executable uses its cooked shaders and does not need this file at runtime.

Installed engine files

The plugin uses a generated project-local shader mirror and a virtual source mapping. It does not require editing the installed engine’s shader files. Validate plugin interactions if another extension also changes the same engine shader mapping.

08 / HELP

When something looks wrong

My settings change, but the viewport does not.

Check Preview first. With Preview disabled, the viewport intentionally retains the last compiled snapshot. Enable Preview to inspect the draft or click Compile Tonemap to commit it.

Compile is disabled.

The draft may already match the compiled snapshot, or a compilation may still be pending. Make a change and wait for existing shader work to complete. Resetting all edited values can make the draft clean again.

Unreal compiles shaders even though I did not click Compile.

First use, updates, cache misses and renderer configuration changes can trigger engine shader compilation. This is separate from the plugin’s explicit draft-to-compiled action.

Preview and compiled rendering seem different.

Confirm that the same draft was compiled, then compare with fixed exposure, camera, post-process settings and working space. Wait for compilation and exposure adaptation to settle. After changing the working color space, restart the editor. Recorded parity measurements cover the tested SDR setup, not every output configuration.

The project will not open, or reports missing modules.

Confirm the plugin build matches the project’s exact engine version. For a source plugin, close the editor, install the required Unreal C++ toolchain and rebuild the editor target. Inspect the first compiler error or editor-log error before retrying; stale binaries from another engine version are not a compatible build.

My AgX result does not match Blender.

This plugin uses an analytic polynomial approximation with custom controls. It is not a certified Blender/OCIO implementation. A meaningful comparison needs a fixed OCIO configuration, compatible color conversions, matching exposure and identical output encoding.

The working-space selector changed, but the footer did not.

The footer reports the space used at editor startup. Restart the editor to apply the changed renderer configuration correctly.

I cannot see the PREVIEW frame in an exported image.

The frame is intentionally restricted to the editor viewport. It is omitted from screenshots, scene captures and packaged games.

Where do I change the watermark style?

Watermark appearance is kept in plugin code and configuration. Studio hides those style controls to keep the editing interface focused.

09 / FURTHER READING

The original publications

These references explain the named operators. Their inclusion does not imply endorsement or certify the plugin’s complete rendering pipeline.

Unreal Look · By SutivuBack to top ↑

Unreal Engine and other product names belong to their respective owners. No affiliation or external color-pipeline certification is implied.