Update: 11-Dec-2020: There are later updates of Firestorm VR Mod. E.g. see https://blog.inf.ed.ac.uk/atate/2020/12/11/firestorm-vr-mod-6-4-12/
Update 23-Sep-2019: Peter Kappler has provided an updated version of Firestorm VR compiled for Second Life and OpenSim which should fix the “black screen” issue mentioned below for at least some HMDs. More information, download links and tips are provided for Firestorm VR 6.2.4 at https://blog.inf.ed.ac.uk/atate/firestorm-vr-6-2-4/
The notes below relate to an earlier Firestorm VR version 6.0.1…
Peter Kappler <pete@gsgrid.net> [YouTube Channel] (PWNED Magic in Second Life) has created a VR version of the Firestorm Viewer using OpenVR/SteamVR that should be compatible with Vive, Oculus Rift, and Windows Mixed Reality headsets (HMDs).
Wagner James Au blogged on this in January and February 2019, and David Rowe, creator of the CtrlAltStudio VR viewer, pointed me at this development just in time since CtrlAltStudio now has a messy visual glitch on exit to the operating system [Blog Post on CtrlAltStudio VR Viewer].
https://nwn.blogs.com/nwn/2019/01/windows-mixed-reality-firestorm-sl-vr-open-source.html
https://nwn.blogs.com/nwn/2019/02/firestorm-sl-open-source-vr-viewer.html
YouTube Video: Second Life Firestorm VR V0.3 test, 27 Feb 2019:
https://www.youtube.com/watch?v=Y0_PQBQ_E4I
Discord Discussion Channel: P373R-WORKSHOP by p373r_kappler [ Invite ]
Download
Here is the ready to run installer and source code for version 0.3 27 Feb 2019 Build 57000** (based on Firestorm 6.0.1.56538):
Installer: http://gsgrid.net/Phoenix601VR-V0.3.rar
Source Code: http://gsgrid.net/FirestormVR_Source_V_0_3.rar [only needed to build the viewer from source]
** The “57000” serial number that is reported is not meaningful.
Peter chose that as beyond the released Firestorm version at the time to avoid update messages.
Installation
- Install the special VR MOD version of the Firestorm viewer.
- Put the openvr_api.dll contained in the compiled version .rar/.zip into the top level of the freshly installed Firestorm folder with all the other dlls.
- Start SteamVR. [Install SteamVR if you don’t already have it available.]
- Start Firestorm VR.
Once you are logged in:
- Go to Preferences -> Move & View and set the Field of View to 1.80 (default 1.04)
- Go to Preferences -> Graphics-> Steam VR Tab and tick to enable Steam VR. (a viewer restart may be needed, so do that to be sure)
For the Oculus Rift these settings should also be adjusted:
- Preferences -> Graphics -> Steam VR -> Texture Shift: Setting appropriate to your HMD. For example it is set to 0 (the default) for Oculus Rift DK2, and set to 200 for Oculus Rift CV1. If you have double vision in VR mode in your HMD, move this setting until the image is in sync.
- Preferences -> Graphics -> Camera distance from center: Set to your inter-pupil distance (IPD) to get a good 3D image. If this setting is not accurate the 3D view can look too flat or layered. Note that a setting of 0 means the image will be 2D.
A number of users have suggested starting settings for various virtual reality headsets…
Headset Type | Texture Shift | Camera Distance from Center | Info. From |
---|---|---|---|
Oculus Rift CV1 | +200 | IPD (e.g. 64.0mm) | Ai Austin |
Oculus Rift DK2 | 0 | IPD (e.g. 64.0mm) | Ai Austin |
Oculus Rift DK1 | Not | Available | Ai Austin |
Usage
PRESS TAB key to enable and disable VR output.
The Camera Controls floater has two extra buttons << and >> to let you turn the angle at which your camera points.
If you move the mouse to one of the four corners of the screen the HMD view jumps to show that corner in VR mode. This enables menus and HUD attachments to be more easily reached. Return the mouse to the centre of the screen to return to normal HMD directional view.
F4 key – can be used to disable (and reenable) the movement of the VR mode view direction with head movement. Pressing F4 locks the VR mode camera onto the avatar head so it always shows directly in front of the gaze direction (which is a bit of an odd thing to work out what is happening – especially if you have used mouse wheel zoom in or out). Pressing it again unlocks the view so that it rotates around the camera position itself.
F5 key – can be used to zoom out the VR view through stages further away, then it toggles views centred on each corner before returning to the default VR view. [Note: F5 may not work as described in some headsets?]
The Firestorm VR Viewer will not work well if the Second Life/OpenSim region you visit cannot normally be displayed with a decent frame rate. The higher the better. At low frame rates bad flickering will occur in VR mode. My suggestion is to look at the framerate (in Firestorm it is displayed in the upper right hand corner of the viewer) and to adjust the graphics settings (especially draw distance and quality sliders) until you have around 50fps (30fps min.) and then try VR.
On my Oculus Rift setup SteamVR usually was launched whenever the Firestorm VR viewer was started, and that automatically started the underlying Oculus software. But if the SteamVR or Oculus Home screens shows in the HMD or the HMD is blank rather than showing the Second Life/OpenSim virtual world display, start SteamVR first, check Oculus Home is launches, and then run the Firestorm VR viewer.
Tips
Tips from David Rowe for using the CtrlAltStudio Viewer may be relevant:
- To improve your frame rate, reduce your draw distance and/or tweak other display settings such as advanced lighting model, shadows, FOV, pixel density, etc.
- Make sure you don’t have Preferences > Graphics > Rendering > Limit Framerate enabled.
- You can use keyboard shortcuts to show and hide dialog boxes such as the Conversations window (Ctrl-T), Inventory (Ctrl-I), e.g., if you want to select a landmark to teleport to, Ctrl-Shift-M to display the minimap, etc. Keyboard shortcuts are shown beside menu items.
- To display avatar toasts in the Rift — Preferences > Chat > General > Show chat in bubbles above avatars.
- With floating text you may want to adjust the distance the floating text fades at so that distant text is not so annoying in VR mode: Preferences > Graphics > Rendering > Floating text fades.
If you have issues with some of the Function keys (F4, F5 or other Firestorm VR keys) not working… look to see if the F keys involved are mapped to active “Gestures”. You can find a list of the gestures you currently have active and the keys associated with them using the “Gestures” toolbar button… or the Comm -> Gestures menu item (Ctrl+G shortcut)
Peter Kappler also suggested some things:
- Particles… a fireplace is going to eat 20 to 30 fps! So make sure they are off.
- I moved my cache to a RAM drive. Just make a 2GB RAM drive. SSD is no comparison to RAM drive. Its way faster. Not even NVMe (non-volatile memory express) can reach that kind of speed. E.g. see SoftPerfect RAM Disk : high-performance RAM drive for Windows.
- F5 modes: There are two modes: one where HMD rotation is locked (F4 to lock), and one with normal HMD rotation on. The problem is that if you have HMD rotation on its hard to use flycam or edit things since it does not select properly. That’s where you turn it off.
Firestorm Debug Settings
EnableSteamVR – performs the same function as the Settings -> Graphics -> Steam VR -> tick on/off. Default Off.
TextureShift – performs the same function as the Settings -> Graphics -> Steam VR -> Texture Shift. This may need to be adjusted for different VR headsets. I found it could be left at the default setting of 0 for the Oculus Rift DK2, and needed to be set to +200 for the Oculus Rift CV1. Adjust this if you have double vision in VR mode.
EyeDistance – performs the same function as the Settings -> Graphics -> Steam VR – Camera distance from center slider. This is an important setting to get good 3D depth. Set it to the Interpupil distance for your headset (64mm is a sensible default). If set to 0mm the image will be 2D. If set wrongly you may find that the 3D effect is in distinct layers or not as good as it can be.
Xbox One Controller
An Xbox One controller as used with the Oculus Rift (or an Xbox 360 controller) can be enabled, as usual, in Firestorm via Preferences -> Move & View -> Movement -> Joystick Configuration -> Enable Joystick.
You will probably find the controls are under or over sensitive, or some buttons and triggers don’t do what you expect. See this blog post and the image here (click for a larger version) for some suggestions as to how to amend the settings…
https://hugsalot.wordpress.com/2012/12/03/joystick-settings-for-firestorm-with-xbox-360-controller/
You might want to enter “-1” rather than axis “5” as an indication that axis is not mapped. With the setup suggested the “A” button toggles between the normal avatar view and “FlyCam” mode allowing you to move the camera separately to the avatar.
Firestorm JIRA
A Firestorm JIRA Issue relates to this…
https://jira.firestormviewer.org/browse/FIRE-24047
This JIRA issue has comments concerned over low frame rates and poor support for all the menus, popups and creator/editing facilities in Second Life and OpenSim. Personally, I don’t think ALL the creator/build menu facilities are needed all the time, and those can be done by switching back into VR mode… which is easy with the TAB key method uses to switch between 2D and VR mode. Concerning frame rates, some users are probably seeing very busy mainland regions with tens of thousands of objects. When I use Firestorm on OpenSim builds with a few avatars in training modes I can get 160fps frame rates! And high frame rates when we have used private regions on Second Life for educational meetings.
User Experience with Firestorm VR 6.0.1
- Question: In the Steam VR settings tab, what does “Zoom out the display” do?
- Text: Peter Kappler’s notes indicate “The slider “Lens distance” lets you adjust the distance between the 2 cameras to improve stereo depth separation. ((There is a bug with world not updating while slider > 0)). Slider set to 0 uses only 1 camera (non-stereo) and doubles your fps.“. There is not a “Lens Distance” slider… but it is the Steam VR tab setting for “Camera distance from center”.
- Improvement: The “Texture Shift” slider is difficult (impossible?) to reset to 0 if needed. You can instead set it to 0 (or any specific value) via the Debug Settings for “TextureShift”.
- Bug: The default value set for “EyeDistance” in Debug Settings is 0.064. It should be 64.0. I.e. in millimetres not metres. It can be amended in
<firestorm-install-dir>/skins/default/xui/en/panel_preferences_graphics1.xml - Improvement: The mouse cursor in VR mode only shows as a simple arrow pointer. It does not change to the custom cursors such as seat, hand, etc as active items are pointed at.
- Bug: The Debug Setting descriptive text for “TextureShift” is incorrect. It is a copy of the descriptive text for “EyeDistance”.
- Bug: On the Camera Controls tool, after using the <> added buttons the circular movement controls get squashed to the lower left or disappear.
- Clarification: F4 and F5 button descriptions are difficult to understand. Does this work as described? And may it differ in different headsets?
- Improvement: The various SteamVR related debug settings could be collected together and identified more readily by prefixing them all with SteamVR, SVR or just VR. So for example SteamVREyeDistance.
- Improvement: Change the app_settings\grids.xml loginpage strings for the Second Life and Second Life Beta grids to http://viewer-login.agni.lindenlab.com/ rather than http://phoenixviewer.com/app/loginV3/
Amended Firestorm XML Configuration Files
Sample Tests in Firestorm 6.0.1
Some specific figures I observed on one Second Life scene trying to make the view distance (256m), graphics settings (High), etc the same…
- Linden Lab 6.2.4 96-106fps
- Firestorm 6.0.2 176-188fps
- Firestorm VR 6.0.1 2D mode 136-144fps
- Firestorm VR 6.0.1 VR mode 82-84fps
Put simply it looks roughly like Firestorm 6.0.2 100%, Firestorm VR 6.0.1 2D mode 75%, Firestorm VR 6.0.1 VR mode 50%. But the 6.0.1 VR mode is still roughly the same as the Linden Lab 6.2.4 viewer in 2D mode.
The following images were take on a Dell Precision T5180 with 32GB Memory and Nvidia GeForce GTX 1080 GPU, with Ultra graphics settings and 512m view distance.
On OSGrid RuthAndRoth region showing approx. 50fps in VR HMD mode…
On OSGrid Black Rock region showing approx. 40fps in VR HMD mode, nearer 75fps when seated in the vehicle…
HMD Black Screen on TAB in Firestorm VR 6.0.1
An updated Firestorm VR 6.2.4 includes changes to address the black screen issue. See this blog post.
Unfortunately after a successful initial test period and what appeared to be a working setup I experienced the (Oculus DK2) HMD screen going black when switching to VR mode in Firestorm VR 6.0.1 via the TAB key. And whatever I tried did not seem to fix it. I tried reinstalling Steam and SteamVR, uninstalling and reinstalling afresh both, upgrading to the Steam and SteamVR Betas, downgrading again to the release versions, and reinstalling Firestorm VR.
The following worked for me after the black screen in the HMD TABbed view occurred…
Start Firestorm VR… turn off the Steam VR enabled tick box. Change the graghics settings (I went between High and Ultra or vice versa). Then DO NOT enter VR mode with TAB. Instead stop Firestorm VR, SteamVR (and Oculus Home). Then launch Firestorm VR again, tick Steam VR enabled (I did that before login but that may not matter) and TAB to VR. My assumption is that something about the gpahics settings interferes with the VR mode HMD display unless the settings are committed in some way when a relog and Steam VR enable takes place. Just ticking Steam Enabled on and off while its running does not seem to fix this problem.
Peter Kappler gave me feedback which indicates it could indeed be related to specific graphics settings or changing them…
There are people that have issues with having tracking but no image. It may have something to do with deferred lighting or shadows in the viewer. Or GPU buffer settings since I copy the images directly from BACKBUFFER before swap.
Peter also offered some advice on Discord to others with the HMD black screen problem…
Nvidia GPUs: In the Nvidia Control Panel -> Manage 3D Settings -> Global Settings, there is a setting for Virtual Reality Pre-rendered Frames. Check it is set to 1. Also check that Triple buffering is OFF. Then under Program Settings check that these settings are not explicitly overridden to something else for Firestorm VR.
AMD Radeon GPUs: AMD drivers have a setting called Flip Queue Size… make sure it is set to 0. The flip queue size option may not be available in recent AMD driver updates in which use the “Main3D_DEF” and “Main3D” settings to change your “flip queue size”. These should match. I.e. “0” and “0x3000”.
On 22-Sept-2019 Peter Kappler provided a VR test application that uses the same rendering method as Firestorm VR to help identify if your own VR HMD setup might have issues:
http://gsgrid.net/sdlvrtest.rar
Unpack it, go to the bin/win32/ folder and open the hellovr_opengl.exe
That should show you a world full of boxes.
If it shows a black screen then there is an issue on your PC.
On 26-Nov-2019 Peter Kappler suggested the following for those still having black screen issues:
To fix the black screen go to your graphic card settings and force Anti-Aliasing on or off. Better… create a profile for this firestorm exe with AA on.
Hey how does the TAB key work? because when i press tab i just cycle trough fields or buttons on my screen. I see nothing in my headset, nor do i see a stereoscopic view.
Kristof… that sounds like the VR mode is not kicking in. Install StreamVR in Steam if you have not already done that. Check you put the openvr_api.dll in the special version Firestorm install folder, where other .dlls are, and checked SteamVR on in the Settings -> Graphics-> StreamVR tab. Maybe restart the viewer then to be sure, though I did not find that was needed. Start Steam and make sure you also start SteamVR. Then launch the viewer… make sure it starts, launches the Oculus app (assuming you are using Oculus Rift) which will happen automatically when you start SteamVR. Then try again abd fingers crissed.
Really useful stuff, thanks! How good is the performance in terms of framerate and fidelity?
Fidelity is very good… once I realised I had to set the “EyeDistance” accurately to the same setting as my HMD Inter-Pupil Distance (IPD). Otherwise it looks more like a series of layers if that is out too much.
I was just testing frame rate and posted an extra section on the end of the blog post. Of course it depends on the framerate that can be achieved in the region and with the graphics settings. I just posted some tests with Firestorm VR 6.0.1 in VR mode compared to Firestorm 6.0.2 (no VR) with same scene, same settings, etc. It looks to me like framerate is only down 25% or less in VR. I will be doing a much more careful comparison in the coming days for a separate blog post.
I had a mainland region Houseboat on a very busy Second Life region that barely achieves 10fps in normal views, and that definitely did not work in VR, it flickers very badly.
Warning: My Steam software updated from the Aug 5, 2019 version to Aug 12, 2019 and now when switching to VR mode in Firestorm VR I just get a black screen in the HMD. I cannot see any other changes in the environment. SteamVR is still 1.6.10. Nvidia GPU drivers are identical at 431.60 07/23/2019. Still investigating but something seems to have happened with this Steam update.
Update: After trying various fixes, reinstalling Steam and SteamVR seems to have fixed this issue even though the Steam version appears to be identical after the update (Aug 12, 2019) and SteamVR is still 1.6.10.
Update: Most annoyingly, after working fine most of the day, suddenly for no apparent reason the HMD view again goes black when switching to VR mode using TAB. Still exploring why.
I tried reinstalling Steam and SteamVR, uninstalling and reinstalling afresh both, upgrading to the Steam and SteamVR Betas, downgrading again to the release versions, and reinstalling Firestorm VR.
It looks like this problem relates to certain graphics settings that may be incompatible with OpenGL and SteamVR. More experimentation needed to find out exactly which.
People have asked what sort of rig I am using to get good frame rates…
Dell Precision T5810 with Xeon CPU E5-1620 v3 @3.50GHz.
32GB Memory, SSD drives, Nvidia GeForce GTX 1080 GPU.
100Mbps broadband connection at home, 1Gbps at work.
Oculus Rift DK2 at home, CV1 at work.
On OpenSim regions I frequently see high frame rates. I usually have the Firestorm window set at pretty much full screen at 1920×1200 and use Ultra settings, all shadow options on, and 512m draw distance, though I up that for snapshots.
For VR I usually go down to High graphics settings (rather than Ultra) and 128m draw range (rather than 512) and the Firestorm viewer window at around 2/3rds of the screen.
Just tried Second Life Bellisseria Houseboat region in Firestorm 6.0.2. I get 150-180fps using High quality and 128m draw distance, but that drops to 16fps (!) when I use High and 512m draw distance on that same view… as there is so much content within view. And then another drop to 8fps if I use Ultra graphics quality settings. So on Second Life regions the draw distance, and hence number of objects in view, is the critical thing.
More Firestorm VR related blog posts by Wagner James Au…
https://nwn.blogs.com/nwn/2019/08/second-life-firestorm-vr-tutorial.html
https://nwn.blogs.com/nwn/2019/08/firestorm-vr-second-life-drune-iv-.html#more
A lot of people may think you need frame rates up near 75fps or 90fps continuously for good VR or to avoid nausea… but modern HMDs and the software that drives them have a lot of tricks up their sleeves to allow good smooth images even when frame rates vary up and down or are too low…
Note from Peter Kappler, 17-Aug-2019:
SteamVR has in its default config file (default.vrsettings) the “motionReprojectionMode” setting which is the same as Asynchronous Spacewarp (ASW) for Oculus Rift and “motionSmoothing” for Vive. If enabled the HMD basically doubles the FPS by interpolating the images in HMD’s movement direction and is showing them twice… which looks way smoother than without. It is automatically enabled on Oculus Rift and SteamVR by default.
For more details see https://steamcommunity.com/games/250820/announcements/detail/1705071932992003492
and https://developer.oculus.com/blog/asynchronous-spacewarp/
Note: This feature is ready to kick in the moment a SteamVR application starts dropping frames and shuts off when no longer needed. Of course, if you prefer to run without this feature, just look under SteamVR Settings -> Video or Settings -> Applications to control when it is enabled.
Vive HMD typical path for default.vrsettings file is…
…\Steam\steamapps\common\MixedRealityVRDriver\resources\settings\default.vrsettings
The feature may not be explicitly available as a setting for Oculus HMDs… but a typical path for default.vrsettings file is…
…\Steam\steamapps\common\SteamVR\resources\settings\default.vrsettings
Another Firestorm VR blog post by Maria Korolov…
https://www.hypergridbusiness.com/2019/08/firestorm-viewer-now-supports-virtual-reality/
On 22-Sept-2019 Peter Kappler provided a VR test application hat uses the same rendering method as Firestorm VR.
http://gsgrid.net/sdlvrtest.rar
Unpack it, go to the bin/win32/ folder and open the hellovr_opengl.exe
That should show you a world full of boxes.
If it shows a black screen then there is an issue on your PC.