Tuesday, April 28, 2020

Dev Update #58 - RiftCat 2.7 Beta - Reprojection for Everyone


RiftCat 2.7 Beta - Reprojection for Everyone
This was originally planned to be a part 2 of the VRidge 2.6 Streaming Enhanced update but we had to postpone it due to various reasons. Now it's here as its own update!

This update will improve head turning motions on most mobile phones (even those not designed with VR in mind) by utilizing reprojection (also known as TimeWarp in Oculus products).

To test the Beta features, learn how to join Beta channels by reading THIS guide.



Reprojection and reasons behind it.
As some of you might have read, Google killed another project of theirs which is Daydream. This means than there is a constantly rising chance the next mobile devices generation will not be able to launch Daydream apps on which VRidge is based a lot.

We could not allow our users to lose the ability to play PC VR games with their Android devices so we created our own reprojection within VRidge so capable devices can use it even without being Daydream-certified.

What this means is that if your mobile phone supports some specific GPU capabilities it will be able to utilize reprojection - it will provide a completely smooth experience when moving your head in your Cardboard device!

VRidge will now ask for the camera and file read/write privileges on your device (to be able to read and store your VR viewer QR code) as previously Daydream SDK handled that.



Will it work on my device?
As of this Beta release, this feature will work only for Android devices (iOS is in progress). We will deploy support for next devices to the Beta channel as soon as they'll be ready.

Our reprojection implementation has 3 modes, best mode will be selected automatically, depending on GPU capabilities, OS version and so on. Those levels are:
  1. Synchronous reprojection - Most simple implementation. All rendering work is done on one GPU thread. After app finishes frame, that frame is being warped to screen with offset to cover difference between pc render orientation and current mobile orientation. In this mode frames should be placed correctly, however motion might not feel silky smooth.
  2. Asynchronous reprojection - This mode separates app rendering loop from VR rendering loop. Because of that we can achieve stable framerate and smooth motion, even if some frames are dropped in transport from PC.
  3. Asynchronous reprojection with direct rendering - Just like in previous mode, this one preserves constant framerate and smooth motion. However because of rendering directly to screen, latency can be significantly lowered. Typically when frame is rendered, it goes to Android Surface Flinger, which is responsible for composing final image that is displayed on the screen. Because of that composing step and double buffering, in default rendering mode frame is displayed 1-2 vertical syncs after it is rendered. That means about 17-33 milliseconds of latency on standard 60Hz display. With direct mode we are able to render directly to front buffer of display. That allows to skip all composing steps for VR layer, significantly lowering latency. Our current implementation works at 8ms latency on 60Hz display. This mode however requires a lot of modern GPU extensions and is mainly designed for newer phones (we mainly tested it on Samsung Galaxy S20, Samsung Note 10 and Razer Phone).
To check out with which mode your reprojection is working (or not working at all), launch VRidge (Diagnostics). It will display the appropriate information.



How to help us with testing?
When you'll test this Beta release and encounter any issues then please send us detailed logcat to support@riftcat.com with a description of your phone model. You can read about logcat here.

If your issue is directly visible on the screen, then simply send us the screenshots. Any additional info is highly valuable.

Your personal opinion also interests us! What do you think about the update? Give us all your thoughts.

20 comments:

  1. This is great news!
    Any chance this will work with the Samsung Exynos 8895 with Mali-G71 as the GPU? I've got the 4K Skyworth V901 headset and I'd love to use the RiftCat wiit that!

    ReplyDelete
  2. Do you think you can make it work on a Samsung Galaxy A20 i just got it and would really appreciate it if it would work on it.

    ReplyDelete
  3. Сделаете поддержку для мобильных видеокарт (nvidia geforce 610m), а то программный кодек не хочет корректно работать

    ReplyDelete
  4. I have gotten it to work on my oculus go. But its just alittle wonky with the mobile phone controller app.

    ReplyDelete
  5. I just bought VRidge a few days ago, and have spent inordinate amounts of time, tweaking and testing to get VR as smooth as possible using a VRBox headset and my Samsung Note 10 Plus phone. I was pleasantly surprised to see this beta launch with reprojection, as my biggest issue I couldn't fix was the smoothness of head tracking.

    I just started up the beta, and holy crap it's night and day difference. It's simply amazing with this phone and my rig in Elite Dangerous. Thanks guys for the amazing work.. this, is, awesome!

    ReplyDelete
  6. Es wird von Update zu Update immer stabiler und exakter. Weiter so! 👍🏻👍🏻👍🏻

    ReplyDelete
  7. It's working as "Asynchronous reprojection with direct rendering" on the zenfone max pro m1, and it is much smoother than before.

    ReplyDelete
  8. It's an amazing update, but went from minimal "drift" issues to excessive amounts. It almost rarely stays centered and I have to recenter every 30 seconds to a minute. It offsets by nearly 30 degrees regularly. Any ideas?

    ReplyDelete
    Replies
    1. I have the same problem on Xiaomi Mi 9, after few head turns drifts way to the left.

      Delete
  9. I have the desktop and mobile clients both set to receive beta updates but both are still on version 2.6.3 and not downloading anything. What do I need to do to get the update?

    ReplyDelete
  10. Opted to the Beta on my Samsung A50, all I'm getting is a black screen with the seperation bar (Eyes). It links with the Desktop app but nothing is visible.

    ReplyDelete
  11. Wow! This could be one of the most beneficial blogs we’ve ever come across on the subject. Basically fantastic post! I’m also an expert in this topic so I can understand your effort.
    review finds

    ReplyDelete
  12. The difference in latency and head tracking is night and day between this gearvr 2.6.3 and android 2.7.1 beta. I'm begging you please give the last of us gearvr users the 2.7.1 beta. <3

    ReplyDelete
  13. you are doing really great work please share the Galaxy a20 Price in Pakistan

    ReplyDelete
  14. I have used beta versions before and I am enrolled into the beta program, but now I have 2.6.3 in both stable and beta channels, how come?

    ReplyDelete