This is a modification of SboyS3 amazing work, with the goal of supporting the Galaxy XR
I'll only list the changes added here. The GxR handling uses a separate shader, so not all features of the original program apply. The following are implemented as of now:
- The ability to change: a. saturation b. contrast 1. Midpoint 2. Linear mode c. gamma d. ColorMultipliers
- Contrast Adaptive Sharpening
- Dithering
- Distortion profile adjustments a. Unlike what the software does for the meganex, the galaxy xr owns it's own distortion profile. But we can still modify it by pre perturbing the image before handing it off b. Currently supports the same scope of modifications as the existing profile creator, just applied as a delta profile instead of a full distortion profile
- You can now export and import distortion delta profiles for easy sharing.
- Download the latest release from the releases page
- Extract the whole folder within the zip to a place you want it.
- Run
custom-headset-gui.exeinCustomHeadsetGUIto finish the installation and configure settings.
Manual Driver Installation
You do not need to do this if you installed the driver with the GUI.- Copy the
CustomHeadsetOpenVRfolder from inside the zip intoC:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers - Disable the MeganeXSuperlight driver in SteamVR
- Restart SteamVR
Run custom-headset-gui.exe to configure settings.
Almost all settings will be immediately applied when the file is saved without restarting SteamVR.
- Clone the repository with
git clone https://github.com/sboys3/CustomHeadsetOpenVR.git - Navigate to the repository folder with
cd CustomHeadsetOpenVRin the terminal. - Pull the submodules with
git submodule update --init --recursivethengit pull --recurse-submodules - Open the solution in Visual Studio.
- Change the configuration to Release.
- Build the solution. It will create the driver folder in
outputand copy it to the SteamVR drivers folder.
To pull the latest changes, run git pull --recurse-submodules
- Follow the cloning steps above
cd CustomHeadsetOpenVR/CustomHeadsetOpenVRmkdir build && cd buildcmake .. -DCMAKE_BUILD_TYPE=Releasemake -j16rsync -a --delete CustomHeadsetOpenVR/ ~/.steam/steam/steamapps/common/SteamVR/drivers/CustomHeadsetOpenVR/
Enter %APPDATA%/CustomHeadset into the file browser top bar to get to the settings folder.
Edit the settings.json file based on the Config header file
Distortion profiles go in a folder named Distortion and they are referenced by their name.
- MeganeX and Dream Air
- Running as a native headset
- Ignore other headsets
- Code to generate the distortion mesh
- Darken the display when no motion is detected
⚠️ Be careful with high brightnesses to avoid burn in on the MeganeX. This driver does not automatically dim the headset in bright scenes which may permanently dim the panel if viewed for many hours.
- Support for non square outputs to light edges of the display
- A good default distortion profile
- A near perfect default distortion profile
- Multiple distortion profiles
- Hidden area mesh
- Custom Shader
- Support all native headsets (MeganeX, Dream Air, BSB 1&2, Index, Vive, etc)
- Replace SteamVR compositor shaders at runtime
- Configure contrast, chroma, and gamma
- Subpixel shifts for the MeganeX and Vive
- sRGB color correction for the MeganeX
- Remove mura correction or black clamp for any native headset
- Config
- Define the structure of the config file
- Create MeganeX section
- Read config file
- Hot reload when the config is changed
- Load custom distortion profiles
- Define the structure for the overrides section
- GUI
- Create a Tauri project
- Create a Angular project within it
- Configure MeganeX settings
- Edit distortion profiles my dragging points on a curve
- Create overrides for any headset
- Install the driver
- Change physical MeganeX settings
- Driver
- Linux build support
- Override any property of any SteamVR device based on the config
- Change device types
- Apply presets to devices ex: Vive tracker or generic headset
- Output json file with information about SteamVR and devices for configuration utilities to use.
This project is licensed under the GPLv2 license. See the LICENSE file for more details. I may relicense this project for to allow for use that GPLv2 does not allow for so be aware of that when you contribute
By committing to this repository you give me the right to relicense your code for others to use. If you want to make a significant contribution but do not want to comply with this, mark your code as such and let me know so I will be able to remove it if I need to.
Try to keep the coding style consistent with existing files. But other than keeping tabbing consistent, I will not enforce strict guidelines.
Thanks to everyone who has shown appreciation to me for this project. It has been an amazing experience having so many people thank me for my work. I really appreciate the kind words you all had for me and I have a special appreciation to those who went a step further and donated.
If you want your info displayed, send me a message on the platform you donated on. You can tell me where to get an icon, a name to display when hovered, and a link to wherever you want. You can provide any combination of the 3 and I will add it. Alternatively you can remain autonomous as a generic icon. I can always change it for you in the future, but information will stay in github history forever.










