---
title: Temporal Super Resolution
source: https://dev.epicgames.com/documentation/en-us/unreal-engine/temporal-super-resolution-in-unreal-engine
version: Unreal Engine 5.8 Documentation
fetched: 2026-10-11
note: 原文摘录（英文要点），供 wiki 引用；非全文
---

# Temporal Super Resolution

- Amortizes costly rendering across many frames; Nanite detail at low enough resolution for Lumen performance.
- "Temporal Super Resolution happens after depth of field and everything that follows is upscaled, such as motion blur, bloom".
- Platforms: SM5+ desktop, PS5, Xbox; identical quality across platforms; optimized for AMD RDNA (16-bit, packed).
- Caveat: accumulation depends on screen percentage AND frame rate; CPU-bound or VSync affects it. stat tsr. TSR feed = RenderW*RenderH*FPS (4K@50%@60Hz = 124.4 MP/s = 1080p@100%@60Hz). TSR 1spp = 1000/(SP^2*FPS) ms (50%@60Hz = 66.6 ms; 100%@60Hz = 16.6 ms). 50% -> 4 frames for one sample per pixel.
- GPU cost scales with resolution, part at display resolution. Valley of the Ancient ~0.79 ms at 100% vs ~0.43 ms at 50%. Parallax heuristic uses depth & velocity -> async compute (r.TSR.AsyncCompute). Fortnite Ch4 PS5/XSX: effective TSR 1.5 ms, critical path 1.1 ms.
- sg.AntiAliasingQuality 0-4; extreme upscaling <50% only for >4K or dynamic res.
- Hidden costs: post passes after TSR run at display resolution; motion blur half-res optimizations.
- Debug: VisualizeTemporalUpscaler, VisualizeTSR (r.TSR.Visualize 0-7), DumpGPU (r.DumpGPU.Root, FrameCount...).
- Components: History (at display resolution; History Update most expensive pass); Parallax Disocclusion heuristic (depth+velocity); Shading Rejection ("handwritten network of convolutions"); Flickering Temporal Analysis (moire; luminance only); History Resurrection (older persistent frames in Texture2DArray); Spatial Anti-Aliaser (FXAA-style, for camera cuts/new content); Reprojection Field (Jacobian 2x2 per pixel).
- Nyquist-Shannon history: reprojection interpolation causes blur ("can look like they have a resolution of 540p when displaying at 1080p while movement is happening"); Epic/Cinematic store history at 200% (r.TSR.History.ScreenPercentage=200), Mitchell-Netravali downsample; history update 4x more expensive.
- Animated WPO needs Previous Frame Switch node. Translucency doesn't draw velocity by default -> Output Depth and Velocity; After-DOF translucency gets dedicated blur convolution. Has Pixel Animation flag for panning textures. Ghosting troubleshooting: verify motion vectors first; r.Translucency.Velocity 0.
- r.TSR.Velocity.WeightClampingSampleCount default 4; Fortnite lowers to 2 for sharpness.
