Wednesday, July 11, 2018

Dev Update #41 - VRidge 2.2 Beta (Controllers & Jitter fix)

VRidge 2.2 Beta is now available

Today we're releasing beta version of 2.2 update which mostly targets high-end VR devices. Until now, Daydream-ready, Gear VR, Oculus Go and Vive Focus were performing similarly to any other mobile phone. We want to change it and utilize those devices to unlock their full potential. Some improvements are also available for older devices but the most interesting changes apply to devices below.

To learn how to join beta testing, see the article here.

Deployment status:
SideloadVR: in beta @ 2.2.3
Google Play: in beta @ 2.2.3 (join)
Viveport: under review



Vive Focus and Oculus Go

Vive Focus and Oculus Go should now work out of the box with mainline RiftCat/Vridge. Easier Oculus Go distribution method is not yet implemented so you'll need manual installation (via ADB) until we finish a better option. Please see this article:

Mobile controllers

Following controllers are now supported:
  • Daydream Controller
  • Gear VR Controller
  • Vive Focus Controller
Controller uses virtual arm-elbow-wrist model so even with only 3DOF rotational sensors, it feels quite natural to move and wave. You can grab in-game katana and slice those fruits in very natural motions. It also allows you to navigate SteamVR dashboard in a easy way to switch between VR apps without taking off your headset.

All controllers are built differently with various button setups. Most of those hardware buttons are unfortunately unmappable so we came up with a solution that emulates missing buttons.

As a reference we used Vive wand, which is supported properly by nearly all VR games. It has:
  • Touchpad
  • Trigger
  • Menu (button above touchpad)
  • System (button below touchpad)
  • Sidegrip (controller side button)

Mappings

We've mapped missing buttons to reflect position of buttons on Vive wand. For example, the System button is located below touchpad on Vive wand and is emulated by pressing bottom part of the touchpad on a mobile controller. Same goes for other sides.

Advanced users may want to adjust the threshold where touchpad registers emulated buttons by adjusting EmulatedControllerButtonBoundary line in vridge.cfg. Default threshold is 10% of touchpad.

"EmulatedControllerButtonBoundary": 0.1

Gear VR / Oculus Go controllers

Controller Home and back buttons are unmappable. Long pressing home recenters view on system level.
  • Trigger: Trigger (0/1 only, no analog state is available)
  • Touchpad: Fully mapped to Vive stick
  • Menu: Pressing upper part of the touchpad
  • System: Pressing lower part of the touchpad
  • Sidegrip: Pressing touchpad left or right side

Vive Focus Controller

Bottom button is unmappable and recenters view on system level.
  • Trigger: Trigger (0/1 only, no analog state is available)
  • Touchpad: Fully mapped to Vive stick
  • Menu: Pressing upper part of the touchpad
  • System: Pressing the button below the touchpad (same position relatively as Vive stick)
  • Sidegrip: Pressing touchpad left or right side
Daydream View Controller

Bottom button is unmappable and recenters view on system level. The controller doesn't have a trigger and only has one mappable physical button so it's used as trigger.
  • Trigger: Pressing the button below the touchpad
  • Touchpad: Fully mapped to Vive stick
  • Menu: Pressing upper part of the touchpad
  • System: Pressing lower part of the touchpad
  • Sidegrip: Pressing touchpad left or right side

Jitter improvements

If you're using one of the high-end devices targeted in this update, the jitter should no longer be a problem for you. We've been working on it for a while developing Vive Focus version and we found that we can apply those improvements to all high-end environments (Vive Focus, Gear VR, Go, Daydream).

Your head movements should now be instantly reflected as rotation of the view. This may cause you to see black borders where the real rendered image isn't yet caught up to your head rotation but we want to improve prediction to get rid of those too.

This should bring jitter and perceivable rotational latency to native mobile VR level. You may want to use Reliable streaming mode (in advanced streaming settings) to prevent artifacts. Previously it could cause hiccups / stutters which no longer should be the case on high end devices.

Automatic FPS adjustment

We changed the 30/60FPS switch to Native and Half-Native. This will automatically detect your device display refresh rate and set appropriate FPS to match your device.

Advanced users may override it in vridge.cfg. For example, if you'd like to use 45 FPS, use:

"Video.FPS.Mode": "Custom",
"Video.FPS.Value": 45,

Detected refresh rate is displayed in advanced video settings GUI after connecting your phone.

New FOV calculations

Field of View and aspect ratio should now be correctly adjusted to any screen aspect ratios. This may alter the way your view is aligned so if you're using custom Cardboard, make sure that you scan its QR code in Daydream settings to configure lens distortion.

Minor changes

  • Reduced VRidge's CPU load by 30-40% when using NVENC.
  • Recenter should now recenter API-powered controllers.
  • Disabled option to switch HEVC encoder in live settings view. This would freeze the mobile stream until restart.
  • Added Project Cars tutorial to Discover view.
  • Tethering tooltip no longer clips in certain localizations.
  • VRidge settings should no longer incorrectly stay on top of all windows in certain cases.
  • Mobile app should no longer crash on reconnect sometimes.
  • VRidge Gear VR should no longer become stuck on app pause/inactivity.
  • Lobby text ("Connected, waiting for SteamVR" should no longer become stuck and displayed on top of streaming window.
  • Updated Google VR SDK to 1.80.
  • Removed artificial +170cm HMD height that could sometimes cause incorrect API controller calculation when paired with headset that didn't send positional data.

Closing notes

This update changed critical parts of VRidge technology stack so please let us know if we altered something in a way that worsens your experience. In the upcoming weeks we'll be focusing on ironing out the wrinkles and bringing it to stable channel while also enabling an easier installation method for Oculus Go and Gear VR.

As always, thanks for your support feedback. We hope that you're going to have more fun using VRidge with update 2.2.