We’ve seen how hardware, software, and graphics constraints can all work to produce latency. Now it’s time to put them all together, and ask what we can take away from this analysis.

The best way to illustrate the impacts of these different factors is to look at their respective contributions under different scenarios. These measurements are averages across a few different machines, so performance on your machine in particular can be better or worse than these numbers.

We’ll start off in the worst-case scenario (however, one that is frighteningly typical):

Latency in USB2 Mode, 60hz Display, VSync On

This is incredibly frustrating to us here at Leap Motion, since the vast majority of the perceived latency is outside of our control. However, let’s see what happens as we disable vertical synchronization:

Latency in USB2 Mode, 60hz Display, VSync Off

Disabling VSync saves anywhere from 16ms to over 30ms, depending on the particular graphics system. However, the downside to disabling VSync is the presence of screen tearing, as we discussed in part one.

If you happen to have a USB3 cable and port, we showed how this can dramatically reduce data transfer time between the device and your computer. Here’s how that reduction compares to the other sources of latency:

Latency in USB3 Mode, 60hz Display, VSync Off

In this setup under High-Speed mode our hardware and software together only contribute a little over 10% of the overall perceived latency. (Did I mention we were frustrated?)

High-performance “gaming” monitors are fairly common these days, offering reduced input lag and panel response time. Let’s take a look at the numbers of the best overall configuration:

Latency in USB3 Mode, 120hz Gaming Display, VSync Off

For the first time, in High-Speed mode, we’ve crossed below our 30-millisecond threshold mentioned earlier. The hope is that as time passes, you won’t need to jump through as many hoops to achieve that level of responsiveness, and instead it will be taken for granted.

Takeaways

We are continuously improving our software performance in order to reduce CPU load and increase responsiveness. However, the data tells us that the overall perceived latency depends on a lot of factors that are outside our control. So, in the meantime, here’s what you can do to optimize your experience:

  • Use the device with a USB3 cable and port so that faster transfer rates are used.
  • Use a 120hz monitor with a low response time. There are many “gaming” monitors nowadays that will work well, but you will sacrifice wide viewing angles and color accuracy as a result.
  • In your graphics driver settings, disable vertical synchronization (VSync). If you want to leave VSync on, enable triple buffering to compensate for some of the additional delay. With a 120hz monitor you might find VSync on with triple buffering enabled to be the best experience.
  • If you need to squeeze out the maximum responsiveness, run the device in “high speed” mode, which will reduce tracking quality in favor of speed and framerate.
  • As a last resort, use a CRT display. These bulky analog displays have no input lag, higher refresh rates, and effectively zero panel response time. However, it’s 2013 and these may be hard to find.

What do you think about the problem of latency? Post your thoughts in the comments.

UPDATE: June 2014. We’ve been continually refining and optimizing our tracking over the year since this post was published. Latency will always be a challenge, so long as the speed of light and laws of thermodynamics still apply, but these are issues that we’re excited to work on – “not because they are easy, but because they are hard.” The current software currently only uses USB 2.0 data speeds, but in the future will also take advantage of USB 3.0 speeds.