Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Motion Smoothing is a frame-synthesis feature of Valve's SteamVR runtime that fills in missing frames when a VR application cannot keep up with the refresh rate of the headset. When SteamVR detects that an application is about to drop frames, Motion Smoothing looks at the last two frames the application delivered, estimates motion and animation, and extrapolates a new frame, so that the headset keeps receiving images at its full rate (90 Hz on the HTC Vive and HTC Vive Pro) while the application renders only one frame in two.[1] Valve describes it as "the latest advancement to our asynchronous reprojection system that fills in missing frames when an application is falling behind".[2]

Valve released Motion Smoothing as a SteamVR beta on 17 October 2018 and moved it to the public SteamVR release (version 1.1.3) on 27 November 2018, initially for Windows 10 PCs with NVIDIA graphics cards; support for AMD RX and Vega cards followed in SteamVR 1.4.14 in May 2019.[3][2][4] It is Valve's counterpart to Oculus's Asynchronous Spacewarp (ASW) and to the motion reprojection mode of Windows Mixed Reality; Valve's Alex Vlachos told Road to VR that "ASW, SteamVR Motion Smoothing, and WMR Motion Reprojection are just different implementations of the same high-level tech."[5]

The term is also used for televisions. In its announcement Valve noted that TVs apply motion smoothing by interpolating between two existing frames to create an in-between frame, which raises the frame rate but adds latency, and called that "definitely not the right way to go in VR". SteamVR instead extrapolates a new frame from frames the application has already delivered.[1]

Reviewed 4 October 2026. Checked every claim against the cited Valve SteamVR release notes (via the Steam news API), the Valve patent, the 2016 GDC slides, the Meta and Microsoft documentation, the Road to VR and UploadVR articles, and the metadata and abstracts of the five cited papers. About review dates.

Background: missed frames and reprojection

A VR headset refreshes at a fixed rate, and an application "hits frame rate" when it delivers a new frame for every refresh. Valve's patent on Motion Smoothing notes that without compensation a deficient frame rate causes stuttering or hitching, and that in VR the user "can become nauseous" if the application misses frame rate and nothing fills in the missing frames.[6] The usual remedy is reprojection (also called timewarp): the runtime takes the most recent rendered image and transforms it to match the user's latest head pose before it is displayed.[7]

At GDC 2016, Vlachos described two forms, rotation-only reprojection and position-and-rotation reprojection, and called reprojection to fill in missed frames "a last-resort safety net". He noted that rotation-only reprojection works reasonably well for a single missed frame, but that camera translation, animation and objects moved by tracked controllers still judder, which "appears as two distinct images averaged together". Positional reprojection was, in his words, "still an unsolved problem".[8] The patent gives the same diagnosis: rotation-only reprojection accounts for head rotation but not for objects that move or animate between frames, which the user sees as a "double ghosting effect" in which a moving object, such as a ball crossing the screen, appears to jump between two positions.[6]

Motion Smoothing was designed to close that gap: it adds an estimate of on-screen motion to the reprojected frame, so that moving and animated objects advance in the synthesized frame instead of juddering.[1][6]

How it works

Frame synthesis

When SteamVR sees that an application will not make frame rate, Motion Smoothing engages, and SteamVR synthesizes the frames the application does not deliver. At the 90 Hz refresh of the original Vive and Vive Pro this means the application renders at 45 frames per second and every second displayed frame is synthetic.[1] If one synthetic frame per real frame is still not enough, the system was designed to scale further; the beta announcement said it could synthesize "2 frames or even 3 frames for every 1 frame delivered", and the public announcement said it could synthesize 2 frames for every frame delivered if needed.[3][1] SteamVR 1.16 (February 2021) raised the limit to "up to six frames of extrapolation (was three)" for headsets that use SteamVR's own compositor.[9]

The feature switches on automatically when an application starts dropping frames and off again when it is no longer needed.[1] One day after the beta launch, Valve changed it to "always generate motion vectors in the background so even the first dropped frame is motion smoothed", to avoid a few frames of judder before it kicked in.[10]

Motion vectors from the video encoder

Vlachos explained to Road to VR that SteamVR feeds "the last two frames from the application to the GPU's video encode chip to generate motion vectors (which are very rough)".[5] The patent filed by Valve on 9 October 2018 (US 10,733,783, "Motion smoothing for re-projected frames", granted 4 August 2020, inventors Alex Vlachos and Aaron Leiby) describes the approach in detail. Pixel data from previously rendered frames is given to the GPU, whose video encoder outputs an array of motion vectors (direction and magnitude of motion across the image); those vectors are then used to modify the pixel data of the re-projected frame so that moving or animating objects do not judder.[6]

The patent describes several ways to filter or modify the motion vectors before they are used, including:[6]

  • an attenuation texture that shortens individual vectors where confidence in their quality is low;
  • a scalar median filter (a 5 x 5 filter is given as an example) applied to the vector array;
  • rotating the previous frames before motion estimation, and choosing between vectors computed from luma and from chroma data;
  • moving the vertices of a render mesh according to the vectors, with a depth buffer used to decide the final pixel value where several values land in the same place.

In the patent, the input to motion estimation is the pixel data of frames the application has already rendered.[6] Road to VR noted in 2018 that Oculus had recently introduced ASW 2.0, which aims to use depth information to make synthesized frames more accurate, and reported that Valve might use depth information at some point but was mainly seeking generalized solutions. Vlachos said Valve was concentrating on solutions "that apply to all applications", because its goal was to let customers get as close to native resolution as possible on a wide range of GPUs as higher-resolution headsets reached the market.[5]

Settings and throttling

In the 2018 release, users could control when Motion Smoothing is enabled under Settings > Video or per application under Settings > Applications.[1] SteamVR 1.1.3 added a per-application "Always-On" option that forces an application to half frame rate (45 fps on a 90 Hz headset) with Motion Smoothing permanently on. Valve said this helps games with physics or movement code that copes badly with switching between full and half frame rate, and made it opt-in per application so that users would not accidentally force every application to half rate.[2]

Later releases refined how SteamVR throttles the application. Before SteamVR 1.7 (September 2019), throttling and prediction were locked together when Motion Smoothing was enabled; 1.7 let throttling back off from the prediction level based on average GPU performance. Valve's example was an application that renders each frame in less than two refresh intervals but spends an extra frame on the CPU, so each frame is three frames latent although a new frame can still be delivered every other refresh. The change applied to Lighthouse-based headsets such as the Vive and Valve Index, because headsets such as the Oculus Rift and Windows Mixed Reality devices use their own compositors.[11] SteamVR 1.16 added per-application overrides for throttling and prediction for applications "with particularly poor performance that benefit instead from a fixed lower framerate for an overall smoother experience (e.g. sims)".[9]

Hardware and headset support

At launch, Motion Smoothing was enabled only on Windows 10 PCs with NVIDIA GPUs; it was not enabled for Oculus Rift or Windows Mixed Reality headsets running SteamVR "because their underlying display drivers use different techniques when applications miss framerate".[1] Road to VR described the supported headsets as the Vive, Vive Pro "and other native OpenVR headsets".[5]

AMD support arrived in SteamVR 1.4.14 in May 2019. Valve stated that Motion Smoothing works only on graphics cards that support asynchronous reprojection, which for AMD meant the RX and Vega series; R9 and older cards were not supported. The Radeon VII was supported, but a driver bug made its motion estimation step too slow, in which case SteamVR shut Motion Smoothing down until the next launch and showed the warning "Motion Smoothing is not supported on this gpu or the drivers are out of date."[4][12] UploadVR noted that owners of AMD cards bought before 2017 would likely not have access to it.[13] SteamVR 1.8 (November 2019) added AMD-specific changes, among them a fix for incorrectly reported motion vector scale on Navi hardware (Valve's example was the "AMD Radeon 5700 XT") and a scheme that progressively lowers motion estimation resolution, based on measured performance, before disabling the feature entirely.[14]

Windows Mixed Reality headsets gained access to the SteamVR setting through Microsoft's own implementation. SteamVR 1.17 (June 2021) exposed the per-application and global Motion Smoothing settings for those headsets, explaining that headsets with their own compositor receive the settings but that "it is up to the driver author to handle them"; Windows Mixed Reality for SteamVR respected them, while the Oculus driver did not, because the Oculus SDK had no API to control ASW, so the controls stayed hidden for Oculus headsets. Windows Mixed Reality users had to opt into the beta version of Windows Mixed Reality for SteamVR for the change.[15]

History

Motion Smoothing followed two earlier SteamVR mechanisms for missed frames, interleaved reprojection and asynchronous reprojection; Valve called it "the latest advancement to our asynchronous reprojection system".[2]

Date SteamVR release Change
March 2016 SteamVR update Automatic interleaved reprojection enabled for all applications, with an "Allow Reprojection" setting[16]
November 2016 SteamVR update Asynchronous reprojection added, requiring NVIDIA driver 372.54 or newer; AMD not supported in that version[17]
17 October 2018 SteamVR Beta Motion Smoothing introduced in beta for Windows 10 and NVIDIA GPUs[3]
27 November 2018 1.1.3 Motion Smoothing released to all users; per-application Always-On option[2]
May 2019 1.4.14 Support for AMD RX and Vega GPUs[4]
September 2019 1.7 Throttling decoupled from prediction when Motion Smoothing is enabled[11]
November 2019 1.8 AMD fixes, including Navi motion vector scale and progressive reduction of motion estimation resolution[14]
February 2021 1.16 Up to six frames of extrapolation (previously three); per-application throttling and prediction overrides[9]
June 2021 1.17 Motion Smoothing settings exposed for Windows Mixed Reality headsets[15]
June 2021 1.17.16 hotfix Fix for Motion Smoothing "ghosting" in applications that use a very small near clipping value[18]
March 2026 2.15 Fix for Motion Smoothing not working with the latest NVIDIA drivers[19]
September 2026 2.17.10 hotfix Fix for the per-application "Force Always-On" setting being ignored[20]

Before asynchronous reprojection, Valve's OpenVR API offered an interleaved reprojection hint with which an application could request every-other-frame, rotation-only reprojection on GPUs that could not support asynchronous reprojection, giving the application about 18 ms per frame to render; the system could also turn interleaved reprojection on automatically when an application fell below its target frame rate.[8] In the 2016 asynchronous reprojection notes, Valve explained that the interleaved setting decides whether an application is dropped to 45 Hz when it misses frame rate, or allowed to fall further behind until a frame is presented twice, which gives less positional judder but judder that is "more random (which tends to be more annoying)".[17] In UploadVR's account, interleaved reprojection forced the application to 45 fps and synthetically generated every second frame, and became obsolete when Motion Smoothing was released.[21] Motion Smoothing kept the asynchronous reprojection requirement: Valve stated in 2019 that it "only works on graphics cards which support asynchronous reprojection".[4]

Comparison with similar techniques

Technique Developer Introduced Description
Asynchronous Spacewarp Oculus VR (now Meta Platforms) Oculus runtime 1.10, November 2016 Generates extrapolated frames from previous application frames and tracks animation and movement in the scene; described by Oculus as almost halving the CPU/GPU time needed for nearly the same output[22]
Motion reprojection Microsoft (Windows Mixed Reality for SteamVR) Described by Microsoft as an experimental feature (introduction date not given in its guide) Renders SteamVR games nominally at half rate (45 fps instead of 90) and uses motion vectors generated by the GPU to extrapolate the next frame; can follow the SteamVR per-application "Motion Smoothing" setting[23]
Motion Smoothing Valve (SteamVR) Beta October 2018; public release November 2018 Estimates motion from the last two delivered frames with the GPU's video encoder and extrapolates new frames; one or more synthetic frames per real frame[1][5]

UploadVR described ASW as "essentially a fast extrapolation algorithm which uses the differences (ie. the motion) between the previous frames to estimate what the next frame should look like", and called Motion Smoothing a similar feature that Valve added to SteamVR in November 2018.[21] Oculus stated that ASW does not scale well below half the display's refresh rate.[22] Microsoft's guide likewise says that Windows Mixed Reality's automatic mode turns motion reprojection off when a game falls below 45 fps, and that games which "reliably hit 60 FPS+" should get a solid 90 fps experience with occasional artifacts.[23] Microsoft has since deprecated Windows Mixed Reality, including Windows Mixed Reality for SteamVR; the same guide says existing devices continue to work with Steam through November 2026 for users who stay on Windows 11 version 23H2.[23]

Limitations and artifacts

Synthesized frames are estimates, and all three implementations document visual errors:

  • Variable frame rate: Valve introduced the Always-On option because some games showed problems in their physics simulations and movement when switching between full and half frame rate.[2]
  • Repeating patterns: Vlachos told Road to VR in 2018 that Valve had "different approaches to reduce repeating pattern artifacts" and other methods that it might ship.[5] Oculus lists mispredictions on repeating patterns during fast movement among the known ASW artifacts, together with wavering on rapid brightness changes, trails where a moving object uncovers the background, and head-locked elements that move too fast to track.[22]
  • Disocclusion and text: Microsoft's guide warns that sharp contrast edges or text, especially in HUDs and menus, "may look temporarily warped or distorted because of disocclusion", and that application resolutions above 150 percent may blur under motion reprojection.[23]
  • Ghosting: SteamVR 1.17.16 fixed a Motion Smoothing "ghosting" regression, introduced in 1.17.8, that affected applications using a very small near clipping value, such as Project Cars 3.[18]
  • GPU cost: Motion estimation itself takes GPU time. Valve disabled the feature automatically when the motion estimation step ran too slowly, as with the Radeon VII driver bug in 2019, and later made AMD hardware step down to lower estimation resolutions first.[4][14]

Valve's 2016 guidance to developers, given before Motion Smoothing existed, treated reprojection as a fallback: "Please DO NOT rely on reprojection to maintain framerate unless your customer is using a GPU below your application's min spec."[8] In the Motion Smoothing announcement, Valve also said that the reduced rendering load lets higher-end GPUs render at a higher resolution.[1]

Research

Generating extra frames by warping already-rendered images predates consumer VR. In "Post-rendering 3D warping" (1997 Symposium on Interactive 3D Graphics), William R. Mark, Leonard McMillan and Gary Bishop showed that a pair of rendered images with their Z-buffers contains almost all the information needed to re-render from nearby viewpoints, that re-rendering from previously computed views allows "an order-of-magnitude increase in apparent frame rate", and that it can compensate for system latency. Their method handled viewpoint translation as well as rotation, and avoided occlusion artifacts by warping two reference images and compositing the results.[24]

J. M. P. van Waveren's 2016 VRST paper on the asynchronous time warp explains why these techniques run asynchronously in modern headsets. A time warp operating close to display refresh can transform a stereo image pair to the correct view at display time, and "when run asynchronously to the stereoscopic rendering, the time warp can be used to increase the perceived frame rate and to smooth out inconsistent frame rates"; the paper discusses the difficulty of doing this with predictable latency on consumer GPUs.[7] Vlachos's 2016 talk listed GPU preemption granularity at least as good as that of then-current GPUs as a requirement for asynchronous reprojection.[8]

Several later papers study frame extrapolation with learned models and cite the same latency trade-off that Valve described for TV-style interpolation. ExtraNet (Guo et al., ACM Transactions on Graphics, 2021) noted that interpolating frames "from the future" introduces latency, and used a neural network with rendered geometry buffers and motion vectors to predict shading for extrapolated frames, including in-painting of regions with no history, reporting a 1.5x to nearly 2x increase in frame rate.[25] The ExWarp preprint (Dixit, Chakrabarty and Sarangi, 2023), which cites video games and VR as drivers for high-refresh displays, observes that the simplest extrapolation is to warp the previous frame with motion vectors but that dynamic objects then produce artifacts, and uses reinforcement learning to choose between fast warping and slower neural extrapolation.[26] GFFE (Wu et al., 2024 preprint) proposes extrapolation without geometry buffers, analysing the motion of dynamic fragments and different types of disocclusion, to lower the engine integration cost of earlier methods.[27]

See also

References

  1. ↑ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 Alex Vlachos (2018-11-27). "Introducing SteamVR Motion Smoothing". Steam. Valve. https://steamcommunity.com/games/250820/announcements/detail/1705071932992003492. Retrieved 2026-10-04.
  2. ↑ 2.0 2.1 2.2 2.3 2.4 2.5 "SteamVR Updated - 1.1.3". Steam. Valve. 2018-11-27. https://steamcommunity.com/games/250820/announcements/detail/1705071932994697845. Retrieved 2026-10-04.
  3. ↑ 3.0 3.1 3.2 Alex Vlachos (2018-10-17). "Introducing SteamVR Motion Smoothing Beta". Steam. Valve. https://steamcommunity.com/games/250820/announcements/detail/1696061565016280495. Retrieved 2026-10-04.
  4. ↑ 4.0 4.1 4.2 4.3 4.4 "SteamVR Updated 1.4.14". Steam. Valve. 2019-05-17. https://steamcommunity.com/games/250820/announcements/detail/2715020104637516314. Retrieved 2026-10-04.
  5. ↑ 5.0 5.1 5.2 5.3 5.4 5.5 Ben Lang (2018-10-18). "SteamVR Gets Motion Smoothing, an ASW-like Feature to Help VR Apps Run Better". Road to VR. https://roadtovr.com/steamvr-motion-smoothing-asw-alex-vlachos/. Retrieved 2026-10-04.
  6. ↑ 6.0 6.1 6.2 6.3 6.4 6.5 Alex Vlachos, Aaron Leiby (2020-08-04). "US10733783B2 - Motion smoothing for re-projected frames". Google Patents. Valve Corporation. https://patents.google.com/patent/US10733783B2/en. Retrieved 2026-10-04.
  7. ↑ 7.0 7.1 J. M. P. van Waveren (2016). "The asynchronous time warp for virtual reality on consumer hardware". Proceedings of the 22nd ACM Conference on Virtual Reality Software and Technology (VRST '16). pp. 37-46. doi:10.1145/2993369.2993375. https://dl.acm.org/doi/10.1145/2993369.2993375. Retrieved 2026-10-04.
  8. ↑ 8.0 8.1 8.2 8.3 Alex Vlachos (2016-03). "Advanced VR Rendering Performance (GDC 2016 slides)". Valve. Valve. https://media.steampowered.com/apps/valve/2016/Alex_Vlachos_Advanced_VR_Rendering_Performance_GDC2016.pdf. Retrieved 2026-10-04.
  9. ↑ 9.0 9.1 9.2 "Introducing SteamVR 1.16". Steam. Valve. 2021-02-24. https://steamcommunity.com/games/250820/announcements/detail/3044967019267211915. Retrieved 2026-10-04.
  10. ↑ Alex Vlachos (2018-10-18). "SteamVR Beta Updated (1539857881)". Steam. Valve. https://steamcommunity.com/games/250820/announcements/detail/1696061565024010254. Retrieved 2026-10-04.
  11. ↑ 11.0 11.1 "Introducing SteamVR Version 1.7". Steam. Valve. 2019-09-10. https://steamcommunity.com/games/250820/announcements/detail/1599262707999562008. Retrieved 2026-10-04.
  12. ↑ Ben Lang (2019-05-19). "SteamVR Update Brings Motion Smoothing to Modern AMD Graphics Cards". Road to VR. https://roadtovr.com/steamvr-update-brings-motion-smoothing-to-modern-amd-graphics-cards/. Retrieved 2026-10-04.
  13. ↑ David Heaney (2019-05-22). "SteamVR Adds Support For Valve Index, Motion Smoothing For Recent AMD GPUs". UploadVR. https://www.uploadvr.com/steamvr-index-motion-smoothing-amd/. Retrieved 2026-10-04.
  14. ↑ 14.0 14.1 14.2 "Introducing SteamVR Version 1.8". Steam. Valve. 2019-11-05. https://steamcommunity.com/games/250820/announcements/detail/1569993750889579062. Retrieved 2026-10-04.
  15. ↑ 15.0 15.1 "Introducing SteamVR 1.17". Steam. Valve. 2021-06-03. https://steamcommunity.com/games/250820/announcements/detail/3021332002084697042. Retrieved 2026-10-04.
  16. ↑ "SteamVR Updated (1459194224)". Steam. Valve. 2016-03-28. https://steamcommunity.com/games/250820/announcements/detail/646638027978350370. Retrieved 2026-10-04.
  17. ↑ 17.0 17.1 "SteamVR Updated (1479163853)". Steam. Valve. 2016-11-16. https://steamcommunity.com/games/250820/announcements/detail/366309910497421727. Retrieved 2026-10-04.
  18. ↑ 18.0 18.1 "SteamVR Hotfix 1.17.16". Steam. Valve. 2021-06-09. https://steamcommunity.com/games/250820/announcements/detail/3044977170969500124. Retrieved 2026-10-04.
  19. ↑ "Introducing SteamVR 2.15". Steam. Valve. 2026-03-26. https://steamcommunity.com/games/250820/announcements/detail/506230784633341436. Retrieved 2026-10-04.
  20. ↑ "SteamVR Hotfix 2.17.10". Steam. Valve. 2026-09-18. https://steamcommunity.com/games/250820/announcements/detail/701027957162902146. Retrieved 2026-10-04.
  21. ↑ 21.0 21.1 David Heaney (2019-01-17). "VR Timewarp, Spacewarp, Reprojection, And Motion Smoothing Explained". UploadVR. https://www.uploadvr.com/reprojection-explained/. Retrieved 2026-10-04.
  22. ↑ 22.0 22.1 22.2 Dean Beeler, Ed Hutchins, Paul Pedriana (2016-11-10). "Asynchronous Spacewarp". Meta for Developers. Meta Platforms. https://developers.meta.com/horizon/blog/asynchronous-spacewarp/. Retrieved 2026-10-04.
  23. ↑ 23.0 23.1 23.2 23.3 "Using SteamVR with Windows Mixed Reality - Enthusiast Guide". Microsoft Learn. Microsoft. 2025-11-24. https://learn.microsoft.com/en-us/previous-versions/mixed-reality/enthusiast-guide/using-steamvr-with-windows-mixed-reality. Retrieved 2026-10-04.
  24. ↑ William R. Mark, Leonard McMillan, Gary Bishop (1997). "Post-rendering 3D warping". Proceedings of the 1997 Symposium on Interactive 3D Graphics (SI3D '97). doi:10.1145/253284.253292. https://dl.acm.org/doi/10.1145/253284.253292. Retrieved 2026-10-04.
  25. ↑ Jie Guo, Xihao Fu, Liqiang Lin, Hengjun Ma, Yanwen Guo, Shiqiu Liu, Ling-Qi Yan (2021-12). "ExtraNet: Real-time Extrapolated Rendering for Low-latency Temporal Supersampling". ACM Transactions on Graphics, vol. 40, no. 6. https://doi.org/10.1145/3478513.3480531. Retrieved 2026-10-04.
  26. ↑ Akanksha Dixit, Yashashwee Chakrabarty, Smruti R. Sarangi (2023-07-24). "ExWarp: Extrapolation and Warping-based Temporal Supersampling for High-frequency Displays". arXiv preprint 2307.12607. https://arxiv.org/abs/2307.12607. Retrieved 2026-10-04.
  27. ↑ Songyin Wu, Deepak Vembar, Anton Sochenov, Selvakumar Panneer, Sungye Kim, Anton Kaplanyan, Ling-Qi Yan (2024-05-23). "GFFE: G-buffer Free Frame Extrapolation for Low-latency Real-time Rendering". arXiv preprint 2406.18551. https://arxiv.org/abs/2406.18551. Retrieved 2026-10-04.