VR Engine Log #1
Started building a custom VR engine, for a few reasons: to learn OpenXR and OpenGL ES, to have a raw baseline to compare performance captures to whatever Unity is doing, to see how feasible it is these days to even make a VR app from scratch for Android/Quest 2-3, and a few other reasons.
For this project I’m using C/C++, OpenXR (1.0), OpenGL ES; and a few minimal dependencies like Oboe (AAudio wrapper), tinygltf, etc… I didn’t track time, but I estimate it’s taken about 2 weeks of dev time to this point.
The features I was able to add at this point are:
- Multi-view rendering (aka Single Pass).
- MSAA.
- Higher FPS selection, runs at 90 on Quest 2.
- Proper floor origin setup.
- Hand tracking + binding it with my skeleton hand model.
- Basic audio playback (extracting samples from OGG and feeding raw audio stream)
- Basic texture loading (not shown in video)
- Basic glTF support (scene hierarchy, meshes, and material colors)
The demo is Halloween-themed given the time this was developed; last update was Oct 30. Scene setup is currently done mostly in Blender and some via code; this works for many things, but that workflow lacks easy support for things like adding particle systems (not supported by glTF) or setting behavior components on objects in the scene.
After thinking about it for some time, there’s more features I want to add to that directly, but I think it’d be worthwhile to instead focus on a PC editor first that can properly configure the scene(s) with things like particle effects and scene object references, and build that out to some limited set of platforms. I’m also considering what it would take for a live link to preview the game in editor with the headset connected.