We take an exclusive early look at VorpX, a new commercial 3D Driver from developer Ralf Ostertag which promises to graft Oculus Rift support onto existing games that were developed and released long before the Rift was even a twinkle in Palmer Luckey’s eye. How well can it work? Let’s find out.
Inject VR Into Your Old Games
The Oculus Rift Developer Kit is finally in people’s hands (including ours!)! in fact, according to Palmer Luckey, all Kickstarter Dev Kits will have shipped to their lucky recipients by the end of May. And despite both the original Kickstarter pitch and Oculus VR’s constant assertions since it’s spectacular $2.5M successful funding run that this is resolutely NOT ready for the regular gamer, not many listened. To be honest, there wasn’t much chance that the most exciting development in gaming for years wasn’t going to be snapped up by gamers looking to bring their 90s dreams of Virtual Reality to life.
So it’s day zero for VR then, which of course means that very few actual games exist with support for the Rift. So, what do Rift owners give their new gadget to feed in the mean time?
What is VorpX?
For a Virtual Reality HMD (Head Monuted Display) to deliver a compelling experience, you need to address a few issues that unsupported games suffer from:
1. There’s no Head Tracking support. Moving your head has no effect on your view of the game’s world.
2. There’s no image pre-warping. The Oculus Rift uses Aspheric lenses which distorts light passing through them to achieve it’s high Field of View. So, in order for games to ‘look’ right to the user, the image must be warped (or undistoreted [sic] if you like) to correct this distortion and any aberrations.
3. Stereo 3D support is currently provided as either GPU specific implementations (i.e. nVidia 3D Vision) or 3rd party drivers (i.e. Tri-Def).
From the official website:
VorpX is a 3d-driver for DirectX9-11 games that is specifically geared towards VR-devices like the Oculus Rift. Additionally to ‘making games 3d’ it offers various features to tackle many of the issues that arise when playing games on the Rift that are not designed for it.
To explain further, VorpX hijacks the rendering and input IO pipeline when a game initiates 3D acceleration and maps head-tracking input data from the HMD to mouse commands within the game. Along the way, VorpX also forces the rendering of two in-game ‘cameras’ so that distinct, shifted views (one for each eye) can be presented to the HMD’s screen. Finally, the views are ‘warped’ to accompany the Oculus Rift’s Aspheric lenses and presented to the HMD’s display ready for viewing.
The practical upshot of all this is that you can (in theory at least) play many games in your library using the Rift, with high-FOV, Stereo 3D and head tracking as if the game had been built with support from the beginning. In theory it’s a little more complicated than that (which we’ll come to later) but this is the core premise behind the product.
For all these reasons, you can understand why VorpX is one of the most hotly anticipated bits of software in the VR community. With that in mind, I spent a couple of weeks with a beta preview version recording my thoughts, observations, configuration tips and gameplay to give you the fullest possible picture on whether VorpX is for you.
Know Your Buffers: 3D Reconstruction Explained
As mentioned, VorpX forces the rendering of Stereoscopic 3D as part of it’s injection process – essentially shoehorning depth where none previously existed – hence ‘Reconstruction’.
VorpX supports 2 main methods of 3D Reconstruction, Geometry and Z-Buffer (or 2D + Depth) based rendering. It’s important to understand the differences between them as it helps illustrate the flexibility and power of VorpX whist highlighting some of the compromises that are needed to make it work effectively.
Z-Buffer Mode (aka 2D + Depth)
The default mode in VorpX (referred to as ‘normal’ in the menu), Z-Buffer reconstruction renders depth based on objects position on the Z-axis in a 3D rendered scene. I defer to this excellent article on 3D rendering at Gamasutra:
2D + depth rendering creates the 3D effect in games by sampling the geometry in the scene to obtain the depth-map, and then using it to generate a second point of view from the regular 2D color image. This technique renders the scene for the left eye, and then creates the image for the right eye using a per-pixel displacement based on the depth map — making the results geometrically accurate.
The key advantage to the 2D + depth technique is the low impact that its integration has on production. It requires that the game only render frames once, which has a low performance impact on the game.
- Extremely fast.
- Effective at adding depth and scale to first person views.
- Requires few if any tweaks to game configurations to work.
- 3D / Parallax effect limited when compared to Geometry mode.
The traditional method of rendering 2 distinct views of the same scene, mimicking the way our eyes view the real world. Again from Gamasutra:
In comparison, dual rendering creates the strongest 3D effect, and is used for movies as well as in video games. For movies, to create stereoscopic 3D images using the effect of parallax, film makers need to capture two images shot from slightly different angles. This means 3D-compatible cameras are needed in order to record the two images simultaneously. This allows one image for each eye to be projected onto the same screen to create a 3D effect.
In the case of video games, to construct a three-dimensional virtual world, game makers need to position characters, buildings and other objects in a manner that simulates a miniature version of the real world. In doing this, they can position two cameras to capture slightly dissimilar images of the same scene, just as the right and left eyes would do.
- Strongest and most effective 3D / Parallax effect
- High rendering overhead. Up to 50% slower
- Lowest compatibility for existing games (shader / lighting and post processing effects can cause glitches)
These two methods with their drastically different approaches to 3D rendering clearly both have their strengths and weaknesses. So it’s refreshing to note that VorpX not only includes both options, but that you can swap them on-the-fly whilst the game is running, giving you the ability to decide which method suits which game suits which method best. There is one caveat here however, Geometry mode will only work with games which can run in DirectX 9 mode.
Anyway, with the science is out of the way, onto the important stuff .. Games!