8 Performance and quality issues

 

In this chapter we cover

  • Why performance is so critical to VR applications
  • Why the performance demands of VR applications are higher than non-VR applications
  • Using asynchronous timewarp to deal with poor renderer performance
  • Using dynamic framebuffer scaling to improve renderer performance

The performance of your VR app is a critical component key to its success or failure, far more so than in conventional applications.  With conventional applications, most of the time, poor quality applications will result in disinterest. A financial disaster perhaps, but generally no one is physically hurt. For VR, the stakes are higher. In VR, poor quality can lead to more than disinterest in your application and financial loss, it may also lead to users feeling physically ill. So, let’s take a closer look at what the performance criteria are for VR applications and what you can do to meet that criteria.

Achieving a given level of performance in VR has a higher cost than doing so in a conventional application, due to the need for rendering two views of a given scene, rather than one, as well as the need to render at a higher resolution than the target display due to the nature of the distortion effect. 

Asynchronous timewarp addresses drops in renderer performance by allowing an application to use timewarp on previously rendered frames if a new frame isn’t ready by the time the display is about to refresh.

Higher performance requirements

Stricter performance requirements

Higher rendering cost

Follow the SDK guidelines

Optimize your rendering pipeline

Detecting performance issues

Asynchronous timewarp to the rescue

Locking and waiting

Buffering poses and frames

Members

Startup and teardown

Input handling

The distortion thread

The rendering `thread`