Oculus's official developer blog covers VR engineering topics such as rendering, hand tracking, Oculus Link, and device unlocking.
HN commenters link it for developer sign-up, best-practices documentation for VR, and the Oculus Go unlock announcement, and compare Meta's spatial APIs to Apple's.
On an unrelated note, in 2021 Carmack and Meta announced [1] unlocking the Oculus Go bootloader, explicitly mentioning that it "opens up the ability to repurpose the hardware for more things today, and means that a randomly discovered shrink wrapped headset twenty years from now will be able to update to the final software version" [2].
I thought that was great, wanted to hack [3] on it a bit, so I went ahead and bought an Oculus Go on the second hand market. Turns out that the quote isn't true at all [4]. Updating the firmware requires enabling developer mode [5]. Enabling developer mode requires activating the Oculus Go with a Meta or Oculus account [6]. I don't have or want to have a Meta-related account, and in twenty years the online activation process likely won't work at all, making Carmack's shrink-wrapped headset useless without a fight.
I'm sure the point is moot in twenty years because you'll just ask Skynet to write you an Android root exploit, but right know my second hand Oculus Go is surely acting like a brick in my drawer.
[1] https://www.theverge.com/2021/9/27/22696030/oculus-go-root-access-unlocked-os-homebrew-developers-john-carmack
[2] https://xcancel.com/ID_AA_Carmack/status/1441496416463904768
[3] https://github.com/AndroidDevice-Porting/android_device_oculus_pacific1
[4] Although at first I couldn't believe this and assumed I must be doing something wrong instead. I'm still not ruling out that possibility; I would very much like to hear a…
My recommendation is to do the equivalent of FRC in your shaders. I use one of the dither functions from https://developer.oculus.com/blog/tech-note-shader-snippets-for-efficient-2d-dithering/ to break up banding in my geometry rasterization shaders that I use for rendering all my UI elements. It looks good in static images and fantastic in motion since the dithering pattern shifts every frame.
One thing to watch out for is that if you're alpha blending, you need to be fairly cautious about how you dither and multiply. Premultiplied alpha does not get along with dithering, so the output from your shaders needs to be dithered but NOT premultiplied, with premultiplication performed by the GPU's ROPs (they typically seem to operate above 8 bits of precision.) If you don't do this you will get really nasty banding on alpha fades even though you dither. Also, counter-intuitively, you may not want to dither the alpha channel (test it yourself, ymmv)
When dealing with sRGB and linear space it can also be important whether you dither before or after the color-space conversion.
If you're good with computer graphics and programming, you're halfway done for doing your first demos / experiments :)
If you have an OculusRift, I think that's probably the easier start. Not because "mobile" is harder, but because you can focus more on doing stuff instead of optimizing / cutting stuff because mobile devies still do not have so much computational power.
Unity3D / Unreal engine are really easy to set up for VR. So easy to set-up that most people lose sight of VR.
I HIGHLY suggest you to give a read here
https://developer.oculus.com/documentation/intro-vr/latest/concepts/bp_intro/
and
http://static.oculusvr.com/sdk-downloads/documents/OculusBestPractices.pdf
You may think this is simple, everyone do it but... no. There are so many useful hints about how to reduce sickness and produce a better product, and so easy to find, that is mandatory to know.
This will get you started pretty well :)
> The real problem isn't technology or even adoption, it's that people who work at giant companies suck at making games.
Many companies besides Facebook have developed games for the Quest. I guess you could say Facebook sucks at working with game developers, but I’m not sure if that’s true either. Unreal and Unity have well-developed integrations with Oculus [0].
I think where Facebook really falls down is tying customers’ FB account to their Oculus Store purchases (and ability to use the Quest at all). They’re applying a social media platform’s aggressive algorithms to suspend or ban accounts which violate their expansive TOS, which is wrong in consumer product and digital marketplace space. For that reason, mixed with personal experience at the hands of Facebook's algorithms, I have no interest in developing for Oculus.
[0] https://developer.oculus.com/get-started/
> Accessing or using the unlockable software (“Software”) is subject to the Oculus Terms of Service or, if you use your Facebook account to access Oculus Products, the Supplemental Oculus Terms of Service and Facebook Terms of Service (the “Applicable TOS”). For clarity, Oculus Products (as described in the Applicable TOS) include the Software. We provide the Software to you for your personal and noncommercial use only on your personal Oculus Products. Installing the Software voids all warranties, express or implied, applicable to Oculus Products. In no event shall Facebook, its affiliates or any of their respective directors, officers, employees or agents have responsibility or liability arising out of or relating to making the Software available to you.
https://developer.oculus.com/licenses/go-unlock-tos
Free as in beer
So far Meta has published a whole bunch of spatial APIs including scene detection, spatial anchors, plane detection etc. [0] They are far ahead of Apple in many of these respects, but what they haven't had is a device that made this attractive to actually develop for in any meaningful way. Quest Pro lacks a depth sensor and has too small a market presence to attract a lot of developers, while Quest 2 has ugly, black and white low resolution pass through.
So Quest 3 will be the first spatial computing device the world has ever had access to that is available at mass market price (<$500) with depth sensor and high quality pass through. It will finally be worthwhile for developers to build mixed reality apps targeted to regular consumers.
https://developer.oculus.com/documentation/unity/unity-spatial-anchors-overview/