VR - experimental support

User avatar
Komat
SCS Software
Posts: 975
Joined: 26 Nov 2012 09:22

VR - experimental support

#1 Post by Komat » 20 Oct 2013 10:08

Experimental support for Oculus API is available in the oculus beta branch on Steam. Currently the support is available only in the Windows versions of the game. The oculus beta also supports OpenVR API so it can be used with HTC Vive or other compatible HMD.

If you are using a Oculus HMD it is recommended to use the Oculus API instead of the OpenVR.

Used SDKs
  • The oculus beta supports DK2 using 1.4.0 version of the SDK.
  • The oculus_07 beta supports DK2 using 0.7.0 version of the SDK. Note that this version is obsolete and will be eventually discontinued.
Requirements
  • For oculus_07 the display mode should be set to "Direct HMD Access from Apps".
  • A really fast GPU and CPU is recommended.
  • Use of DX11 mode is highly recommended.
Limitations and known issues
  • Only DX11 and DX9 modes are supported. DX9 mode requires DX9Ex support (Windows Vista+).
  • Not compatible with SLI and will experience flickering if it is enabled.
  • The game is currently not marked as VR capable on Steam so the Steam client will show warning when launching the game.
  • Only some parts of the menu have 3d background
  • The head orientation and position is currently used only by the interior camera
  • There might be distortions when using some menu screens in 3d mode or when switching the 3d mode of the menu in some situations.
  • The advisor was moved to the bottom center of the screen when Oculus is used however no other optimizations were done.
  • The game does not reset the orientation/position when entering truck so you will have to do that manually by pressing F12.
  • The default reset key F12 coincides with the default Steam screenshot key.
How to enable

Oculus
To enable the support, run the game with -oculus command line parameter. For the 1.4.0+ based versions you also need to enable launching applications from Unknown Sources in the Oculus application. This will cause the game to detect the available oculus devices, select the first one found and launch with a resolution matching the device. If no device is found, a dummy one is used.

OpenVR
To enable the support, run the game with -openvr command line parameter. When using the game with SteamVR, you also should uncheck the "Use Desktop Game Theatre while SteamVR is active" in game properties in Steam client.

Common
You might want to configure the graphics settings to use Scale of 100%, disable MLAA and DOF.

Supersampling
If you have sufficiently powerfull GPU, you might want to use supersampling to improve the quality of the image. Generally there are three places where you can affect the rendering size: HMD vendor tool, r_manual_stereo_buffer_scale cvar in game and scaling settings set in game UI (corresponds to r_scale_x/r_scale_y cvars). Generally both HMD vendor setting and r_manual_stereo_buffer_scale will behave in a similar wait and you can use one or the other with similar result. The ingame scaling setting does not apply to the UI and might result in more blurry image because it uses just bilinear filter so you might want to keep it set to 100% and change the size using the HMD vendor tool or r_manual_stereo_buffer_scale instead.

Technically it works in the following way: The vendor setting changes size of the recommended rendering resolution which is reported to the game by the VR API. The game then multiplies this reported value by r_manual_stereo_buffer_scale and uses the resulting size to allocate eye buffer. When rendering the driving 3d scene, the game multiplies the eye buffer size by scaling setting and renders the scene using the resulting size. When the rendering is done, it is resized using a bilinear filter back to the size of the eye buffer. The UI is then drawn into the eye buffer. Finally entire buffer is provided to the VR API which applies whatever distortions and postprocessing (e.g. ASW) are required.

Additional configuration
The game can show the menu in 2D or 3D positioned mode. This is toggled by the r_manual_stereo_in_menu cvar or by F11 key. As the menu was not designed for low resolution displays, the content of many screens is unreadable. If you are using the monitor in the mirrored mode, you might want to set the game to show the menu in a 2D mode or temporarily toggle between the 2d and 3d mode using the F11 key when using the menu to do some work where text reading is required. This mode is currently of no use for DK2 because of its monitor layout.

It is possible to reset the HMD position using the F12 key. This conflicts with default Steam screenshot key so you might want change the setting in game keyboard setup UI or use the in-game screenshot key which since 1.6 also creates corresponding Steam screenshot.

It is possible to configure the 3D parameters of the plane on which the UI is shown using the r_manual_stereo_ui_fov* and r_manual_stereo_ui_dist* cvars. There are two sets of the parameters. One is used in menu to provide view of all corners of the ui while the other is used when driving in game to provide better view of the advisor. Additionally in the driving mode it is possible to modify position and rotation of the UI plane using r_manual_stereo_ui_x_game, r_manual_stereo_ui_y_game, r_manual_stereo_ui_yaw_game and r_manual_stereo_ui_pitch_game. This allows you to put the advisor to another place in the 3D scene. Please note that the position and rotation currently affects entire UI plane which means that it will affect the UI mirrors if you have them enabled for some reason. The static loading screen where the movement ability is limited is rendered using a smaller resolution defined by r_manual_stereo_ui_static_fov to avoid clipping.

As the ui mirrors are not visible in the field of view in the default ui fov settings, it is good idea to disable them to improve performance.

The advisor is best run in the minimized transparent variant. The variants are toggled using the F3 key.

The interior camera is using a limited variant of angle-dependent movement of the head from the normal game. It only keeps the window lookout and moves its start to about 85 degress. The movement can be disabled entirely by setting g_hmd_no_artifical_movement profile cvar to 1 before starting the game.

The game reduces shaking of the cabin when HDM mode is active. This reduction can be disabled by setting g_hmd_reduced_cabin_movement profile cvar to 0.

The game uses a HMD-specific appearance of the desktop menu. Currently this is only used to change layout of the full-featured (with all widgets unlocked) desktop menu. Future builds are likely to tweak the menu more and improve layout of additional parts of the menu. This feature can be disabled by setting g_hmd_no_special_menu profile cvar to 1 before starting the game.

The background truck under the menu is drawn in 3D. This might be disabled by setting g_hmd_no_3d_background profile cvar to 1 before starting the game.

The game by default does not display any image in the application window to avoid any related overhead. If you want to show undistorted content of the scene seen by the user, set o_oculus_mirror_mode or o_openvr_mirror_mode depending on the API you are using to 1.

The game by default uses IPD value retrieved from your HMD. You can scale the value by setting r_ipd_scale to value other than 1.

Starting from 1.45, the game will select the size of the texture used to draw water reflections in VR mode based on FOV of the HMD by multiplying the (HMD FOV + g_additional_water_fov) by r_hmd_water_pixels_per_deg.

Starting from 1.46 it is possible to let the game show position of the VR controllers in the driving mode. Please note that this is just a visualization, you can not use the controllers to interact with the game in any way. You can use them for example to mark position where your physical steering wheel is. This is enabled by r_hmd_draw_controllers. Setting it to 1 will show controller model if supported by the VR API (OpenVR only) and small cross at the reported position otherwise. Setting it to 2 will always show the small cross. When model is shown, it does not cast shadows by default. That can be changed using r_hmd_controller_shadows.

OpenVR only

Currently there are several modes you might try to see which works best for you. They are controlled by new cvar parameters o_openvr_independent_timewarp and o_openvr_interleaved_reproject

Following combinations are possible in DX9 mode
  • o_openvr_independent_timewarp set to 1, o_openvr_interleaved_reproject set to 0. This mode is the default one. It tries to do "poor man" asynchronous timewarp. Note that there is still some issue which I need to investigate so it might be crashing sometimes.
  • o_openvr_independent_timewarp set to 0, o_openvr_interleaved_reproject set to 0. Image is directly passed to the compositor. The compositor will try to run at 90fps and fallback to interleaved reprojection at 45fps when framerate goes low. If the game stops updating the screen for some time (e.g. during loading screen) the image will temporarily switch to the Vive room.
  • o_openvr_independent_timewarp set to 0, o_openvr_interleaved_reproject set to 1. Image is directly passed to the compositor. The compositor is forced to always use the interleaved reprojection. This is probably the mode to try if your system can consistently maintain more than 45fps. If the game stops updating the screen for some time (e.g. during loading screen) the image will temporarily switch to the Vive room.
The o_openvr_independent_timewarp parameter is ignored in DX11 mode and it will behave as if set to 0.
Last edited by Komat on 04 May 2016 09:54, edited 28 times in total.
User avatar
Cadde
Posts: 6811
Joined: 24 Apr 2013 18:08
Location: Have no fear, i am from the internets!

Re: Oculus Rift - experimental support

#2 Post by Cadde » 20 Oct 2013 13:38



This is great news, thank you for supporting OR.
I am waiting for the consumer HD our UHD version of OR before i make the leap though. If i had a money growing tree it would be a different story, i would have flown a private jet to pick mine up if i had.

EDIT: I was about to say make a post on the OR forums but i see you already did. However, i think you deserve a separate thread. :)
On extended hiatus.
Thor
Posts: 1
Joined: 20 Oct 2013 14:41

Re: Oculus Rift - experimental support

#3 Post by Thor » 20 Oct 2013 14:46

The demo support the oculus too ?
I tried to launch it with the -oculus command but the game is launching normally.
User avatar
Komat
SCS Software
Posts: 975
Joined: 26 Nov 2012 09:22

Re: Oculus Rift - experimental support

#4 Post by Komat » 20 Oct 2013 16:26

Currently the feature is enabled only in the special build in the beta branch on Steam. It should become part of the standard build (and thus the demo) in a near future.
Last edited by SimulatorSam on 10 Aug 2015 15:39, edited 1 time in total.
Reason: Do not quote message above yours. [2.4]
Juniordee
Posts: 4
Joined: 23 Oct 2013 14:40

Re: Oculus Rift - experimental support

#5 Post by Juniordee » 23 Oct 2013 14:42

I tried it, and it's great, but everything looks way bigger than it should. I feel like a baby sitting in a giant truck. Is there a way to fix that?
Atak_Snajpera
Posts: 409
Joined: 16 Feb 2013 12:44
Location: Poland

Re: Oculus Rift - experimental support

#6 Post by Atak_Snajpera » 23 Oct 2013 16:31

Maybe you should lower FOV value

TO DEVS
Will final version of oculus rift have 3d tracking? In theory it should be easy to achieve. They would have to add led dots with different colors. For example 4 green dots in front of device. 4 red dots on sides and 4 blue on top and bottom. Then with simple web cam and image tracking software we could have decent 3d tracking. Just like move does on PS3. Webcam tracks color balls on controller.

some quick example
[ external image ]
godzyla
Posts: 7
Joined: 10 Aug 2013 18:35

Re: Oculus Rift - experimental support

#7 Post by godzyla » 23 Oct 2013 20:44

Just a question, have you planned to work on 3d anaglyph? Like in minecraft with red and blue layers.
strike4ce
Posts: 1
Joined: 24 Oct 2013 04:06

Re: Oculus Rift - experimental support

#8 Post by strike4ce » 24 Oct 2013 04:08

Will the Zeiss Cinemizer OLED Glasses be supported? Details at the link below if anyone is unsure what this is
http://cinemizer.zeiss.com/cinemizer-ol ... /home.html
User avatar
Komat
SCS Software
Posts: 975
Joined: 26 Nov 2012 09:22

Re: Oculus Rift - experimental support

#9 Post by Komat » 24 Oct 2013 04:17

A new 1.6.1.4 build fixes the "too big world" issue and also reduces blurriness of the image. If you were using the previous build, you need to reduce value of the r_manual_stereo_ui_dist_game cvar to avoid the advisor being positioned behind the driving wheel. A new r_manual_stereo_buffer_scale cvar was also added which allows to increase the size of the rendered image before the distortion is applied (and thus the quality) without need to increase the resolution.
jeffgoldwarf
Posts: 2
Joined: 24 Oct 2013 04:38

Re: Oculus Rift - experimental support

#10 Post by jeffgoldwarf » 24 Oct 2013 04:39

Atak_Snajpera wrote:Maybe you should lower FOV value
FOV has nothing to do with world scale.
strike4ce wrote:Will the Zeiss Cinemizer OLED Glasses be supported? Details at the link below if anyone is unsure what this is
http://cinemizer.zeiss.com/cinemizer-ol ... /home.html
This thing is a useless piece of , so no.
Last edited by Unco on 24 Oct 2013 05:10, edited 1 time in total.
Reason: Removed foul language
Post Reply

Return to “General discussion about the game”

Who is online

Users browsing this forum: No registered users and 9 guests