VR API support in Games

Various recent discussions have been somewhat confusing about what it takes to add VR support to a game, and specifically what it takes to support multiple VR devices. As usual there are several layers to the issue so some degree of confusion is pretty understandable.

At its most simple level VR support is provided by two key aspects-
1) rendering a stereo view of the scene into two textures (or one texture with one eye on one side and the other on the other side) and handing that off to the VR api. At that point the VR API does a bunch of complex stuff including some corrections, distortion for its optics (which can be calibrated for individual devices) and composting additional system UI. But none of that latter stuff is something the app developers have to worry about.
2) Updating the head position as the HMD is tracked. The underlying VR API should provide the game with a “pose” that represents the exact location and orientation of the head so that as you move your head around in the real world your view will exactly correspond.

At the above level it should be very easy for VR game authors to target multiple vendors headsets. If you are using Unity or Unreal Engine, support for both the Oculus and OpenVR SDKs are built-in / available with the addition of a simple plug-in. Better yet OpenVR is designed with a driver model for different hardware and our goal is to support any major HMD if you use it (although we are limited in our ability to promise specific support because vendors can change their APIs in breaking ways at any time and then we need to update).

Beyond the basics of the headset and scene rendering are other issues around the interactions that the game supports. If your game doesn’t use controllers and is a basic seated or simple standing experience, it should pretty easily work with any headset. In a similar fashion if you use non-tracked controllers like the Xbox or Steam controllers, anyone can buy one of those and use it with any headset. Tracked controllers become a more complicated problem- they each have some more specific behaviors and are tied to the specific tracking system. So in the short run, it would be hard to mix and match the controllers and if a specific game expects the HTC Vive trackpad input as part of its interaction, or another game is designed around the Oculus Touch specific features those might be harder to support across both platforms.

Our goal with SteamVR/OpenVR all along has been to develop technology and make it available to others in the VR community so that we can have high quality VR that doesn’t make people sick and where our customers can buy any VR equipment and enjoy their games on it. We hope Lighthouse will become a standard for tracking so that you can use controllers from many vendors (in many styles) to interact with all your games, but the OpenVR APIs can also work with non-lighthouse tracked controllers. Hopefully the VR industry can avoid following the early days of the 3d-accelerator market where games were created that only worked with one vendors hardware.

Leave a Reply

Your email address will not be published. Required fields are marked *