{{Short description|Virtual reality technology}} '''Asynchronous reprojection''' is a class of computer graphics technologies aimed at ensuring a virtual reality headset is responsive to user motion even when the GPU isn't able to keep up with the headset's target framerate,<ref name="google-reprojection"/> and to reduce perceived input lag at all times regardless of internal framerate.<ref name="roadtovr-explained">{{cite web |last1=Heaney |first1=David |title=VR Timewarp, Spacewarp, Reprojection, And Motion Smoothing Explained |url=https://www.uploadvr.com/reprojection-explained/ |website=Road to VR |access-date=1 May 2025 |date=17 January 2019}}</ref> Reprojection involves the headset's driver taking one or multiple previously rendered frames and using newer motion information from the headset's sensors to extrapolate (often referred to as "reprojecting" or "warping") the previous frame into a prediction of what a normally rendered frame would look like.<ref name="oculusblog-timewarp"/> "Asynchronous" refers to this process being continuously performed in parallel with rendering, allowing synthesized frames to be displayed without delay in case a regular frame is not rendered in time, and reprojecting all frames by default to reduce perceived latency.<ref name="oculusblog-timewarp"/>
The use of these techniques allows for a lowering in the video rendering hardware specifications required to achieve a certain intended level of responsiveness.<ref name="ars-lowerspec"/>
== Variations == {{Third-party|section|date=August 2019}} Various vendors have implemented their own variations of the technique under different names. Basic versions of the technique are referred to as {{em|asynchronous reprojection}} by Google and Valve,<ref name="google-reprojection"/><ref name="steamvr-smoothing"/> while Oculus has two implementations, called {{em|asynchronous timewarp}}<ref name="oculusblog-timewarp"/> and {{em|asynchronous spacewarp}}. Asynchronous timewarp uses the headset's rotational data to reproject all frames. Asynchronous spacewarp extrapolates a new frame based on the last frame it received if none is rendered, additionally using depth information to help compensate for perspective and other geometric changes.<ref name="oculusblog-spacewarp"/><ref name="oculusblog-asw2"/><ref name="roadtovr-aws2">{{cite web |last1=Lang |first1=Ben |title=Oculus Launches ASW 2.0 with Positional Timewarp to Reduce Latency, Improve Performance |url=https://www.roadtovr.com/oculus-launches-asw-2-0-asynchronous-spacewarp/ |website=Road to VR |access-date=13 November 2022 |date=4 April 2019}}</ref> Valve's early version called ''interleaved reprojection'' would make the application run at half frame rate and reproject every other frame.<ref name="valve-interleaved"/> A later variant by Valve is ''SteamVR Motion Smoothing'', which builds upon regular asynchronous reprojection in being able to reproject two frames instead of one.<ref name="steamvr-smoothing"/>
== See also == * Motion interpolation * 2D to 3D conversion
== References == <references> <ref name="google-reprojection">{{cite web |title=Asynchronous Reprojection |url=https://developers.google.com/vr/discover/async-reprojection |website=Google Developers |publisher=Google Inc. |access-date=10 June 2019}}</ref>
<ref name="ars-lowerspec">{{cite web |last1=Orland |first1=Kyle |title=Oculus lowers minimum Rift specs using "asynchronous spacewarp" tech |url=https://arstechnica.com/gaming/2016/10/oculus-lowers-minimum-rift-specs-using-asynchronous-spacewarp-tech/ |website=ArsTechnica |publisher=Condé Nast |access-date=10 June 2019 |date=10 June 2019}}</ref>
<ref name="oculusblog-timewarp">{{cite web |last1=Antonov |first1=Michael |title=Asynchronous Timewarp Examined |url=https://developer.oculus.com/blog/asynchronous-timewarp-examined/ |website=Oculus Developer Blog |publisher=Facebook Technologies, LLC |access-date=10 June 2019 |date=2 March 2015}}</ref>
<ref name="oculusblog-spacewarp">{{cite web |last1=Beeler |first1=Dean |last2=Hutchins |first2=Ed |last3=Pedriana |first3=Paul |title=Asynchronous Spacewarp |url=https://developer.oculus.com/blog/asynchronous-spacewarp/ |website=Oculus Developer Blog |publisher=Facebook Technologies, LLC |access-date=10 June 2019 |date=10 November 2016}}</ref>
<ref name="oculusblog-asw2">{{cite web |last1=Aksoy |first1=Volga |last2=Beeler |first2=Dean |title=Asynchronous Spacewarp 2.0|url=https://developer.oculus.com/blog/developer-guide-to-asw-20/ |website=Oculus Developer Blog |publisher=Facebook Technologies, LLC |access-date=18 August 2020 |date=9 August 2019}}</ref>
<ref name="valve-interleaved">{{cite web |last1=Leiby |first1=Aaron |title=Interleaved Reprojection now enabled for all applications by default |url=https://steamcommunity.com/app/358720/discussions/0/385429254937377076/ |website=Steam Community |publisher=Valve |access-date=10 June 2019 |date=26 March 2016}}</ref>
<ref name="steamvr-smoothing">{{cite web |last1=Vlachos |first1=Alex |title=Introducing SteamVR Motion Smoothing |url=https://steamcommunity.com/games/250820/announcements/detail/1705071932992003492 |website=Steam Community |publisher=Valve |access-date=10 June 2019 |date=27 November 2018}}</ref> </references>
{{Mixed reality}}
Category:Virtual reality
{{compu-graphics-stub}}