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 0.5.4.4, 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
Gyroscope
Accelerometer
Lowest latencyHighest drift
Use magnetometer
(stability)
Gyroscope
Accelerometer
Magnetometer
Lowest driftHighest latency

May interfere with cardboard magnet-button
Use magnetometer
(responsiveness)
Gyroscope
Accelerometer
Magnetometer
Very stable
with low drift
Latency still higher than Cardboard API

May interfere with cardboard magnet-button
No gyroscope
Accelerometer
Magnetometer
Works without
gyroscope
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 0.5.4.3, mobile app version is 0.8.6.

Changes

  • 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 12, 2016

Dev update #10


Summary:
  • SteamVR driver update (fixes to reduce image flickering, apps crashing and some frame skips).
  • 2560x1440 is the new render resolution for SteamVR. 2560x1440 stream option available in UI.
  • Intel Quick Sync encoding support for Intel HD Graphics users. Mobile app update required.
  • Random logouts fixed (probably).
  • New beta invites will be limited starting next week.
Desktop client version is 0.5.4.2, mobile app version is 0.8.5.

SteamVR driver update

With last update we've rewritten most of our SteamVR driver so it wouldn't rely on old Oculus components. This created some bugs. Depending on GPU load and power, games could flicker, fail to render every other frame and sometimes crash during scene loading. These issues should be fixed with this update. We are still trying to find cause of frame skips in some scenarios.

1440p render resolution for SteamVR

Last update we reduced SteamVR resolution from 2364x1461 to 1920x1080. Now we are setting render resolution to 2560x1440. This should give higher quality even on 1080p phones (less aliasing). Keep in mind that stream resolution is still configurable through stream quality options. We will eventually tie render resolution to stream resolution but currently rendering will be hardcoded to 1440p.

Elite: Dangerous looks a lot nicer now


We're also adding Very High preset for stream quality with 2560x1440 @ 60 FPS. That's 80% more pixels on your screen and the difference is quite noticeable, especially with small UI elements. 

Intel Quick Sync encoding for Intel HD Graphics (Intel Core CPUs)

There are a lot of you with laptops running Intel HD Graphics integrated GPUs. Those chips (starting with Intel HD Graphics 2000+ from 2011) also have video encoders built-in. We are now supporting Intel Quick Sync encoding. 

It's not laptop-only change. If you have, for example, GeForce 560 Ti which is not supported, but you also have Intel Core with Quick Sync, you should be able to run VRidge sucessfuly now. Please keep in mind that your motherboard needs to support using integrated graphics too. 

We tested Intel HD Graphics 4000 at up to 2560x1440p and encoding performance was comparable to GPU encoders.

Intel HD Graphics will be used as encoder only. Start the game on your best graphics processing unit (you can start game on discrete video card and use Quick Sync encoding). See this article if you don't know how to force using discrete GPU on your laptop.

Minor fixes (probably, confirmation needed):

We tried to fix some of the minor annoyances. Let us know if you experience any of problems below after this update:
  • Random logouts in less than 60 minutes after starting the game.
  • "Remember me" option forgetting your credentials if you exited RiftCat after less than 60 minutes since starting last game.
  • Freezes during phone pairing process. Confirmed - not fixed
  • Laptop users will see instructions on how to start games on discrete GPUs if VRidge notices game running on integrated graphics.

Limiting VRidge beta access for new users

Next week we are going to switch beta into limited mode for new users (if you are already in beta it doesn't affect you). 

Why?

VRidge was posted to tens of big news sites. We are currently trying to fix problems but we had to respond to hundreds of e-mails and spent a lot of time and money to scale up our infrastructure to handle massive incoming traffic spike (you might have noticed 2 downtimes lasting 15-20 minutes).


+500% traffic increase on Monday

We are very grateful for media coverage but now we understand the reasons why betas are either closed or open but very short (stress tests). We want to focus on development and bugfixing now. We have enough users now to test pretty much every configuration on the planet.

When we woke up on Monday and saw our server stats we felt like this.

We know about some annoying bugs (Zenfone 2, Galaxy S4, some Radeons). We are still investigating it.

We need to make it clear somewhere during installation that VRidge is designed to run native VR games only. We also need to make system requirements more visible because large majority of error reports (and bad reviews) we are getting is coming from people trying to use VRidge on unsupported hardware/OS. It's kinda our fault because we could have made information above more visible.

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 0.5.4.1, 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.