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

Application SpaceWarp

vrarwiki.com · VR & AR Wiki
Application SpaceWarp
Information
Type Frame synthesis
Industry Virtual reality
Developer Meta Platforms
Operating System Meta Horizon OS
Supported Devices Meta Quest headsets (Quest and Quest 2 at launch)
Release Date November 2021 (V34 OS and SDK)
Website https://developers.meta.com/horizon/documentation/native/android/os-app-spacewarp/


Application SpaceWarp (AppSW) is a frame synthesis technique from Meta Platforms for standalone Meta Quest headsets. An application that uses it renders at half the display's refresh rate, for example 36 frames per second on a 72 Hz display, and supplies a motion vector buffer and a depth buffer along with its normal eye buffers. The headset's compositor uses that data to synthesize the missing frames, so the display still receives 72 frames per second.[1] Meta stated that in its initial testing AppSW gave applications "up to 70 percent additional compute", a figure it derived from internal Unreal Engine 4 titles on Quest 2.[1]

AppSW is related to the Asynchronous Spacewarp (ASW) feature of the Oculus PC runtime but works differently. PC ASW estimates motion from previously rendered frames and switches on automatically when a computer cannot hold the target frame rate. AppSW uses motion vectors that the application computes itself, and the developer decides when it is active.[1] Meta introduced AppSW at Connect 2021 and declared it ready for production use with the V34 OS and SDK release in November 2021.[1][2] On the OpenXR level it is exposed through the vendor extension XR_FB_space_warp, which the Khronos Group has since marked as deprecated in favor of the multi-vendor XR_EXT_frame_synthesis extension.[3][4]

Reviewed 15 October 2026. All claims checked against Meta's AppSW and DirectProjection blog posts, Meta's native, Horizon OS, Unity, Unreal and WebXR AppSW documentation, the Khronos XR_FB_space_warp and XR_EXT_frame_synthesis sources and changelog, Unity's URP, OpenXR and Android XR SpaceWarp pages, Google's Android XR extension list, UploadVR, Road to VR, MIXED, The Ghost Howls, Meta's Showdown post and the YORO arXiv preprint. About review dates.

History

The XR_FB_space_warp extension was first added to the OpenXR registry in specification release 1.0.19 (24 August 2021). Its version history lists revision 1 on 4 August 2021 by Jian Zhang, and its listed contributors are Jian Zhang, Neel Bedekar and Xiang Wei, all of Facebook.[4][5]

Meta presented Application SpaceWarp in a developer session at Connect 2021.[1] Road to VR reported that Meta claimed the technique "can increase the performance of Quest apps" by 70 percent, and quoted Meta tech lead Neel Bedekar describing 45 frames per second on a 90 Hz display as the "sweet spot" for developers. Bedekar also said the Quest version produces "significantly" better results than PC ASW because applications generate accurate motion vectors themselves.[6] On 11 November 2021, Meta's developer blog announced that with the V34 OS and SDK release the feature was "ready for full, production usage", with integrations for Unity, Unreal Engine 4 and native OpenXR applications and new AppSW metrics in the OVR Metrics Tool.[1][6]

In December 2021 Meta described two compositor features that are enabled automatically for AppSW apps and need no extra data from the application. DirectProjection, added in v34, projects quad and cylinder layers straight onto the final image with the latest head pose instead of passing them through TimeWarp or SpaceWarp. Compositor Layer SpaceWarp, added in v35, extrapolates the pose of layers that move relative to the app space from the last two submitted poses.[7] Revision 2 of XR_FB_space_warp, dated 7 February 2022, added a flag that lets an application ask the runtime to skip extrapolation for a particular frame.[5]

Few titles used AppSW at first. In April 2022 MIXED noted that only a few examples existed because apps have to be optimized for the technique, and described Incuvo's Quest port of Green Hell VR, released on 7 April 2022, as the first game in the Oculus Store to use it, to the writer's knowledge.[8] By May 2022 Meta had released a Quest port of Showdown, a Epic Games Unreal Engine 4 demo first shown at Oculus Connect in 2014, on App Lab. Meta said the finished Quest 2 version runs at a consistent 90 FPS and that the headroom from AppSW let it add a color lookup table and many more particles for bullet impacts and explosions. The demo's render menu lets users toggle AppSW.[9][10]

The multi-vendor XR_EXT_frame_synthesis extension was added in OpenXR specification 1.1.45 (5 February 2025). Its version history describes it as "converted from fb_space_warp", and its listed contributors are from Meta, Varjo, Samsung Electronics, Microsoft, Collabora and ByteDance. OpenXR 1.1.58 (31 March 2026) marked XR_FB_space_warp as deprecated by XR_EXT_frame_synthesis, which the changelog says "provides the same functionality with a slightly modified interface".[4][11]

How it works

With AppSW active, the application renders three things each frame: the color eye buffer, a motion vector buffer and a depth buffer. The motion vectors are generated analytically by the application, so Meta describes them as "basically the ground truth", rather than being estimated from earlier frames.[1] In Meta's description, the vertex shader computes each vertex's clip-space position for the current and previous frame, and the fragment shader converts both to normalized device coordinates and subtracts them, which gives a three-dimensional motion vector that includes motion in depth.[12] The motion vector and depth images do not need full resolution: on Quest 2 the default eye buffer is 1440x1584, while the default motion vector texture is 368x400.[12]

The runtime then synthesizes frames in two steps. Frame extrapolation uses the motion vectors to predict where pixels will be in the next frame, and Positional TimeWarp uses the depth data to correct for head translation as well as rotation. Meta states that Phase Sync and Positional TimeWarp are enabled automatically in OpenXR AppSW apps, and that with these the head-pose latency of an AppSW app can be "even better than latency on a full FPS app without AppSW". Meta adds that controller input latency "may still be higher than non-AppSW apps".[12] UploadVR noted that technologies like ASW usually almost double latency, because input is sampled only half as often.[2]

AppSW is supported on only one composition layer, which must be a projection layer. The application can turn it on or off on any frame by attaching or removing the space warp structure in its frame submission.[3] Interface elements drawn on separate compositor layers can stay at full frame rate without AppSW.[12] The extension also carries an "app space delta pose", which describes artificial movement of the player's reference space (for example teleportation or scripted movement) so the runtime can account for it or skip extrapolation after large camera jumps.[3][11]

Frame rates

Display refresh rate AppSW render rate
72 Hz 36 FPS[1]
90 Hz 45 FPS[1]
120 Hz 60 FPS[1]

UploadVR reported at launch that Quest 1 apps using the feature render at 36 FPS, while Quest 2 developers can choose 36, 45 or 60 FPS through the refresh rate mode.[2] Meta noted that the percentage gain is smaller at higher target rates, so 45/90 gives less benefit than 36/72.[1] Unity's manual states that spacewarp "doesn't work at all" if the frame rate is already very low, around 18 FPS or less.[13]

Comparison with PC ASW

Aspect Asynchronous Spacewarp (PC runtime) Application SpaceWarp (Quest)
Motion vectors Estimated from earlier frames[1] Generated by the application[1]
Activation System feature, triggers automatically when the PC falls behind[1] Controlled entirely by the developer, per frame[1]
Exposure to artifacts Mainly affects users of lower-spec PCs[1] An app can run at half rate all the time, so any artifacts reach all users[1]

Requirements and engine support

AppSW is an OpenXR-only feature.[3] At launch the Unity and Unreal Engine 4 integrations required Vulkan with multiview rendering; native OpenGL ES apps could use AppSW, but Meta recommended Vulkan because late latching depends on Vulkan's memory model.[1] UploadVR reported that the legacy Oculus API was not supported and that Unity apps had to use a Scriptable Render Pipeline such as URP.[2] Enabling AppSW means changing an app's materials and render pipeline: Meta warns that "any materials that have not been modified to support AppSW will produce artifacts".[3] Meta lists the total memory footprint of the extra buffers as 14 MB on Quest 2 (1440x1584) and 18 MB on Quest 3 (1680x1760).[12]

Platform Support
Native (OpenXR) XR_FB_space_warp extension; the Meta SDK includes an XrSpaceWarp sample[3]
Unreal Engine Before 5.7, through the Oculus-VR Unreal Engine fork with the Meta XR plugin; from 5.7, built into the engine as "Frame Synthesis", enabled with the xr.OpenXRFrameSynthesis setting; requires Vulkan and mobile multi-view[14]
Unity (Meta XR SDK) Unity 2022.3.15f1 or later, 6000.0.9f1 or later, or 6000.4.0f1 or later (recommended); Vulkan only; URP with SpaceWarp support; toggled with OVRManager.SetSpaceWarp[15]
Unity (URP, OpenXR plug-in) Unity 6.1 or later, OpenXR plug-in 1.11.0 or later, URP 17.0.3 or later with Render Graph, Vulkan, an Android build target and a headset that supports URP Application Spacewarp[13]
Unity (Android XR) Listed as an Application SpaceWarp feature of the Unity OpenXR Android XR package; Android XR uses right-handed NDC motion vectors[16]
WebXR "WebXR Space Warp", a draft addition to the WebXR Layers specification; Meta's browser version 24.2 or later, behind an experimental flag[17]
Godot Godot 4.5 added Application SpaceWarp support on Meta Quest and Pico headsets[18]

For WebXR, Meta states that "On Meta Quest headsets, the underlying technology that powers WebXR Space Warp is called Application SpaceWarp."[17] Outside Meta's own runtime, Google's Android XR developer documentation lists XR_FB_space_warp among the third-party OpenXR extensions it supports.[19]

Limitations and artifacts

Meta's documentation lists several sources of visual problems. Mismatches between expected and actual motion in the motion vector data cause stuttering, rippling or stretching, and objects whose materials do not write motion vectors appear to stutter because they do not move in synthesized frames. Transparent and opaque objects that overlap give pixels ambiguous motion, so Meta generally advises leaving transparent objects out of the motion vector pass. Near-field, fast-moving transparent objects such as rendered controllers, very fast object rotation and complex vertex animation can also cause errors, and plain backgrounds show distortion more easily than textured ones.[12] Unity's documentation adds that particle systems, objects with shaders lacking SpaceWarp support and composition layers are not warped, so they effectively render at half frame rate.[20] Meta's 2021 announcement called AppSW "not a silver bullet" and left testing for glitches and regressions to developers.[1]

Reception

In a December 2021 hands-on with Unity 2020.3 and Meta's modified URP, The Ghost Howls found that a test scene with real-time shadows that ran at roughly 20 to 40 FPS without AppSW stayed mostly above 50 FPS with it, sometimes reaching the full 72 FPS. The review noted double-image edges around opaque objects seen behind transparent ones, doubling on custom shaders not updated for motion vectors, artifacts on teleporting and controller input sampled at half rate. Its author called AppSW powerful but not a silver bullet, and said he preferred native 72 FPS when it was achievable.[21]

Research

Academic work on mobile VR rendering has referred to the technique. In the June 2025 arXiv preprint of "You Only Render Once", which generates both eye images from a single monocular rendering, Xingyu Chen and colleagues cited Meta's Application SpaceWarp developer guide when arguing that reprojection approaches requiring motion vectors already involve substantial computation, which they considered unsuitable for mobile devices.[22]

See also

References

  1. ↑ 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 Jian Zhang, Neel Bedekar, Leonard Tsai, Xiang Wei (2021-11-11). "Introducing Application SpaceWarp". Meta Horizon OS Developers Blog. Meta. https://developers.meta.com/horizon/blog/introducing-application-spacewarp/. Retrieved 2026-10-15.
  2. ↑ 2.0 2.1 2.2 2.3 David Heaney (2021-11-11). "Application SpaceWarp Can Effectively Give Quest Apps 70% More Performance". UploadVR. https://www.uploadvr.com/quest-2-application-spacewarp/. Retrieved 2026-10-15.
  3. ↑ 3.0 3.1 3.2 3.3 3.4 3.5 "Application SpaceWarp Developer Guide (Native)". Meta Horizon OS Developers. Meta. https://developers.meta.com/horizon/documentation/native/android/mobile-asw/. Retrieved 2026-10-15.
  4. ↑ 4.0 4.1 4.2 "OpenXR-Docs changelog (CHANGELOG.Docs.md)". GitHub. Khronos Group. https://github.com/KhronosGroup/OpenXR-Docs/blob/main/CHANGELOG.Docs.md. Retrieved 2026-10-15.
  5. ↑ 5.0 5.1 "XR_FB_space_warp (specification source)". GitHub. Khronos Group. https://github.com/KhronosGroup/OpenXR-Docs/blob/main/specification/sources/chapters/extensions/fb/fb_space_warp.adoc. Retrieved 2026-10-15.
  6. ↑ 6.0 6.1 Ben Lang (2021-11-05). "Now Available: New Quest Rendering Tech Promises Massive Gains in App Performance". Road to VR. https://roadtovr.com/oculus-quest-application-spacewarp-asw/. Retrieved 2026-10-15.
  7. ↑ Guodong Rong, Jian Zhang, Steve Lansel (2021-12-14). "AppSW Enhancements with DirectProjection and Compositor Layer SpaceWarp". Meta Horizon OS Developers Blog. Meta. https://developers.meta.com/horizon/blog/appsw-enhancements-with-directprojection-and-compositor-layer-spacewarp/. Retrieved 2026-10-15.
  8. ↑ Tomislav Bezmalinovic (2022-04-08). "Meta Quest 2: Green Hell uses Meta's powerful new rendering technology". MIXED. https://mixed-news.com/en/?p=3618. Retrieved 2026-10-15.
  9. ↑ Zac Drake (2022-05-06). "Showdown on Quest Part 1: How App SpaceWarp Improves Performance". Meta Horizon OS Developers Blog. Meta. https://developers.meta.com/horizon/blog/showdown-on-quest-part-1-how-app-spacewarp-improves-performance-/. Retrieved 2026-10-15.
  10. ↑ Tomislav Bezmalinovic (2022-05-09). "Quest 2: Try Meta's new rendering technology with the official demo". MIXED. https://mixed-news.com/en/quest-2-try-metas-new-rendering-technology-with-the-official-demo/. Retrieved 2026-10-15.
  11. ↑ 11.0 11.1 "XR_EXT_frame_synthesis (specification source)". GitHub. Khronos Group. https://github.com/KhronosGroup/OpenXR-Docs/blob/main/specification/sources/chapters/extensions/ext/ext_frame_synthesis.adoc. Retrieved 2026-10-15.
  12. ↑ 12.0 12.1 12.2 12.3 12.4 12.5 "App Spacewarp". Meta Horizon OS Developers. Meta. https://developers.meta.com/horizon/documentation/native/android/os-app-spacewarp/. Retrieved 2026-10-15.
  13. ↑ 13.0 13.1 "URP Application Spacewarp". Unity Manual (Unity 6.2). Unity Technologies. https://docs.unity3d.com/6000.2/Documentation/Manual/xr-graphics-spacewarp.html. Retrieved 2026-10-15.
  14. ↑ "Application SpaceWarp Developer Guide (Unreal)". Meta Horizon OS Developers. Meta. https://developers.meta.com/horizon/documentation/unreal/unreal-asw/. Retrieved 2026-10-15.
  15. ↑ "Application SpaceWarp Developer Guide (Unity)". Meta Horizon OS Developers. Meta. https://developers.meta.com/horizon/documentation/unity/unity-asw/. Retrieved 2026-10-15.
  16. ↑ "Application SpaceWarp - Unity OpenXR Android XR 1.3.2". Unity Documentation. Unity Technologies. https://docs.unity3d.com/Packages/[email protected]/manual/features/spacewarp.html. Retrieved 2026-10-15.
  17. ↑ 17.0 17.1 "WebXR Space Warp". Meta Horizon OS Developers. Meta. https://developers.meta.com/horizon/documentation/web/webxr-space-warp/. Retrieved 2026-10-15.
  18. ↑ David Heaney (2025-11-11). "Godot Now Supports More XR Features & Builds A Universal OpenXR APK". UploadVR. https://www.uploadvr.com/godot-now-supports-more-xr-features-builds-a-universal-openxr-apk/. Retrieved 2026-10-15.
  19. ↑ "Build with supported OpenXR extensions". Android Developers. Google. 2026-08-05. https://developer.android.com/develop/xr/openxr/extensions. Retrieved 2026-10-15.
  20. ↑ "Understand Application SpaceWarp". Unity OpenXR Plugin 1.15 Documentation. Unity Technologies. https://docs.unity3d.com/Packages/[email protected]/manual/features/spacewarp/spacewarp-overview.html. Retrieved 2026-10-15.
  21. ↑ Skarredghost (2021-12-12). "All you need to know on Application SpaceWarp on Unity: how-to and review". The Ghost Howls. https://skarredghost.com/2021/12/12/application-spacewarp-unity-how-to-review/. Retrieved 2026-10-15.
  22. ↑ Xingyu Chen, Xinmin Fang, Shuting Zhang, Xinyu Zhang, Liang He, Zhengxiong Li (2025-06-18). "You Only Render Once: Enhancing Energy and Computation Efficiency of Mobile Virtual Reality". arXiv. arXiv:2506.15183. https://arxiv.org/abs/2506.15183. Retrieved 2026-10-15.