If you are using a Oculus HMD it is recommended to use the Oculus API instead of the OpenVR.
- 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.
- 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.
- 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.
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.
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.
You might want to configure the graphics settings to use Scale of 100%, disable MLAA and DOF.
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.
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.
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.
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.