Right now we’re working on support for ‘input plugins’ which provide access to controllers and ‘display plugins’ which provide mechanisms for sending the rendered scene to a given type of display, be it stereo, HMD, or regular 2D. We built these abstractions a while back in order to start supporting more hardware, like the Vive headset and controllers. However, when we did this work, we weren’t able to fully migrate to shared libraries loaded at runtime.
I’ve recently created a framework for doing this migration, moving over one of our output plugins (for the Oculus HMD) as a proof of concept. Eventually I’d like to get all of the plugins we currently have (except for a few core ones, like 2D and stereo displays) moved over to runtime plugins. This should hopefully improve stability as well as make it easier for people to build support for additional devices without having to build and run a fully custom version of interface all the time.
We’re not quite at the point where we can do this yet. The runtime plugins still have some build issues and limitations we’re solving. Once we’re done, we should have some documentation and example projects for people who want to extend the hardware support of the application.