I did a shader performance mod for DCS World v2.5 after being a bit frustrated with performance in VR. More information at the ED forums here.
I made an OpenVR hook/proxy thing for Assetto Corsa that adds some extra options when running in OpenVR mode:
- Enables the use of seat pitch adjustment from the in-game onboard settings app
- Allows adjusting supersampling for Assetto Corsa only
- Allow individual view pitch/roll locking, with neck length option for more natural rotation
- Enables using a motion controller like the Vive wand to use the in-game UI
- Allows disabling the automatic re-center at startup so the HMD position is remembered between sessions
Download version 1.0 from here. See the readme.html file for more information.
I personally like using the roll locking set to 1 and pitch locking set to 0 with neck length of 0.3. This gives me a better feel of how the car is behaving and keeping the horizon level makes it easier to look at the track, without having to look up/down on hills like with the ingame lock horizon setting.
Adjusting the seat pitch allows me to align the virtual steering wheel position with the real one and cancel out some upwards pitch I have with my simracing rig.
Here is a short video showing some features and driving with those settings:
First, the seat pitch adjustment is shown. Then I drive a bit and you can see the car roll around the view, but the view follows the uphill section at Flugplatz without having to look up. Then I use the Vive wand to use the UI, including touch pad for navigating the pit screen pages and setup tabs.
It has been developed for the HTC Vive, but it should also work with the Rift if you use it in OpenVR mode. The controller mappings with touch may not work perfectly though.
edit: I did a small fix to the zip file, previous version was of debug build that required debug runtime to load.
I made an input plugin for Open Broadcaster Software that allows capturing video directly from OpenVR/SteamVR mirror surface.
It allows capturing either the left or right eye, in full resolution as it is rendered by the game with some cropping presets (for HTC Vive) to use on those games which mask out the invisible parts of the image such as The Lab does in the screenshot to the right.
A known issue is a memory leak in the OpenVR SDK that causes OBS to slowly leak memory if the plugin is active but SteamVR is not running. The leak is quite mild at some tens of kilobytes per minute so its not a too serious issue. I have reported it almost an year ago here but Valve still has not fixed it.
In addition it comes with options to disable the default camera shake in the in-car view and and to lock the camera to the horizon in either roll axis only or roll + pitch.
I did not have time to test it thoroughly so its possible there are some bugs as the RBR camera override is now done in a totally different manner.
Download from here (v1.5). See the readme.txt for instructions and some troubleshooting hints. In-game you can also find a quick help sheet from the desk.
Here is an update to RBRvr that fixes the random crashing issue with the Oculus Rift, the steering wheel rotation setting not working properly and the virtual VR goggles sometimes appearing when pausing/unpausing the game.
Plugin compatibility has not improved with this version since fixing the Rift issue took quite a lot of time.
See the readme.txt for instructions and some troubleshooting hints. In-game you can also find a quick help sheet from the desk.
Here’s an update to RBRift, now called RBRvr, that brings support for OpenVR. It should work at least with the HTC Vive, hopefully also with Oculus Rift although as I only have the Vive I haven’t been able to test it on the Rift.
This version also brings other improvements, including ability to drive with the Vive controllers. See the video below.
See the readme.txt for instructions and some troubleshooting hints. In-game you can also find a quick help sheet from the desk.
The default configuration has a render scale of 200%, if you are also using the SteamVR setting to increase the pixel density further you may see some performance problems. The render scale can be changed from the in-game menu or by editing the rbrvr.cfg file.
If you like it you can donate from the button on the right :)
- Default camera isn’t always the correct in-car driver one, you may manually need to select the correct camera with the change camera key (default ’1′) and then save your RBR profile.
- Codriver mode is a bit buggy (wrong cameras seen).
- If you have TrackIR, disable it when using RBRvr (head tracking conflicts).
A new update for Assetto Corsa broke Joux Plane, so here is a quick update to get it working again. It also has working timing now thanks to AC supporting it in open config tracks now. The lighting is slightly tweaked as well as AC lighting changed quite a bit at some point making the track too bright. It still appears quite flat but at least in the morning it looks ok.
- Fixed compatibility with AC v1.1 (track was invisible)
- Lighting modified to better suit recent AC versions
- Implemented working start and finish line available in AC v1.1
- Reverse version is now implemented as track configuration (reduced size)
- Hotlap start position moved further back and barriers added to disallow reversing at start
Download from here. If you have the old version installed, remove the assettocorsa\content\tracks\joux-plane-rev directory as the reverse config now uses the new track configurations feature.
edit: Quick update to version v1.51 which fixes the reverse config finish line, download from the link above.
Here is another update to RBRift for Richard Burns Rally. Version 1.2 changelog:
- Significantly improved performance, especially with longer mod tracks
- Reducend render latency & corrected oculus tracking timing
- Added config setting for reducing the vignette effect around the eyes
- Added alt codriver mode where driver is wearing the rift (codriverMode=2)
- Added gamma controls to cfg with defaults for slightly increased contrast
- Added windshield hider feature (numpad *)
- Added debug information display (numpad /)
- Tweaked clip planes
- Changed seat adjustment speedup key to left ctrl
- In-car replay views are now in vr mode
- Changed correct executable detection method
This version has pretty significant changes, like completely re-done stereo rendering implementation, corrected Oculus timing and new vignette reduction feature. It should now work very smoothly and latency free with vsync on, which is also default now.
Windshield hider is a new feature as well, it allows hiding parts of the car windshield which is just a mapped flat texture on the cars and does not appear right with stereo rendering. Also on many mod cars the windshield is too dark. The feature can be toggled with numpad asterisk key.
Clip plane tweaks should fix issues on some tracks where distant terrain got clipped away and improve in-car clipping. In-car views in replays now appear in “VR mode”. The 3D monitor effect from old versions is unavailable unfortunately, its no longer practical due to the different stereo rendering implementation.
Download from here. See the readme for install instructions as usual and some troubleshooting hints.
Here’s an update v1.1 to RBRift for Richard Burns Rally with fixes to some compatibility issues and few improvements. Changelog:
- Reduced number of backbuffers used by RBR (reduced latency)
- Fixed D3D error from Oculus runtime
- Fixed rift resolution issue in device initialization
- Fixed compatibility with rbr_rx.dll plugin (only cockpit was visible in-car)
- Added left shift + left ctrl as alternate shortcut key to recentering rift
- Added codriver mode
The latency fix should make it useable with vsync enabled, though by default its still disabled in the config. The compatibility fixes hopefully fix the random startup problems and make BTB tracks work that use the rbr_rx plugin.
The new codriver mode allows you to drive from the drivers seat using your standard monitor while a codriver rides with you on the codriver seat wearing the rift. So with it you can take a friend on a virtual rally car ride :) See the readme for instructions how to use it.
See the readme for install instructions as usual and some troubleshooting hints.
Protip: for better immersion you can change the steering wheel rotation degrees the following way:
- Open misc.rbz file with a tool that can extract zip archives like 7-Zip File Manager.
- Extract the ‘LM_Driver.ini’ from it under ‘Misc’ directory in RBR.
- Modify the ‘Max Steeringwheel degrees’ from the ini file. Note the value is rotation in one direction so its half of what you usually have on your wheel.
I recently got a hold of the Oculus Rift DK2, and decided to try to make Richard Burns Rally work with it using a Direct3D “proxy” DLL. I had actually done it before already when I had access to the DK1 for a few days, but that was very rudimentary and did not really work too well. After some rewriting I got it working quite nicely so its here for anyone to try. It supports:
- Oculus Rift DK1 and DK2 (DK2 preferred)
- Full headtracking support, including positional tracking
- Stereo rendering with correct IPD
- Virtual 3D HUD
- Virtual menus
It does not work with direct-to-rift mode for some reason so even the DK2 needs to be in extended mode. Also by default vsync is disabled since I experience some latency issue with vsync on – you can change the behaviour from the config file.
You need RBR version 1.02 with SSE executable. See the readme file for instructions how to use it and also some troubleshooting hints.
I updated Freejoin with better compatibility for newer AC versions and also some improvements and new features. On the server side race now ends correctly a set time after the first player is finished, track+car config cycle is configurable and the server has administration commands.
Get the updated version from here. The client and server are compatible with the old version as well. For running a server check the server setup guide on that page, the process is somewhat different now.
edit: I did a quick update to version 1.22, on client it fixes all servers being displayed as password protected and on server sessions are automatically added/enabled/disabled depending on cycle setting.
Annoyed by the clumbersome booking system in recently released multiplayer for Assetto Corsa, I wanted to see if something could be done to improve it. I came up with a system that uses prebooked slots and a specially prepared client to join those slots at any time.
Experimental version for AC early access v0.9.10 is available here. It requires the client to install a modified online interface module and a server to be running a special version. See the readme there for additional information.
While it allows joining a server at any time it has some limitations. Mainly you can only select from cars that the server has prebooked and annoyingly when a race is over the session will never end until all clients have disconnected.
edit: Freejoin updated to version 1.20 with better compatibility and various fixes. See the Freejoin page for more info.
A few people have asked for cpbo to be updated to work with Arma 3 PBOs and the possibility of releasing the source. I dont have the time to work on it and its a very old project anyway so here is the source code: download.
The source is licensed under LGPL v2.1 and should compile with Visual Studio 2005.
I recently got hold of the Oculus Rift DK1 but ran into a bit of a problem with the fact that my Nvidia card only has four display outputs which all were already in use. So to use the Rift I’d need to unplug one monitor, use a HDMI switch or a HDMI splitter. The splitter seemed like the best option but active splitters seemed very expensive and I read about EDID problems with passive splitters.
The EDID problem comes when you have two displays (a monitor and the Rift) at the end of the single HDMI output and Windows (or the video card) pretty much randomly uses the EDID from either one – and when it uses the one from the monitor the Oculus SDK will not detect the Rift as being attached and cannot read the information from it. A way to avoid this issue is to plug in the Rift first, let windows detect it and then plug in the monitor. But this is clumbersome and needs to be done on every reboot so it is not very practical.
Thinking about what to do about this the solution was simple: Make Windows not see the desktop monitor at all by cutting off the DDC pins from the HDMI cable that goes to the monitor. DDC is used for communicating the EDID and with those gone Windows will only be able to talk to the Rift. This of course means the Rift must be attached to have something visible in the monitor and the monitor will be limited to resolutions supported by the Rift, but in my case this is not a problem as the Rift reports it can support 1920×1200 which is the native resolution of the monitor I use.
In practice the easiest way to get rid of the DDC pins was to remove them from a HDMI to DVI adapter that goes to the monitor. In the DVI connector DDC data & clock are in pins 6 and 7:
These were easy to remove with a pair of pliers, you need to be a bit careful to not bend the other pins too much but these adapters are also very cheap so its not a huge loss for it to go wrong. My result:
I use this with a cheap passive HDMI splitter that cost 10 euros and it works well. One problem I did notice is that if I turn off the Rift box I get some signal errors visible on the monitor image, possibly the signal gets too weak when the unpowered Rift box is attached in the cable. It can be avoided by just keeping the Rift powered at all times or by unplugging the power cable from the Rift box instead of just turning it off (Reading the EDID from the Rift still works even with the box unpowered). Some shorter cables might help as well.
edit: Also I noticed that when you unplug the USB cable the rift display turns off so it is an easy way to unpower the rift when its not in use, while keeping the control box on.