Skip to main content

Tonemappers

Tonemapping converts the scene's high-dynamic-range lighting into the range the displayed image can represent. A transform determines how shadows gain contrast, how highlights compress instead of abruptly clipping, and how saturated colors behave as they become brighter. Different operators can give the same lighting a substantially different appearance without changing the illumination itself.

Exposure sets the brightness presented to that transform; color grading shapes the result further. Compare operators at a consistent exposure before adjusting individual controls, and inspect bright emissive surfaces as well as neutral materials and shadow detail.

Features > Tonemappers selects the operator and its controls. Changes update live without rebaking. Spectral's selectable operators use the desktop, non-stereo path; mobile and VR should not be assumed to share this feature. See the platform matrix.

The selection and each operator's Strength and White Point are saved with the level. Changing the look in one map does not overwrite another map's tonemapper settings. Save the level after tuning. Once matching shader hooks are installed, selecting a different operator does not require reinstalling the hooks.

Saving and reusing a look​

Each level remembers a separate profile for every operator. Switching from AgX to GT7 and back restores that level's AgX values rather than using the values you just set for GT7.

To reuse a look, use Settings > Import settings from other level. This imports the tonemapper selection and all operator profiles together with the other Spectral level settings; it is not a tonemapper-only preset. Save level settings as default makes the current settings the starting point for unconfigured levels in this project. Already configured levels keep their own settings.

When opening an older map without per-level tonemapper data, Spectral initializes its look from the existing project tonemapper configuration. Save the map to keep its per-level settings. See Level settings and defaults.


Tonemapper​

Default: Unreal ACES (Default).

Open the selector and choose an operator. The checkmark identifies the current selection. There is no separate Apply button in this panel.

These are response choices, not different lighting solvers. They do not add bounce light or improve a noisy bake.

Unreal ACES (Default)​

Uses Unreal's native filmic response, including its blue-correction handling. This is the baseline for a project authored around Unreal's normal look. Native film settings can still influence it, so changing the Spectral selector is not a reset of the whole post-process configuration.

AgX - Default​

Uses the base AgX transform to compress a broad brightness range with a log-space contrast curve. Compare bright colored lights and emissive surfaces to see how their colors approach highlights. Its exposure calibration differs from other operators, so the apparent brightness can change when switching.

AgX - Golden​

Adds the warm AgX look. It changes channel balance, the brightness curve, and saturation rather than merely increasing exposure. Use it when that warm bias is intentional; it is not the neutral AgX setting.

AgX - Punchy​

Adds stronger contrast and saturation to the AgX response. It makes color differences more pronounced, but can change the relationship between dark surfaces and bright accents. Compare shadow readability as well as colorful highlights.

GT7​

Uses the GT7 SDR curve with highlight-color handling. The implementation combines a shadow curve, a near-linear middle region, and a compressed highlight shoulder, then reduces highlight chroma toward the bright end. It is not a switch that changes the project to HDR output.

Filmic (Hable)​

Uses a filmic curve that compresses shadows and highlights differently from midtones. Spectral exposes Strength and White Point, not separate controls for the shadow toe or highlight shoulder.

Khronos PBR Neutral​

Applies a neutral response with a small dark-value adjustment, peak compression, and gradual desaturation in bright highlights. It is useful when comparing material color without choosing the deliberately warm or punchy AgX looks. It still changes highlights; “neutral” does not mean no tone mapping.

Reinhard​

Compresses each nonnegative RGB channel independently using its value divided by one plus that value. Bright inputs approach the display limit gradually instead of hitting a hard clamp. Because channels are compressed separately, bright saturated colors can change their balance.

Reinhard - Luminance​

Uses a shared denominator based on the color's luminance rather than a separate denominator for each channel. This keeps the RGB proportions together through that operation. Individual channels can still run beyond the display range and be constrained later, so compare saturated highlights in the final output.

Max Chroma​

Leaves nonnegative RGB values unchanged while their largest channel is at most 1. Above that, it divides all three channels by the largest channel. This brings the peak to 1 while keeping their proportions.

It retains color ratios rather than using a filmic shoulder. Very bright colors with the same proportions can converge to the same result, losing brightness differences between them.

Linear Clamp​

Clamps channels directly into the 0-to-1 range. There is no gradual highlight-compression curve. It provides a simple comparison, but values above the limit lose their differences and channels can clip independently.

Strength​

Default per operator: 1. Range: 0 to 1.

Blends from the linear-light response toward the selected operator. 1 uses the full selected response; 0 removes that operator's strength.

This is not a blend from Unreal ACES into another operator. Reducing Strength can therefore produce a different result from switching back to ACES.

Each operator remembers its own Strength. Switching away and back restores that profile's tuning.

White Point​

Default per operator: 1. Accepted range: 0.01 to 32; slider range: 0.1 to 8.

Sets the input brightness normalized to 1 before applying the tone curve. A larger value maps a larger scene-lighting input to that reference level; a smaller value brings the reference lower.

The selected curve can still map that reference below display white. White Point controls brightness normalization, not color temperature.

Each operator stores its own White Point alongside Strength. Keep exposure fixed while comparing values or it becomes difficult to tell which control caused the change.

White Point is applied to the operator branch before the Strength blend. At Strength 0, the result follows the original linear input rather than that adjusted branch.

Lighting stays unchangedInfo

Tonemapping changes the displayed response. It does not rewrite lightmaps, probes, material base colors, or scene-light intensities. Check the underlying lighting separately before compensating for a bake problem here.

See Comparing tonemappers for a controlled comparison.