Table of Contents

Render Pipeline Passes

This page lists all render pipeline passes and their functionality.

AO Pass

Generates a screen-space ambient occlusion (SSAO) texture from the depth buffer. The effect darkens crevices and contact areas to simulate indirect lighting occlusion.

Properties:

  • Radius: World-space sampling radius.
  • MaxScreenSpaceRadius: Clamps the radius in screen space to avoid sampling too large an area on nearby geometry.
  • Contrast: Sharpens or softens the occlusion effect.
  • Intensity: Overall strength of the darkening.
  • FadeOutStart, FadeOutEnd: World-space distances between which the effect is blended out. Beyond FadeOutEnd the occlusion is zero.
  • PositionBias: Small offset along the normal to reduce self-occlusion artefacts.
  • MipLevelScale: Controls which mip level is sampled at different distances.
  • DepthBlurThreshold: Depth difference at which bilateral filtering stops blurring across edges.

In the default pipelines this pass is named Rendering.Pipeline.SSAO and is selected through the Rendering.Pipeline.SSAO switch. See Pipeline CVars.

Required Extractor: Visible Objects Extractor

Antialiasing Pass

Post-process anti-aliasing pass. Performs an advanced resolve of MSAA render targets using a two-pixel-wide B-spline filter. No configurable properties.

Blend Pass

Linearly interpolates between two input textures and writes the result to the output.

Properties:

  • BlendFactor: 0 outputs Input A unchanged, 1 outputs Input B, intermediate values blend between them.

Bloom Pass

Extracts overbright pixels from the image, blurs them, and writes the result to a separate render target. The bloom image is usually fed into the Tonemap Pass to be composited on top of the final image.

Properties:

  • Radius: Blur spread of the bloom effect.
  • Threshold: Luminance value above which pixels contribute to bloom.
  • Intensity: Overall brightness of the bloom output.
  • InnerTintColor, MidTintColor, OuterTintColor: Color tints applied to the inner, middle, and outer bloom regions, allowing colored glow effects.

Blur Pass

Applies a separable Gaussian blur to the input texture.

Properties:

  • Radius: Blur kernel radius in pixels.

Convert To Target Format Pass

Copies a color texture into a new texture that has the format of the view's render target. Place it directly in front of the Target Pass when the format of the image may not match the target, for example on a branch of a switch that skips the Tonemap Pass.

Values are copied as is. HDR input gets clamped, not tonemapped. Size, array size and MSAA sample count of the input are kept.

Copy Texture Pass

Copies a texture from input to output verbatim. Useful to preserve an intermediate result for later use in the pipeline.

Custom Render Data Pass

A flexible pass that renders all render data belonging to a user-specified render data category. This allows rendering custom objects at a precise point in the pipeline, between standard passes, without creating an entirely new pass type.

This is used in the default pipelines to create three named hook points:

  • InitDepth — runs before the depth pre-pass, using ByDepthOffsetOnly sorting. Use it to prime the depth or stencil buffer.
  • InitLit — runs before the opaque forward pass, using ByDepthOffsetOnly sorting. Use it to write initial data into the lit render target.
  • LitScreenFX — runs after all geometry forward passes but before post-processing and tonemapping, using BackToFrontThenByRenderData sorting. Use it for full-screen or world-space screen effects that must appear on top of geometry but below post-process.

Properties:

  • RenderDataCategoryName: The name of the render data category to collect and render.
  • SortingFunction: How render data is ordered before rendering. Options: ByRenderDataThenFrontToBack, BackToFrontThenByRenderData, ByDepthOffsetOnly. See Sorting Functions below.

Debug Screen Render Pass

Draws the screen space output of the debug renderer: 2D text, info text, lines and rectangles that ezDebugRenderer places in pixel coordinates. With a render scale, place it after the Upscale Pass, otherwise the output ends up in the wrong place.

A pipeline without this pass shows no screen space debug output, and a warning is logged for main and editor views.

Debug World Render Pass

Draws the world space output of the debug renderer: lines, boxes and text that ezDebugRenderer places in the world. Place it where the scene is rendered and connect the scene's depth buffer, so that the output is hidden behind objects. A depth input of a different size than the color input is ignored.

A pipeline without this pass shows no world space debug output, and a warning is logged for main and editor views.

Depth Only Pass

Renders geometry into a depth buffer without producing any color output. Used for depth pre-passes and shadow map generation.

Properties:

  • RenderStaticObjects: Whether static geometry is included.
  • RenderDynamicObjects: Whether dynamic geometry is included.
  • RenderTransparentObjects: Whether transparent geometry is included (off by default).

Required Extractor: Visible Objects Extractor

History Source Pass

Provides access to a render target from the previous frame. Always used in combination with a History Target Pass. On the first frame the render target is cleared to ClearColor.

Properties:

  • Format: Pixel format of the history buffer.
  • MsaaMode: MSAA sample count.
  • ClearColor: Color used to clear the buffer on the first frame.

History Target Pass

Captures the current frame's input and stores it so the History Source Pass can expose it next frame.

Properties:

  • SourcePassName: Name of the corresponding HistorySourcePass node in the graph.

LSAO Pass

Implements Line Sweep Ambient Occlusion (LSAO), an alternative SSAO algorithm that sweeps line samples across the screen instead of sampling a hemisphere. Based on the technique from Quantum Break.

Properties:

  • LineToLinePixelOffset: Pixel distance between adjacent sweep lines.
  • LineSamplePixelOffsetFactor: Step size along each sweep line.
  • OcclusionFalloff: Rate at which occlusion contribution falls off with distance.
  • DepthCutoffDistance: World-space depth difference beyond which two points are considered unrelated.
  • DepthCompareFunction: How depth is evaluated when gathering samples — Depth (hard cutoff), Normal (plane-weighted), or NormalAndSampleDistance (plane and sample-distance weighted).
  • DistributedGathering: Spreads gather samples across multiple frames to reduce per-frame cost.

Light Shafts Pass

Screen-space post-processing pass that produces volumetric light shaft effects (god rays / crepuscular rays) from the brightest directional light. It builds a mask from the depth buffer, applies a radial blur toward the projected light source position, and additively composites the result into the scene color.

The pass reads light shaft parameters from the Light Shafts Component present in the scene.

Properties:

  • DownsampleFactor: How much to downsample the internal mask texture before blurring. Higher values reduce cost but lower the precision of the effect.
  • NumBlurPasses: Number of radial blur iterations. More passes produce smoother, longer shafts at increased cost.
  • NumSamples: Number of samples taken per blur pass along each ray.
  • MaxBlurDistance: Maximum length of the radial blur in normalized screen space. Larger values produce longer shafts.

Required Extractor: Clustered Data Extractor

MSAA Resolve Pass

Resolves a multi-sampled render target into a regular texture by averaging the samples. Required before passing MSAA output into passes that cannot process multi-sampled textures.

Properties:

  • IsDepth: Set to true when resolving a depth-stencil texture rather than a color texture.

MSAA Upscale Pass

Converts a regular texture into a multi-sampled render target by replicating each pixel across all samples. Used when transitioning back from non-MSAA post-processing to an MSAA render target.

Properties:

  • MsaaMode: Target MSAA sample count.

Opaque Forward Render Pass

Forward render pass for opaque geometry. Performs full lighting and shading. Accepts an optional ambient occlusion input from an AO Pass or LSAO Pass.

Properties:

  • ShadingQuality: Normal applies full lighting; Simplified reduces shading cost for lower-end hardware.
  • WriteDepth: Whether to write to the depth buffer during this pass (usually true).

Required Extractor: Clustered Data Extractor

Picking Render Pass

Renders object IDs into an off-screen buffer for editor picking functionality.

Reflection Filter Pass

Pre-filters a cubemap for image-based lighting. Generates a mip chain of specular reflection cubemaps with increasing roughness and computes a diffuse irradiance cubemap, both used for physically-based rendering (PBR) environment lighting.

Properties:

  • DiffuseIntensity: Scale factor for the diffuse irradiance contribution.
  • DiffuseSaturation: Saturation of the diffuse irradiance colors.
  • SpecularIntensity: Scale factor for the specular reflection contribution.
  • SpecularOutputIndex, IrradianceOutputIndex: Which output slots the two cubemaps are written to.

Selection Highlight Pass

Draws a colored outline and translucent overlay around selected objects. Used exclusively in editor pipelines.

Properties:

  • HighlightColor: Outline and overlay color.
  • OverlayOpacity: Opacity of the fill drawn over the selected object.

Screen Space Shadow Pass

Generates a screen-space shadow mask using per-pixel ray marching against the depth buffer. The shadow mask is used by directional lights that have ScreenSpaceShadows enabled to produce contact shadows for surfaces that are too fine for shadow maps to capture.

The pass takes a resolved depth buffer as input and produces a single-channel shadow factor texture. This texture is consumed by the Opaque Forward Render Pass during lighting.

Properties:

  • SurfaceThickness: Controls how thick surfaces are considered to be during the ray march. Smaller values produce thinner, tighter contact shadows; larger values tolerate more depth variation before the shadow terminates. Range: 0.001 to 0.5, default 0.005.
  • ShadowContrast: Sharpens or softens the shadow falloff. Higher values give harder shadow edges; lower values produce a more gradual falloff. Range: 1.0 to 10.0, default 4.0.

See Screen Space Shadows for usage instructions.

Separated Bilateral Blur Pass

A depth-aware blur that preserves silhouette edges. Uses a two-pass separable bilateral filter that considers both spatial distance and depth difference, preventing blur from bleeding across object boundaries. Commonly used to smooth out SSAO or similar noisy per-pixel effects.

Properties:

  • Radius: Kernel radius in pixels.
  • GaussianSigma: Standard deviation of the Gaussian weight function.
  • Sharpness: Higher values preserve edges more aggressively.

Simple Render Pass

Renders unlit geometry as well as UI and editor overlays. Output of the debug renderer is drawn by the Debug World Render Pass and Debug Screen Render Pass instead. Accepts an optional color input and renders on top of it, or renders directly into the view's current render target if no input is provided.

What the simple render pass renders depends on which extractors are active:

If a depth input of a different size than the color input is connected (for example because the pass comes after an Upscale Pass), the depth input is ignored.

Sky Render Pass

Forward render pass for skybox and sky dome objects. Renders sky geometry at infinite depth, after opaque objects but before transparent geometry.

Required Extractor: Clustered Data Extractor

Source Pass

Allocates a new render target for downstream passes to render into. This is where the pipeline creates its working textures.

Properties:

  • Format: Pixel format. Available options include 8-bit normalized sRGB/linear, 16-bit float, 32-bit float, 11/11/10-bit float, and depth formats (Depth16Bit, Depth24BitStencil8Bit, Depth32BitFloat).
  • MsaaMode: MSAA sample count (None, 2, 4, 8).
  • ClearColor: Color the texture is cleared to when Clear is enabled.
  • Clear: If true, the render target is cleared at the start of every frame.
  • ApplyRenderScale: If true, the texture is smaller than the view by the view's render scale (the App.RenderScale CVar for the game's main view). Enable it on all sources of the scene, and bring the result back to full size with an Upscale Pass. Without one, the scaled textures reach the output at the wrong size.

Stereo Test Pass

A test pass for verifying stereoscopic rendering. Not used in production pipelines.

Switch Pass

Forwards one of several inputs to its output. Which input is used is selected by an integer value read from a blackboard entry, see Render Pipeline Properties. There are two variants, the Texture Switch Pass for texture connections and the Buffer Switch Pass for buffer connections.

Only the branch that feeds the selected input is executed. All passes that exclusively feed unselected inputs are culled from the pipeline. This is the way to make parts of a pipeline optional. Changing the selected value rebuilds the pipeline's pass graph, so it is meant for configuration changes, not for values that change every frame.

Properties:

  • BlackboardProperty: Name of the blackboard entry that selects the input. If it is empty, the entry doesn't exist or the value doesn't match any entry in Values, the first entry of Values is used. Thus the first entry should always be the default that should be used, when a setting is not configured. Boolean entries are treated as 0 and 1.
  • Values: The value that selects each input. The input pins are named after these values, so changing them disconnects existing connections.

NOTE

Two passes that modify the same texture in place (through a pass-through pin) can't both be active at the same time. Since this depends on the selected switch values, it is only detected at runtime, in which case an error is logged and the pipeline isn't executed.

Target Pass

The terminal pass that forwards the final pipeline output to the screen (swap chain) or to externally specified render targets. Every render pipeline must end with a target pass.

Tonemap Pass

Converts high dynamic range (HDR) color values to display output. Combines exposure, color grading, and optional bloom. Typically the last image-quality pass before the Target Pass.

Properties:

  • MoodColor, MoodStrength: Tints the entire image towards a mood color. Useful for time-of-day effects.
  • Saturation: Multiplier on color saturation. 1 = unchanged, 0 = greyscale.
  • Contrast: Adjusts the contrast of the final image.
  • LUT1, LUT1Strength, LUT2, LUT2Strength: Up to two 3D color lookup tables for color grading, each with a blend weight.
  • VignettingTexture: Multiplied onto the image to darken edges.
  • NoiseTexture: Adds film-grain style noise to reduce color banding.

Transparent Forward Render Pass

Forward render pass for transparent geometry. Objects are sorted back-to-front to produce correct alpha blending. Optionally accepts a resolved depth input for soft particle effects.

Required Extractor: Clustered Data Extractor

Upscale Pass

Stretches its input to the size of the view. It is the counterpart to Source Passes with ApplyRenderScale enabled: the scene is rendered at a reduced resolution, and this pass brings it back to the output size. If the input already has the size of the view, it is passed through without any rendering.

Place it after tonemapping and before UI and screen space debug output, so that those stay sharp. Passes after it must not use the scaled depth buffer.

Properties:

  • Sharpness: Counters the blur of the upscaling, from 0 (off) to 1 (strongest). It is meant for tonemapped input; pixels brighter than 1 are left unchanged.

Sorting Functions

Render data sorting controls the order in which objects are submitted to the GPU within a single pass. The available functions are:

  • ByRenderDataThenFrontToBack: Groups objects by render data type first (minimizing state changes), then sorts front-to-back within each group (maximising early-Z rejection). Best for opaque geometry.
  • BackToFrontThenByRenderData: Sorts back-to-front first (required for correct alpha blending), then by render data type. Best for transparent geometry.
  • ByDepthOffsetOnly: Sorts purely by the render data's depth offset value, back-to-front. Produces a fully deterministic draw order independent of scene depth, which is useful for full-screen effects and render hooks where relative order must be predictable.

See Also