Levels

Adjust image levels with input/output range, gamma, and per-channel control.

What it does

Levels remaps the tonal range of an image. Pull the input black and white points in to punch up contrast, push the output black and white points to flatten it, bend the midtones with Gamma. Channel Mode set to Per-Channel gives red, green, blue and alpha their own black point, white point and gamma curve instead of one shared curve.

The remap applies to the same colour values whether the input is a rendered raster, a filled shape, or colour carried on points, so the result matches wherever it is plugged in.

When to use it

ParameterTypeDefaultWhat it does
content_inColor Field or Field or Volume or Primitives or Collection or GPU Geometry or Geometries or Number or Vec2 or Vec3 or Color or Number[] or Color[]——
channel_modeString"Master"Master adjusts all RGB channels together, Per-Channel allows independent control. One of: Master, Per-Channel.
in_blackNumber0Input black point - pixels at or below this level become black
in_whiteNumber1Input white point - pixels at or above this level become white
gammaNumber1Gamma correction - < 1 brightens midtones, > 1 darkens midtones
out_blackNumber0Output black point - remaps black to this level
out_whiteNumber1Output white point - remaps white to this level
r_in_blackNumber0Red channel input black point
r_in_whiteNumber1Red channel input white point
r_gammaNumber1Red channel gamma
g_in_blackNumber0Green channel input black point
g_in_whiteNumber1Green channel input white point
g_gammaNumber1Green channel gamma
b_in_blackNumber0Blue channel input black point
b_in_whiteNumber1Blue channel input white point
b_gammaNumber1Blue channel gamma
a_in_blackNumber0Alpha channel input black point
a_in_whiteNumber1Alpha channel input white point
a_gammaNumber1Alpha channel gamma
auto_levelsBooleanfalseAutomatically compute black/white points from histogram (ignores manual values when enabled)
auto_clipNumber0.100Percentage of pixels to clip at black/white ends (0.1% = ignore extreme outliers)
pre_clampBooleantrueClamp input values to 0-1 range before applying levels
post_clampBooleantrueClamp output values to 0-1 range after applying levels
invertBooleanfalseInvert the output (1 - value) for RGB channels
spatial_strengthField—Spatial field controlling where the effect applies (0=bypass, 1=full)
strengthNumber1Effect strength / wet-dry (0 = no effect, 1 = full). Editable, wirable, keyframable.

Gotchas

Per-Channel is the only mode that touches alpha. In Master mode RGB share one curve and alpha passes through untouched, so reshaping the alpha channel requires Per-Channel.

Invert flips RGB only. Alpha is never inverted, in either channel mode.

Pre-Clamp and Post-Clamp default on, holding values inside 0–1 before and after the remap. Turn Pre-Clamp off when deliberately feeding out-of-range HDR values into the input curve.

Worked example

  1. Add a Levels node and feed it an image.

  2. Drag Input Black up and Input White down to increase contrast.

  3. Nudge Gamma below 1.0 to brighten midtones, or above 1.0 to darken them.

  4. Switch Channel Mode to Per-Channel and adjust the Blue row alone to cool the shadows without shifting red or green.

See also

Colour Correct · Channel · Color Space · Colour fields