# Configure temporal pixel synthesis workflow

> Enable TPS from the OpenXR features, and optionally adjust settings at runtime.

Use the OpenXR tab in the Editor 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](https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.19/manual/features/temporalpixelsynthesis.html) (OpenXR Plugin documentation.)

## Fix project validation warnings

TPS makes the following Unity Editor validation warnings redundant:

* The Editor 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](/engine/7000.0/manual/xr/configuring-project-for/plugin-management.md#project-validation), 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

* [Unity OpenXR Plugin](https://docs.unity3d.com/Packages/com.unity.xr.openxr@1.18/)
* [Project validation system](/engine/7000.0/manual/xr/configuring-project-for/plugin-management.md#project-validation)
