In the days leading up to Oculus Quest’s launch, the company’s head of third-party content told VentureBeat that porting higher-end PC titles to the standalone platform was more about art asset formatting than code optimization. Now early third-party Quest developer Immerse is revealing exactly how art reformatting brought a PC-caliber enterprise training app to the Quest in only five weeks.
As Immerse head of product Justin Parry explains, the company has been working with Quest development kits since early 2019, and was tasked with porting DHL’s PC-tethered training app to the tetherless Quest. “Due to the business of the client, the training is played out in a huge, bright warehouse environment,” Parry says. “Our brief was simple: Make it work on the Quest while maintaining the look and feel of the experience as much as possible.”
While Quest’s room-scale (and warehouse-scale) inside-out tracking capabilities would be ideal for an app like this, losing a large, expensive PC in favor of a mobile-class CPU and GPU could be a serious issue — despite Oculus’ suggestion that “the exact same assets” from a Rift app could be used on Quest with reformatting. Some of that Quest reformatting could be achieved instantly with standard Unity settings, but at the unnecessary cost of fidelity. So Parry says that overriding Unity’s settings and several other tricks are necessary.
Unity’s standard shader quality, for instance, defaulted to “low” settings, killing the company’s normal maps. Parry recommends starting with “medium” or “high” so that you can preview everything, then optimize assets from there. Immerse also noticed that a simple texture format change made crisp Rift textures look blurry on Quest, but using a GPU-native format such as RGBA 32-bit generally resolved the problem — and additional tweaks to individual textures can help even more.
Rather than simply reducing polygon counts to reduce Quest asset complexity, Parry says that the headset does better with fewer objects. In other words, performance can be improved just by making a box, a barrel, a floor, and a table into one object that looks identical, but doesn’t need to load four objects to get all the data. While developers can’t just turn every item in a scene into a single object, as that prevents Quest from culling objects that aren’t presently being viewed, creating clusters of related items can make a big difference.
Immerse also used texture atlases and UI sprite atlases to reduce loading times and draw calls, kept sprite texture sizes at 512 pixels square or lower, and reused textures as much as possible to conserve memory. To maximize sprite visual quality at near distances, Parry suggests disabling mip-mapping for close sprites, but strongly advises enabling it for all other textures, since it’s the closest thing to antialiasing that’s available. The textures for near and far distances will likely require individual optimizations, but the visuals will look better in the end.
Perhaps the largest changes were in the lighting department, where Immerse says dropping real-time lighting for everything except “absolutely necessary” situations is critical, relying instead on pre-baked lighting into textures, a process that Unity can handle. Fine-tuning the resolution, padding, and size of lightmaps, as well as adjusting each object’s “scale in lightmap” to place higher priority on highly visible items and lower priority on modest ones, will lead to the best automated results, followed by Photoshopping textures to get them exactly where you want them.
The big picture takeaway from Immerse’s experience is that Quest has just enough power to deliver a compelling VR experience when its limited computing and memory assets aren’t being wasted — and every reduction in number of objects, textures, sprites, and lights seems to make a similar difference to the classic chopping out of major objects or reduction of lifelike objects into boxy analogues. With the proper art optimizations, a warehouse worker in training will be able to actually walk around a warehouse-sized space using Quest without wires rather than being constantly tethered to a PC, which is the general type of experience Oculus envisioned for the standalone hardware.