Documentation

Unity Engine

Unity Engine

Configure temporal pixel synthesis workflow

Enable TPS from the OpenXR features, and optionally adjust settings at runtime.
Read time 2 minutesLast updated 14 hours ago

Use the OpenXR tab in the
Project Settings

?

window to enable and configure temporal pixel synthesis.

Prerequisites

To use TPS, your project must meet the following requirements:
  • A Meta device with a runtime that supports pixel synthesis. (Query support at runtime.)
  • The Vulkan graphics API.
  • The Universal Render Pipeline.
  • Single-pass instanced rendering.
Note
If your project doesn't meet all these requirements, the feature stays inactive and your project renders as it would without TPS.

Configure temporal pixel synthesis

Enable and configure settings for temporal pixel synthesis in the OpenXR settings, as outlined in Temporal Pixel Synthesis (OpenXR Plugin documentation.)

Fix project validation warnings

TPS makes the following Unity Editor validation warnings redundant:
  • The
    Camera

    ?

    inspector shows a note beside Anti-aliasing when you target an XR device.
  • The Universal Render Pipeline Asset shows a note beside the upscaling settings.
These validation warnings link to the Project validation system, where you can learn more about the specific conflict and use the Fix button to fix any issues.
Project validation also checks for settings that reduce or prevent the benefit of TPS, such as MSAA and a simultaneously enabled URP upscaler.

Adjust settings at runtime

Optionally, you can use scripting to adjust TPS settings at runtime. Note: Most projects don't need this.
If you want to change pixel synthesis parameters per frame, for example resetting temporal accumulation on a scene transition or camera cut, call
MetaTemporalPixelSynthesisFeature.SetPixelSynthesis
each frame with a
PixelSynthesisFrameParams
.
Start from
PixelSynthesisFrameParams.Default
, which is pre-filled with the values that match what URP produces, and change only the fields you need. Constructing the struct from scratch leaves the motion vector conversion values empty and produces incorrect results.
Call
MetaTemporalPixelSynthesisFeature.ClearPixelSynthesis
to stop supplying per-frame parameters and return to the defaults from feature settings.
Refer to the scripting reference for the full parameter list.

Additional resources