We are very happy to announce that after years of reverse engineering devices, hacking, testing and pushing, we are releasing OpenHMD version 0.3.0 (codename ‘Djungelvral’).We are very happy to announce that after years of reverse engineering devices, hacking, testing and pushing, we are releasing OpenHMD version 0.3.0 (codename ‘Djungelvral’).

We want to thank each and every one of the 125-150 people who have contributed over the last 3.5 years. Helping out with reverse engineering, writing drivers, testing, donating/lending hardware, building applications and games, showing up at (or hosting) Hack-athons.. we are incredibly lucky to have your support. Thank you!

The list of features bringing us from v0.2.0 to v0.3.0 is insane and that is despite not all the features and experimental drivers making the cut for this release. Since we have a really long list of changes, lets look at a couple of highlights in this release!

New Devices!

We got a huge list of new devices supported, including a first-party supported headset (added by the vendor themselves) and a positional tracked device including controllers, both exciting “firsts” for OpenHMD.

3Glasses D3

First ever support provided first-party, by 3Glasses themselves!

First ever support provided first-party, by 3Glasses themselves! Oculus Rift CV1 (rotational)

HTC Vive and HTC Vive Pro (rotational)

NOLO VR (Positional including Controller support)

Our first “full function” supported device, with positional tracking and controllers.

Our first “full function” supported device, with positional tracking and controllers. Windows Mixed Reality HMD support (rotational)

Including reading different types of resolution from the configuration.

Including reading different types of resolution from the configuration. Deepoon E2

GearVR Gen1 support for PC access to IMU

Controller API!

We have finalised our Controller API, making it possible to support controllers directly available in VR ecosystems. This enables support for an arbitrary amount of buttons, joysticks and track-pads along with rotational and positional tracking identical to HMDs.

Buttons that are part of HMDs will also now be exposed through this API.

We do want to make it clear it is not our goal to support any controller or joystick out there, there are plenty of libraries already focusing on that. Only controllers that are directly part of VR ecosystems will be merged into master.

This means Sony DualShock 4 (DS4) will be added due to being part of the PSVR ecosystem, while a regular game controller or DS3 will not.

Universal Distortion Shader!

Oculus DK2 correction shader with a simple Godot scene

The universal distortion shader, originally contributed by James Sarrett has made all our lives a lot easier! He implemented an OpenGL (GLSL 120) shader capable of distortion and chromatic aberration based on the PanoTools lens correction model.

The GLSL 330 version was contributed by the Godot developer Bastiaan Olij, while an additional GLES ES 100 shader was contributed by magestik.

This makes it possible to simply set some variables in the drivers that gives information to the shader regarding lens size, chromatic aberration, position and quirks.

More information can be found at the Universal Distortion Shader page on our wiki.

Build Systems! (Deprecation Warning!)

Every developer’s favorite discussion topic (ok, maybe just after tabs vs spaces and favorite Editor/IDE).

Meson was added as a build system due to a huge interest from developers, which makes the current build system count for OpenHMD a bit high at three.

!! WARNING! v0.3 will be the last version of OpenHMD supporting Autotools! !!

Over the last year we have found that most people were using our CMake or Meson build tools, with Autotools falling out of fashion. While v0.3 will still support Autotools, with bugfix releases when needed, it will be removed in v0.4.

Upgraded examples!

Our OpenGL example has been rewritten in SDL2 to bring it into this decade, including more debug functions, controller support, and convenience.

Both examples now also use the new device classes to check the support of a particular device.

The (Temporary) Bad News

OpenHMD has a ‘usable for everyone‘ policy on releases, and sometimes this means that due to operating system changes/issues, development takes longer for devices to be available. This means we had to disable some features (even though they are merged in the codebase) to make sure the release is stable and usable on all platforms.

PSVR has been disabled due to issues on Windows and some modern Mac OSX (>10.13) bugs being hard to fix. This is part due to incomplete HID headers, requiring patching of our HIDAPI library to combine HID calls with raw USB calls when needed. This is still under construction and might be pushed as a patch release later.

NOLO Has quite some firmware versions with small changes. Unfortunately we have not been able to test all Firmware versions, so not all firmware builds might work as expected. For the best result please update your firmware to the latest version, which is reproducible and maintainable for us.

We have branches for way more devices, but due to them being not fully usable (or still experimental), we have chosen to not include them in this release.

The Future!

We will release a new (FASTER!) release schedule soon, which will make it possible for us to get new features and device support to everyone faster. We will also work on doing more regular community updates, both on the website and on the Youtube Channel.

Getting currently disabled devices in master ready for a patch release will be priority as well, among getting the elusive positional tracking functional for supported HMD’s.

If you want to help out, please share the word, help out reverse engineering or implement drivers, include OpenHMD into your games or applications, showcase and let us know! Monetary donations through our Paypal are always welcome as well, link can be found on the home page.

Thanks everyone, and enjoy your FLOSS HMD Drivers!