Down The Rabbit Hole w/ Oculus Quest: The Hardware + Software

Oculus Developer Blog
Posted by Chris Pruett
May 2, 2019

My name is Chris Pruett, and I'm the Director of Content Ecosystem at Oculus. I gave a talk at the 2019 Game Developers Conference in San Francisco back in March titled Down the Rabbit Hole with Oculus Quest. The talk was a brief overview of Oculus Quest from a developer standpoint. This post is part one of two covering that talk. Today, I provide detail on the hardware/software stack, and tomorrow I will be sharing more information on the development best practices and store policy.

As you’ve probably heard by now, Oculus Quest is a standalone 6DOF, positionally tracked VR headset that supports roomscale environments and virtual hands. There’s no need for a PC or external trackers on your desk, or mounted on your walls. Quest has four sensors mounted on the edges of the headset that track the motion of your head as you walk around your space.

Oculus Insight, the technology that powers Quest’s positional tracking, also tracks the Oculus Touch controllers that come with the HMD. Quest can track large spaces, though we recommend 25 ft x 25 ft as the maximum play area.

Oculus Quest is designed for video games. We’ve already announced a bunch of popular titles, including Beat Saber, SUPERHOT, Robo Recall, Thumper, Moss and Dance Central, as well as a number of original titles like Shadow Point, Apex Construct, and Face Your Fears 2, and there are many more coming at launch. Of course, Oculus Quest will also be home to narrative experiences like Vader Immortal and creative applications like Tiltbrush, but our core focus is VR games.

The Hardware

Oculus Quest has two 1600x1440 OLED screens that run at 72 frames per second. By default, apps render to 1216x1344 eye textures. Like Oculus Go, Quest uses an open-ear audio solution that pipes sound though the straps directly into your ears without covering them. It also supports regular headphones via stereo headphone jacks on each side of the headset.

Internally Oculus Quest runs on a Qualcomm Snapdragon 835 chipset, and the headset has been designed with the explicit goal of maximizing the performance of this chip. In particular, we have designed a robust cooling solution for Oculus Quest that allows us to run the CPU at much higher clock rates, for much longer periods than other embedded devices can get away with. The Snapdragon 835 has 8 cores, 4 of which are large, fast “gold” cores that run up to 2.3 Ghz. Of the four gold cores, applications have full access to 3 of them, while we reserve the fourth for TimeWarp and other system services. The remaining low-power “silver” cores are reserved for tracking and other system software. Like Oculus Go, Quest supports dynamic clock throttling, so applications can automatically scale the speed of the GPU and CPU up or down depending on their needs at the time. This lets us ensure your application has full power when needed, but also won’t burn the battery when running a lightweight scene.

The Snapdragon 835 chipset includes an Adreno 540 GPU, which runs at 710 Mhz. This is a “binning” or “tiled” GPU, which means that it cuts the scene up into a grid of tiles and renders each in sequence. Oculus Quest comes with 4 GB of memory, 2.75 GB of which is available for applications.

Quest ships with two Oculus Touch controllers. These controllers are the same button layout as the original Oculus Touch controllers that ship with Rift: AB/XY, two analog sticks, two index triggers, two grip triggers, a menu button and a home button. They look a little different--in particular, you’ll notice that the distinctive rings have been flipped upwards on the new Oculus Touch controllers. This is so that the sensors in the headset can see the controllers and track them in space without your hands occluding them. In fact, the sensors track your hands in a pretty large area. There are some spots, like behind your back, where the sensors cannot see the Touch controllers, and in those cases we’ll estimate the position of your hand based on other data.

The Software

Let’s talk about the software stack that actually runs on Oculus Quest. Quest is based on Android and has full support for Unity and Unreal. We also have a native C++ SDK for folks using other engines. Quest supports OpenGL ES 3.1 and Vulkan. We’ve made a number of modifications to the standard Android internals in order to maximize performance, specifically for VR applications.

One of those optimizations is Fixed Foveated Rendering. This is a feature we originally developed for Oculus Go, but we’ve improved it on Quest. Fixed Foveated Rendering allows us to render each eye texture at full resolution in the center, right where your eye is focused, while reducing the render resolution at the periphery. Because the lower resolution areas of the image end up in your peripheral vision, they are very difficult to notice. This optimization can save up to 30% of GPU time for fill-bound titles, while it can be toggled at any time depending on the needs of the scene.

Another addition is support for asymmetric warping of eye textures. Like all VR headsets, Oculus Quest warps the output of the game engine to fit the curvature of the lenses, in order to give the user an undistorted view of the scene that covers their field of vision. As some of you may know, in the past we’ve rendered both the left eye and the right eye textures with the same distortion, which leads to wasted black pixels at the edges of the output frame. On Quest, we now support different (asymmetric) distortion meshes for the left and right eye, which allows us to increase the pixel density near the focal point of the eye and waste fewer pixels on the edges. Asymmetric warping is free and automatic to Quest apps (we’ve already done the integration with Unity and Unreal).

Graphics performance is absolutely critical for VR games, so with Quest we are providing support for a number of graphics profiling tools including Renderdoc, Qualcomm’s Snapdragon Profiler, and our own OVR Metrics Monitor.

In addition to low-level optimizations and improvements, Oculus Quest packs a number of user interface improvements as well. One of the most important of these is the Guardian setup. To define your play area on Quest, you put on the HMD and use your controller like a laser pointer to draw an outline on the floor. Using the Quest sensors, you can see your room and quickly paint a region that defines your safe play area. Quest will remember your play area and associate it with your room, and if you play in multiple locations you can set up Guardian boundaries for each (up to five).

Oculus Quest is launching May 21st, 2019 for $399. We’ll have about 50 titles available at launch, with a lot more coming thereafter. You can keep up with some of the titles we’ve announced with our #QuestCountdown blog posts, and be sure to return tomorrow for part two of this series when I dive into development best practices and Quest Store insights.

- Chris Pruett