Skip to main content

Post Processing Effects

info

The before/after examples in this section are intentionally exaggerated so changes are easy to see. In real maps you’ll usually use much smaller values.

Masks

A mask controls where a post processing layer applies. In the Post Processing Editor, masks are tonal masks: they select pixels based on brightness (shadows, midtones, highlights), not based on world position or map geometry.

Think of it like: “apply this effect mostly to the dark parts of the image” or “only affect highlights”. Masks can be applied to any post processing effect.

If you want post processing to change based on map position (for example: indoor vs outdoor, tunnels vs open areas), you need to use different post_processing_volume entities and assign different .vpost presets to them.

How the mask works

  • White means the layer applies strongly.
  • Black means the layer does not apply.
  • Gray means the layer applies partially.

So if the mask targets highlights, only bright pixels will be strongly affected, while darker pixels are mostly untouched.

Visual explanation

The editor visualizes masks as a curve.

  • X-axis: pixel brightness (luminosity), from dark (left) to bright (right)
  • Y-axis: mask strength, from 0 (no effect) to 1 (full effect)

Below are the three default mask types:

Highlights mask
Affects mostly bright pixels (right side of the curve).Highlights mask curve
Midtones mask
Affects mostly medium brightness (center of the curve).Midtones mask curve
Shadows mask
Affects mostly dark pixels (left side of the curve).Shadows mask curve

Mask controls

  • Presets (Shadows / Midtones / Highlights)
    Quick starting points for which brightness range you want to target.

  • Luminosity Shifts the selection toward darker or brighter pixels. Ranges from 0 to 255.

  • Width Controls how broad the selected brightness range is. Narrow width is more selective, wide width affects more of the image. Ranges from 0 to 100.

  • Shape Controls how soft or harsh the transition is between affected and unaffected pixels. Ranges from -100 to 100.

  • Invert Mask
    Flips the mask so it affects the opposite range (e.g. invert a highlights mask to affect everything except highlights).

You can only customize the tonal selection with Luminosity/Width/Shape, but you can’t paint or import a mask.

Effects

Levels

Adjusts the input/output tonal range of the image. Levels lets you define what should count as “black” and “white”, and how midtones are distributed in between. This is commonly used to fix washed-out images, increase contrast, or brighten shadows.

levels layer settings

Settings:

  • Channel: Selects which color data the adjustment affects:

    • RGB: Applies the adjustment uniformly to all channels (changes overall brightness/contrast without intentionally shifting the color balance).
    • Red / Green / Blue: Applies the adjustment to only that channel. This can change brightness and shift color balance (e.g., increasing the Red channel pushes colors toward red (cyan-ish tones lose their cyan tone); increasing Green pushes toward green (reducing a magenta tone); increasing Blue pushes toward blue (reducing a yellow tone).)
  • Settings per Channel:

    • Input levels (remaps the incoming values of the input image):

      • Black (0 to 255): Sets the input value that becomes pure black. Increasing it makes dark areas become black sooner (more shadow detail is lost). This darkens the image.
      • Gamma: Adjusts midtones. Lower gamma brightens midtones; higher gamma darkens midtones. This mainly affects midtones rather than the extremes.
      • White (0 to 255): Sets the input value that becomes pure white. Decreasing it makes bright areas become white sooner (more highlight detail is lost). This brightens the image.
    • Output levels (limits the final values of the output image):

      • Black (0 to 255): Raises the minimum output value (blacks become dark gray, producing a more “faded” look). This brightens the darkest parts of the image.
      • White (0 to 255): Lowers the maximum output value (whites become slightly darker, reducing the peak brightness). This darkens the brightest parts of the image.

Examples (Levels)

Input Black = 30
Before
Levels Input Black 30
Input White = 220
Before
Levels Input White 220
Gamma = 0.70
Before
Levels Gamma 0.70
Output Black = 30
Before
Levels Output Black 30
Output White = 220
Before
Levels Output White 220
Gamma = 1.40
Before
Levels Gamma 1.40

Saturation / Vibrance

Adjusts overall color intensity.

saturation/vibrance layer settings

Settings:

  • Vibrance (-100 to 100): Increases or decreases color intensity in a more selective way. It affects weaker/less saturated colors more than already strong colors, so the result is more natural and less likely to oversaturate the image. At -100, the image becomes very washed out, but (depending on the input) still keeps a small amount of color.
  • Saturation (-100 to 100): Increases or decreases color intensity uniformly across the image. Higher values make all colors more intense; lower values move the image toward grayscale. At -100, the image becomes fully grayscale (black and white).

Examples (Saturation vs Vibrance)

Saturation +100
Before
Saturation +100
Vibrance +100
Before
Vibrance +100
Saturation -100
Before
Saturation -100
Vibrance -100
Before
Vibrance -100

Brightness / Contrast

Adjusts overall brightness and contrast.

brightness/contrast layer settings

Settings:

  • Brightness (-100 to 100): Uniformly shifts the overall image brightness up or down. Increasing it makes the whole image brighter. Decreasing it makes it darker.
  • Contrast (-100 to 100): Changes the difference between dark and bright areas. Increasing contrast makes shadows darker and highlights brighter. Decreasing contrast reduces the difference and makes the image look flatter / more washed out.

Examples (Brightness vs Contrast)

Brightness +50
Before
Brightness +50
Contrast +50
Before
Contrast +50
Brightness -50
Before
Brightness -50
Contrast -50
Before
Contrast -50

Color Lookup

Applies a lookup table (LUT) to remap the final image’s colors. Conceptually, a LUT is a big “input color --> output color” mapping: every pixel color is looked up in the table and replaced with the corresponding output color. In Source 2 this LUT is stored as a lookup image texture (e.g., .tga, .jpg), not a .cube file.

You normally don’t create LUTs by hand (painting/editing the lookup texture directly), because the image encodes a structured 3D color grid. Instead, the usual workflow is:

  1. generate an identity/reference LUT,
  2. apply your color grading adjustments (Curves / Color Balance / Levels / etc.) to that reference image in an editor,
  3. save it and load it back as the lookup texture.

If you’re already achieving the look you want using other post-processing effects in the editor, you don’t need a LUT. Color Lookup is mainly useful as a single, reusable “final grade” you can swap, share, and iterate on quickly (edit externally --> hit Reload).

The default/reference lookup texture is a 32×32×32 LUT. It can be exported using the Create Reference Image button.

color lookup layer settings

Settings:

  • Lookup Image File Name: Path to the LUT image used for color remapping.
  • Reload: Re-imports the LUT after you edited/overwrote the file on disk.
  • Create Reference Image: Generates an identity/reference LUT image (a tiled 2D grid) you can grade in an image editor and then load back in.

Example (Color Lookup)

This example uses the color lookup table of de_inferno. It was extracted using the Source2Viewer.

Before
After

Color Balance

Shifts the image’s color tint by adding/removing complementary colors in a selected tonal range. Unlike Levels (which mainly remaps brightness/contrast per channel), Color Balance directly pushes colors toward Red/Cyan, Green/Magenta, and Blue/Yellow while trying to keep the overall tone structure intact. Naturally, it also works using complementary colors.

color balance layer settings

Settings:

  • Range: Selects which tonal range is affected:

    • Shadows: mostly affects dark areas
    • Midtones: mostly affects mid-brightness areas
    • Highlights: mostly affects bright areas
      Range uses three radio buttons (not a dropdown), but each range behaves like a separate channel.
  • Settings per Range:

    • Cyan ↔ Red (-100 to 100): shifts between cyan (less red) and red
    • Magenta ↔ Green (-100 to 100): shifts between magenta (less green) and green
    • Yellow ↔ Blue (-100 to 100): shifts between yellow (less blue) and blue
  • Preserve Luminosity: Attempts to keep the perceived brightness similar while shifting color. This is a global toggle (not per range).

Examples (Color Balance)

Shadows: Cyan (-80)
Before
Shadows Cyan (-80)
Shadows: Blue (+80)
Before
Shadows Blue (+80)
Midtones: Red (+80)
Before
Midtones Red (+80)
Midtones: Green (+80)
Before
Midtones Green (+80)
Highlights: Yellow (-80)
Before
Highlights Yellow (-80)
Highlights: Magenta (-80)
Before
Highlights Magenta (-80)

Color Tint

Applies a tint color over the image. A warm yellow/orange tint here can quickly achieve the classic (if a bit ridiculous) “Mexico” movie look.

color tint layer settings

Settings:

  • Tint Color: The color that is applied as an overlay/tint to the image. It uses the normal color selection tool.
  • Strength (0 to 100): Controls how strongly the tint affects the image. Higher values make the tint more dominant; lower values make it more subtle.
  • Preserve Luminosity: Keeps the image’s brightness more consistent while applying the tint, so the effect mainly shifts color rather than significantly brightening or darkening the image. Otherwise, darker colors tint the image less, but rather darken it uniformly.

Examples (Color Tint)

Warm Tint - RGB 255 122 0 - Strength 60
Before
Warm tint (RGB 255 122 0, Strength 60)
Cool Tint - RGB 0 167 255 - Strength 60
Before
Cool tint (RGB 0 167 255, Strength 60)

Hue / Saturation

Shifts hue and adjusts saturation/lightness for a selected channel. This is useful for targeted color tweaks (e.g. reducing overly saturated reds) without changing the entire image equally.

It’s similar to Saturation / Vibrance, but more selective. Saturation / Vibrance affects the whole image, while Hue / Saturation can target specific color ranges (Reds, Yellows, Greens, etc.) and also allows shifting hue and adjusting lightness for just that range.

The selected Channel (e.g., Magentas) is treated as the original target range. The tool first finds pixels that are magenta-ish in the original image (with smooth blending into neighboring hues), and then applies the Hue/Saturation/Lightness changes to those pixels. When selecting a big Hue shift, those pixels may no longer look magenta - but they are still affected because they matched the original Magentas range. Hue wraps around the circle, so +180° and −180° are equivalent.

The behavior of the Lightness slider seems closer to an HSL-style model (Hue/Saturation/Lightness) than HSV, but the exact internal math may differ (I’m not 100% sure).

Example:
If you select Magentas and set Hue = +90, a magenta pixel (roughly #FF00FF) rotates 90° forward on the hue wheel - from 300° --> 30° - becoming an orange-ish color (around #FF8000).
If you set Hue = -90, the same pixel rotates backward - from 300° --> 210° - becoming a bluish-cyan color (around #007FFF).

This can be simulated well here (to visualize Hue rotations):

Settings:

  • Channel: Selects which color range is affected:

    • Master: Applies to all colors.
    • Reds, Yellows, Greens, Cyans, Blues, Magentas: Applies mainly to that color range (with smooth blending into neighboring colors).
  • Settings per Channel:

    • Hue (-180 to 180): Rotates the selected colors along the color wheel (changes “what color” they are).
    • Saturation (-100 to 100): Increases or decreases color intensity for the selected colors.
    • Lightness (-100 to 100): Increases or decreases brightness for the selected colors (can make a color range appear lighter or darker without affecting other ranges as much).

Examples (Hue / Saturation)

Magentas: Hue +90
Before
Magentas Hue +90
Master: Hue +90
Before
Master Hue +90
Reds: Saturation -80
Before
Reds Saturation -80
Yellows: Saturation +80
Before
Yellows Saturation +80
Greens: Lightness +40
Before
Greens Lightness +40
Yellows: Lightness -40
Before
Yellows Lightness -40

Curves

Adjusts tonal response using editable curves. Curves let you remap how dark, mid, and bright values are distributed by changing the response curve of a channel. This is commonly used for fine-grained contrast control (e.g., an “S-curve” for more contrast) or for color shifts when editing individual channels.

RGB overview (read-only)
Shows all three curves at once for reference, but cannot be edited.Curves settings (RGB overview)
Single channel editor
Shows one curve (Red/Green/Blue) and allows editing by adding and dragging points.Curves settings (single channel editor)

Settings:

  • Channel: Selects which curve(s) are shown:
    • RGB: Displays all three color curves together for reference. The black curve (applied to all channels) can be edited here.
    • Red / Green / Blue: Displays the selected channel’s curve only. You can edit it by clicking/dragging to bend the curve.

How to edit:

  • Clicking on the curve adds a control point. The curve is defined by points: the fixed endpoints (bottom-left = pure black, top-right = pure white) and any points you add.
  • When you drag a point, the curve changes between that point and its neighboring points (or, if there are no neighbors on one side, between the point and the nearest endpoint). This lets you adjust a specific tonal region without reshaping the entire curve.
  • Adding more points gives more fine control, because you can “lock” parts of the curve in place while changing others (e.g., keep shadows close to the original line while adjusting only midtones).

How to read the curve:

  • The horizontal axis represents the input value (dark --> bright).
  • The vertical axis represents the output value after the curve is applied.
  • Raising part of a curve makes that tonal range brighter for that channel; lowering it makes it darker. Editing individual channels can also shift colors (e.g., raising Red can reduce a cyan cast in the affected tonal range).

Example (Curves)

The curves shown here are doing a color grade, not just “more contrast”.

  • Red curve: fully above the diagonal --> adds red (warmer look).
  • Green curve: fully below the diagonal --> removes green (adds magenta).
  • Blue curve: above the diagonal around the middle only, otherwise below --> adds a bit of blue mainly in midtones.

This results in a generally warmer / more orange-magenta tint, with more blue in the midtones (barely visible).
This example is exaggerated for clarity. In actual grading you want curves that only slightly deviate from the diagonal.

Before / After
Before
After
Curve used
Curves graph used for the example

Tone Mapping

Controls the overall tone mapping curve (how brightness rolls off from shadows to highlights).

Linear (S1)
Straight/neutral responseTone Mapping preset: Linear (S1)
Low Contrast
Flatter tonal separationTone Mapping preset: Low Contrast
High Contrast
Stronger tonal separationTone Mapping preset: High Contrast
Hable (U2/HLVR)
Filmic highlight roll-offTone Mapping preset: Hable (U2/HLVR)

Settings:

  • Presets: Already defined curves.

    • Linear (S1): Very direct response. Bright areas clip sooner and more harshly.
    • Low Contrast: More compressed/flat look. Less difference between dark and bright areas.
    • High Contrast: More separation. Darker shadows and brighter highlights (more “punch”).
    • Hable (U2/HLVR): Film-like curve. Smoother highlight roll-off (less harsh clipping).
  • Exposure Bias (stops) (-4 to 4): Overall brightness before tone mapping.
    Positive = brighter, negative = darker. 1 stop = twice as bright (or half as bright in the other direction).

  • Shoulder Strength (0 to 1): Controls what happens in the highlights.
    Higher = highlights are compressed more (bright spots get toned down and roll off smoothly).

  • Linear Strength (0 to 1): Controls how “straight” the midtones behave.
    Higher = midtones respond more directly (less compression).

  • Linear Angle (0 to 1): Midtone slope.
    Higher = stronger midtone contrast; lower = softer midtone contrast.

  • Toe Strength (0 to 1): Controls what happens in the shadows.
    Higher = shadows are compressed more (darker areas change more gently near black).

  • Toe Numerator (0 to 1): Fine control of the shadow “toe” shape.
    Tweaks how quickly shadows lift out of black (steeper vs softer transition).

  • Toe Denominator (0 to 1): Fine control of the shadow “toe” shape.
    Works with Toe Numerator to shape the shadow transition (steeper vs softer).

  • White Point (linear scale) (0 to 32): Controls where the highlight roll-off starts.
    Lower = highlights start compressing earlier (bright areas are reduced sooner).
    Higher = allows brighter highlights before compression kicks in.

Examples (Tone Mapping Presets)

Linear (S1)
Before
Linear (S1)
Low Contrast
Before
Low Contrast
High Contrast
Before
High Contrast
Hable (U2/HLVR)
Before
Hable (U2/HLVR)

Bloom

Adds bloom/glow around bright areas. Bloom works by extracting pixels above a brightness threshold, blurring them, and blending the result back onto the image to create a soft glow. It is an effect used in many AAA games.

bloom layer settings

Settings:

  • Blend Mode: Controls how the bloom is combined with the original image:

    • Additive: Adds light on top of the image (strongest/most “glowy”).
    • Screen: Brightens in a softer way than additive (less likely to blow out).
    • Blur: More of a hazy/softened effect; can look like general glare.
  • Bloom Strength (0 to 1 for Screen, 0 to 10 for Additive & Blur): Overall intensity of the bloom effect.

  • Brightness Threshold (0 to 10): Minimum brightness required for a pixel to contribute to bloom. Higher values restrict bloom to only the brightest highlights.

  • Brightness Fade (0 to 10): Smooths the threshold edge. Higher values make the transition into bloom softer; lower values make it more sudden.

  • Skybox Bloom Strength (0 to 1): Separate bloom intensity applied to the skybox (since the sky is usually bright, normal bloom settings shouldn’t be applied to it blindly).

Multi-resolution blur controls:
Bloom is composed from several blurred highlight layers at different downsampled resolutions (1/2 --> 1/32). Higher-res layers create tight, edgey glow; lower-res layers create wide, soft haze when upscaled.

  • Blur Strength (per resolution, 0 to 1):
    Sets how much each layer contributes. Increase 1/2–1/4 for tighter halos; increase 1/16–1/32 for big, dreamy glow. If the image looks washed out, lower the 1/16–1/32 strengths first.

  • Blur Tint (per resolution):
    Color-multiplies each layer. Use neutral/white for natural bloom, or tint selectively (often a subtle tint on a lower-res layer) for stylized warm/cool/neon glow.

Examples (Bloom)

Bloom - Weaker (Screen, Strength 0.25, Threshold 1.4, Fade 1.0)
Before
Bloom - Weaker (Screen, Strength 0.25, Threshold 1.4, Fade 1.0)
Bloom - Stronger (Additive, Strength 2.0, Threshold 0.8, Fade 2.2)
Before
Bloom - Stronger (Additive, Strength 2.0, Threshold 0.8, Fade 2.2)

Vignette

Darkens (or tints) the image toward the edges, drawing focus toward the center.

vignette layer settings

Settings:

  • Strength (-1 to 1): Overall vignette intensity (negative = darker edges, positive = brighter edges).
  • Radius (0 to 3): Size of the unaffected center area before the falloff starts.
  • Feather (0 to 1): Softness of the transition from center to edges (higher = smoother).
  • Roundness (0 to 1): Shape of the vignette (lower = more oval/square, higher = more circular).
  • Tint: Color applied to the vignette. Note: In practice this appears to only have an effect when Strength is negative (darkening vignette).
  • Center X / Center Y (-1 to 1): Moves the vignette center point.
  • Recenter: Resets the center back to the image center.

Examples (Vignette)

Vignette - Subtle (Strength -0.25, Radius 1.8, Feather 0.70, Roundness 0.90)
Before
Vignette - Subtle
Vignette - Strong (Strength -0.65, Radius 1.3, Feather 0.55, Roundness 0.95)
Before
Vignette - Strong
Vignette - Bright Edges (Strength +0.35, Radius 1.6, Feather 0.65, Roundness 0.90)
Before
Vignette - Bright Edges
Vignette - Tinted (Strength -0.55, Radius 1.5, Feather 0.65, Roundness 0.90, Tint #00A7FF (Azure / Blue))
Before
Vignette - Tinted

Local Contrast

Boosts micro-contrast (contrast at small detail scales) to make textures and edges look clearer. It increases contrast around existing detail, which can look like sharpness.

local contrast settings

Settings:

  • Strength (-2 to 2): Main intensity of the effect.
    Higher = more “crisp/clear”. Lower = less contrast on small details (can look softer/less sharp).

  • Edge Strength (-2 to 2): How much the effect targets edges specifically.
    Higher = stronger edge pop / more punch. Lower = less visible edges.

  • Vignette Start (-2 to 2) / Vignette End (-2 to 2): These define a mask for the effect.

  • Vignette Blur (0 to 1): Softness of that mask transition.
    Higher = smoother blend / stronger Vignette. Lower = less Vignette.

Example (Local Contrast)

Local Contrast - After (Strength 1.20, Edge Strength 1.40)
Before
Local Contrast - After (Strength 1.20, Edge Strength 1.40)