Asynchronous Space Warp (ASW)
- Dominant language
- Rust
- Stars
- 7.9k
- Forks
- 708
- Avg merge
- 3d 23h
- Merged PRs (30d)
- 11
Description
Asynchronous Space Warp is what the PC Oculus Runtime uses when the PC cannot keep up rendering at 90 fps, so it renders every other frame (45 fps) and the missing frames are interpolated from the most recent frame + a depth map of the rendered scene.
ALVR and other OpenVR drivers can implement that, since the depth map can be retrieved from [hDepthTexture](https://github.com/ValveSoftware/openvr/blob/master/headers/openvr_driver.h#L2735). The ASW algorithm must be reimplemented from scratch, it will take time to do that but it's not conceptually hard (it's just a single shader pass).
OpenVR API exposed depth textures since a while ago, but that would have not been a good fit for the Quest 1, since 72Hz / 2 = 36Hz is too low for ensuring a good experience. But now that the Quest 2 supports 90Hz this makes more sense.
I also want to mention that this technique does not lend well to avoid positional stutters. This is because ASW needs the depth map, that needs to be sent from PC to the Quest like any other frame, and this takes time. Waiting for the the depth map to arrive increases latency dramatically, and it might not be feasible for 72 or 90 fps.
So in the end, the advantage of this technique is only to lower the computational power needed to render games on PC.
Contributor guide
Assessment
This issue has not been assessed yet.