First Contact - Oculus Quest Port
This was our second contract working with the Oculus team - this time, to port the First Contact Oculus Rift demo to the upcoming Oculus Quest. This was quite a big task, as, in addition to the vast difference in power between a PC capable of running Oculus Rift and the upcoming mobile based Quest platform, the original Rift version (from our understanding) hadn’t even been initially intended as a full product, so there was a lot that needed to be optimized.
My job was to coordinate the graphics side of the port. This involved working with our artists to help optimize assets wherever possible and reducing material complexity as much as we could. We managed to bring both the triangle count and number of draw calls in the scene by orders of magnitude.
The original game relied almost entirely on dynamic lighting, which obviously wasn’t tenable on the Quest platform, but the changes in lighting were vital to the experience of the game. What I ended up doing was going into the engine to add a new shading model that would let us “fake” dynamic lighting through dynamic adjustment of the ambient section of the shading pipeline. As a result, almost every material in the final game is unlit, allowing for a vast improvement in performance. This also allowed us to fake global lighting effects like glow colors during certain points of the game.
In addition to these improvements, I cut down the overall complexity of all materials wherever possible. Our biggest bottleneck ended up being number of texture samples, so I was able to cut unnecessary texture maps, combine others, and replaced many with purely procedurally generated logic.