What is Asynchronous Timewarp and Why Should You Care?

What is Asynchronous Timewarp and Why Should You Care?

As much as the name may suggest. Asynchronous Timewarp (ATW) is not a method for travelling back in time to visit the Dinosaurs or experience your very own Back to the Future adventure. It is in fact a much more earthly technology that relates to Virtual Reality (VR) experiences.

First let's explain the problem that Asynchronous Timewarp is attempting to solve. In the real world you turn your head quickly in any direction to look at any object you wish. Your body is very accustomed to doing this and knows what to expect.

Virtual Reality attempts to duplicate this experience inside the Head Mounted Display (HMD). The HMD via its organic light-emitting diode (OLED) screen shows you the computer generated virtual world, and then with each movement of your head changes the display to show you the image. If you do this slowly then the computer can pretty easily keep up with you. However the faster you move your head, the faster the computer needs to refresh the display.

Over the years it has been found that the minimum number of times the screen needs to refresh to keep up with you is 60 Frames per second (FPS) and is often referred to as 60 Hz (Cycle per second).

If the HMD display cannot keep up when you move your head, then the image is delayed and you'll view the image just a second, or even a fraction of a second too late. This experience is very jarring and can quickly cause nausea. Therefore the HMD needs to keep up with your movement to provide what is often referred to as Presence. Presence is the HMD fooling your brain into thinking what you're viewing is similar to what you may experience in the real world. The following video by Brad Davis helps to illustrate the effect of jarring.

The headsets arriving in 2016 such as the Oculus Rift and HTC Vive can refresh at 90 fps. Herein lies the problem. If you read any review of a game today and review their performance figures the FPS achieved by the game is often not 90 fps or even 60 fps. Often the minimum FPS drops down if there is lots of action on the screen.

Asynchronous Timewarp cannot globally increase the FPS from 50 to 90, you will need a faster video card to do that. But it can attempt to fill in the gaps when the FPS drops for a moment or two and remove or greatly reduce the jarring effect.

So how is this done?

Firstly, there is Timewarp. Timewarp is a technique that warps the rendered image before sending it to the display in order to correct for head motion that occurred after the scene was rendered and thereby reduce the perceived latency (Delay)

The basic version of this is orientation-only timewarp, in which only the rotational change in the head is corrected for; this has the considerable advantage of being a 2D warp, so it does not cost much computer performance when combined with the other methods. For reasonably complex scenes, this can be done with much less computation than rendering a whole new frame.

Asynchronous timewarp refers to doing this on another thread in parallel (i.e. asynchronously) with rendering. Before every refresh, the ATW thread generates a new timewarped frame from the latest frame completed by the rendering thread.

Video card manufactures have started adding this technology into their drivers and cards. NVIDIA’s calls their various VR technologies Gameworks VR and AMD calls theirs LiquidVR. Both essentially attempt to solve the same problem by reducing latency as much as possible and to help the developer achieve VR presence.

So there you have it. Asynchronous Timewarp is not about time travel and really about reducing VR jarring and improving presence. If your video card is just on the cusp of being good enough for VR then this technology may just get you there. Of course nothing is better than a game that performs at a native 90 fps or more. To achieve that will require great game optimization and an expensive video card.

What is Asynchronous Timewarp and Why Should You Care?" data-width="50" data-layout="button_count" data-action="like" data-show-faces="true" data-share="true">

blog comments powered by Disqus