Documentation

Unity Engine

Unity Engine

Introduction to temporal pixel synthesis

Learn about the benefits of temporal pixel synthesis and when to use it in your project.
Read time 3 minutesLast updated 11 hours ago

Temporal pixel synthesis (TPS) moves anti-aliasing and upscaling out of your render pipeline and into the XR compositor on the device. Instead of the Universal Render Pipeline (URP) resolving each frame, you hand the compositor motion vector and depth data, and it reconstructs the final image using information from previous frames.
TPS is available on Meta devices through the
XR_META_temporal_pixel_synthesis
OpenXR extension. Note: TPS was previously referred to as TAAU (temporal anti-aliasing upscaling).

Impact on your project

When TPS is active, URP automatically stops doing work the compositor is now responsible for.

Suppresses anti-aliasing

URP disables its own temporal anti-aliasing (TAA), including the sub-pixel jitter TAA applies to the camera projection. URP jitter isn't needed because jitter is already applied as part of the XR projection matrix when you enable TPS.
If a camera has Anti-aliasing set to Temporal Anti-aliasing (TAA), URP logs a warning once and ignores the setting. Set it to None on your cameras to silence the message.

Suppresses upscalers

URP disables its own spatial and temporal upscalers, such as FSR and STP, and falls back to a bilinear resolve for render scale. Running a URP upscaler alongside the compositor wastes GPU time and can soften or over-sharpen the image.
Note
This doesn’t affect Bilinear and Nearest-Neighbor. They select how a resolve that has to happen anyway is filtered, rather than reconstructing detail, so they don't conflict with TPS.

Excludes transparent objects from temporal reuse

Transparent geometry doesn't write reliable motion vectors, so reusing them across frames produces ghosting. URP marks these pixels in the stencil of the motion vector target using a pattern the runtime supplies, and the compositor skips them when reconstructing.
You don't need to configure this as it's automatically applied.

When to use temporal pixel synthesis

Whether to use TPS depends on your rendering path, scene complexity, and whether your project uses Application SpaceWarp. Use the following guidance to decide whether TPS or multisample anti-aliasing (MSAA) is more appropriate for your project.

Deferred rendering

Use TPS for anti-aliasing if your project uses deferred rendering, because MSAA isn't supported with deferred rendering.

Forward rendering

If your project uses Forward rendering, choose between TPS and MSAA based on your content and your quality target. At the same resolution scale, TPS is faster on scenes with simpler geometry, because the cost of the motion vector pass scales with geometry complexity. The more complex your scene, the more that pass costs, and the more the balance shifts towards MSAA.
Consider whether your project needs upscaling. MSAA only provides anti-aliasing, while TPS provides both anti-aliasing and upscaling. If your project renders at a reduced resolution and relies on upscaling to reach the display resolution, use TPS.

Application SpaceWarp

If your project uses Application SpaceWarp, prefer TPS over MSAA. SpaceWarp and TPS use the same motion vector target, rendered at a higher resolution, so you are already paying for that data and TPS adds less on top than MSAA would.

Additional resources