Wednesday, May 25, 2016

Dev update #12 - FreeTrack and other tracking options

This week we focused on improving our head tracking to reduce drift. We're adding FreeTrack support and alternative sensor fusion algorithms. 

Desktop client version is, mobile app version is 0.8.7. 

Why are we releasing update on Wednesday instead of Thursday this week? Tomorrow is public holiday in our country so everything (including our office building) is closed. Most of the team will be away on this long holiday weekend but we will catch up and respond to all e-mails and comments on Monday. 

Alternative tracking (mobile)

Until now we were using Cardboard API as the only tracking option. Today we are adding more options. Cardboard API is still the most tested with probably the lowest latency but many of you asked for something more stable. We decided to use alternative sensor fusion algorithms to reduce drift. Keep in mind that using magnetometer with magnet-button-cardboard can result in odd results.

We are also adding option to disable tracking completely because some people wanted 100% stable picture for cinema-like apps.

Our new options are:

TrackerRequired sensorsProsCons
Cardboard API
Lowest latencyHighest drift
Use magnetometer
Lowest driftHighest latency

May interfere with cardboard magnet-button
Use magnetometer
Very stable
with low drift
Latency still higher than Cardboard API

May interfere with cardboard magnet-button
No gyroscope
Works without
Extremely shaky
No trackingnoneNo drift :)No tracking at all

You can access new options by tapping more in top-right part of the connection screen.

We will try to reduce delays on driftless options but if you are looking mostly ahead without much head movement you might want to use magnetometer optons for more stable experience. Remember that you can reset head position by pressing Ctrl+Alt+Shift+R.

External tracking support (FreeTrack 2.0 protocol)

Many people already have their own DIY tracking and we received many requestes to provide a way to use FreeTrack-formatted data. This is our first iteration of this protocol but we wanted to get it out ASAP so you can start experimenting with your devices. We tested with OpenTrack (FreeTrack 2.0 protocol).

Positional data is supported by SteamVR driver only currently. Oculus emulation layer will use rotational data only.

Thursday, May 19, 2016

Dev update #11

We don't have much to show this week but most of our work will carry over to future updates. We spent a lot of time trying to counter sensor drift but our algorithms are not stable and tested enough to release them. Expect more news on that next update.

Desktop client version is, mobile app version is 0.8.6.


  • Log me in automatically should work more reliably. Let us know if RiftCat client forgets your password again.
  • VRidge should no longer fall behind and crash when encoding 1440p on previous generation NVIDIAs with NVENC checked on. See 1440p compatibility paragraph below.
  • RiftCat Client should no longer freeze while connecting to phone (MTU discovery timeout freeze).
  • RiftCat Client should no longer crash during phone discovery (System.Net.Sockets.TcpListener.AcceptTcpClient crash)

1440p compatibility

After last week's 1440p update we received some reports about 1440p not working with some video cards. Here's a list of compiled results and reports. 

GenerationExample hardware1440p @ 60 FPS1440p @ 50 FPS1080p @ 60 FPS
AMD GCN 1.2+R9 285, R9 380, R9 Fury X, R9 390***
NVIDIA MaxwellGTX 750, GTX 830M-860M, GTX 930+
Intel HD & Iris (Haswell+)Intel Core i3-4xxx+
NVIDIA KeplerGTX 650+, GTX 740+✓*
GCN 1.0 & 1.1 AMDsR9 240, R9 290, HD 7700+❌**❌**
Intel HD (Ivy Bridge)Intel Core i3-3xxx???
Intel HD (Sandy Bridge)Intel Core i3-2xxx???

* Use 60 FPS option. VRidge will try to encode at highest possible framerate.
** According to AMD developer it's not possible to encode video with resolutions beyond 1080p with GCN 1.0 & 1.1 AMD.
*** There are two 390 variants. One is GCN 1.1, other is GCN 1.2. Removed - 390 is GCN 1.1.

We did not test all of this ourselves. If it's wrong, please let us know so we can correct it. Please keep in mind that some laptop (-M suffix) variants use different chipsets than non-M variants.

Thursday, May 5, 2016

Dev update #9

This week brings rewritten SteamVR driver (no more flickers and upside down textures) and mobile optimizations. We wanted to refactor some code and fix some bugs before moving on to bigger features. 

You might notice slightly lower latency (especially in SteamVR mode). If you are S7/S7 Edge user, please check it out too because this updated resolved artifacting for at least one person. :)

Desktop client version is, mobile app version is 0.8.4.

Please reinstall SteamVR driver after upading (close Steam first)

SteamVR driver update

Updated - known issues:
  • SteamVR games flicker in some cases. Reported on both Nvidia and AMD. 
  • The Lab may crash during the game on loading screens.
  • VR Render resolution is now 1920x1080 previously it was 2364x1461. Small quality drop might be noticeable for people with high-res phones. It will be tied to streaming quality next update.

We've rewritten our driver to use automatic driver registration process so it won't get overwritten by SteamVR updates. It has lower latency than previous driver and enables use of many SteamVR features: seamless VR context switching between apps, multi-layer compositor and more. It also fixes some problems with textures being upside-down or aligned incorrectly in some games. It will also allow us more flexible development in the feature.

You will need one last reinstall (click the Install SteamVR button). Remember to close Steam first. Our old driver will be removed in the process.

If Riftcat does not locate vrpathreg.exe file correctly, please point it to the file manually. It should be located in SteamVR\bin\win32 directory.

Android memory optimizations

We've updated large part of stream handling and networking modules on the Android side. It should now deliver frames more reliably with lower latency. 

It also manages memory a lot more efficiently. This result in less micro-hangs caused by memory cleanups (GC) which could cause frame drops @ decoder. 

Android (optional) stream changes for certain phones

We're also adding two experimental options. They can reduce or improve performance so we're not enabling them by default. The first one (Intel) can improve performance for Asus Zenfone 2 (and other Intel-based phones). The second might help with most various phones (but is targeted at certain Snapdragon models). 

You can access this screen by tapping More in top-right corner of the connection screen.
If your stream is lagging behind and/or showing blocky-floaty artifacts, try one or both. Please let us know if it changes anything.