Tuesday, July 31, 2018

Dev Update #42 - VRidge 2.2.5 Beta (Release Candidate)

We have additional Beta patch release that addresses the issues reported with the Beta version. This version is a release candidate so if there are no major issues it will go live to everyone in a short time.

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

Of course we are still in the testing phase of features added with 2.2 patch as well. You can read about them here.

Deployment status:
Viveport: awaiting approval
Oculus Home: awaiting approval
Google Play: in beta @ 2.2.5 (join)

New distribution method for Gear VR and Oculus Go

We are awaiting approval at Oculus Home - please use normal Sideload method for now
Installing Gear VR and Oculus Go version was really troublesome. That’s why we intend to finally make VRidge available on Oculus Home store. Before we do that, we need a way to easily install Beta releases for this devices - Beta versions cannot be live on the store as it’s opt-in only.

That’s why we went for code distribution method. Every RiftCat user will be able to generate special key code which will install VRidge Beta after entering it in Oculus Home store. To learn how it works - simply read our tutorial here.

New languages available

Thanks to your great translation effort via CrowdIn we were able to update previously added languages and deploy six new ones. These languages are:
  • Hungarian
  • Indonesian
  • Italian
  • Korean
  • Lithuanian
  • Bulgarian
There might still be mistakes in translations but we believe that with each review phase at CrowdIn our community will be able to make them perfect.

You guys are awesome and are doing tremendous job. We strongly believe that we have the best VR community there is - we can always count on you, that’s why we will do our best to never let you down!


Multiple Android optimizations
CPU usage should be lower across all Android devices.
  • On average, you should see 15-20% system CPU load instead of 50-60%
  • This also means that heat generation should be significantly lower resulting in less "device too hot to run VR" errors.
  • In extremely rare cases this may lower VRidge performance. See this explanation to disable those optimizations.
Image should now be crisper on some Daydream devices.
This should be quite noticeable at 1440p resolution as unintentional downscaling and filtering was in effect until now.

Field of View values of headset are now properly passed to SteamVR.
It should improve image quality, especially on headsets with asymmetric FoV.

Changed the way "End of Trial session" message is being displayed to user.
Instead of displaying message (in one eye only due to very old bug) it will go back to lobby with localized notification message.

Reworked connection screen and added dedicated AIO installation buttons.
This will be expanded upon as we apply to Oculus and Daydream storefronts.


  • Fixed Nolo wireless mode coords going out of sync after recentering. Wired mode didn't have this problem.
  • Fixed Oculus Go / Gear VR touchpad jumping to top-left corner for a split second after taking the finger off the touchpad.
  • You will no longer be able to switch encoder when HEVC is enabled. This doesn't hot-switch on mobile side and it was freezing VRidge.
  • VRidge logo no longer will be upside down on startup on some devices.
  • Fixed a crash on startup that could happen when FreeTrack was enabled.
  • Reduced error spam in RiftCat.log related to DialogHost errors
  • VRidge's recenter hotkey will be disabled when mobile device is driving positional tracking.
    • This fixes system going out of sync when positional tracking was in effect and user pressed recenter hotkey.
    • In this case, the device should use its own recenter. With Vive Focus, for example, taking the headset off and on will reset its coords system.
  • steamvr.vrsettings read-only flag will now be automatically switched off. If the file still remains locked, error message will be displayed instead of crashing.
    • Generally other software should never lock this file but certain drivers aren't always interop-friendly.
  • VRidge and SteamVR should now automatically start on dedicated GPU, if available.
    • This should fix a crash on Nvidia Optimus laptops.
  • VRidge.log will now contain information which GPU drives VRidge.


  • [August 2nd] Fixed driver crash on Windows 7.
  • [August 3rd] Fixed invalid projection (incorrect vertical FOV) on certain Daydream headsets (Daydream View being one of those).
  • [August 6th] Revert: VRidge's recenter hotkey will be disabled when mobile device is driving positional tracking.

Closing notes

This update brings us very close to final 2.2 version release. We don’t expect any major issues with this version but if anything will show up, let us know - it is very important to make this version error free. Soon every VRidge user with Vive SDK, Daydream SDK and Oculus SDK compatible device will be able to have fun with jitterless VRidge!

Thank you for all your work during tests. We hope that you will have a pleasant experience during this last testing phase.

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, Vive Focus, Daydream-ready, Gear VR and Oculus Go 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:
Viveport: in beta @ 2.2.3 (available in Viveport)
SideloadVR: in beta @ 2.2.3
Google Play: in beta @ 2.2.3 (join)

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:
  • Vive Focus Controller
  • Daydream Controller
  • Gear VR 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)


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

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

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

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.