Huge performance difference on the same phone btw Cardboard and Gear VR

I’m running the exact same project using Unity 5.60b3, in a Samsung Galaxy S6 Edge+, for Gear VR and the new natively supported Cardboard (in both cases, using “virtual reality supported” on the player build settings).

In the Gear VR the game works really smoothly, almost the same as in the Rift. In the Cardboard, however, the game is unplayable. You move your head around and there is a considerable lag and “stepped” movement, not smooth at all.

I haven’t installed the Google VR SDK, I’m simply playing with what comes by default on Unity.

Is this normal / expected behavior to have such a difference using the same phone?

I would not expect that at all. Can you please file a bug report with a repro project that we can look at? And please post the case id back on this thread.

Thanks for the fast response! The bug report is uploading (I’m on a very bad connection so will take a while) and the code is here: https://github.com/fariazz/mosquito-vr

Bug case 871514

Created a new project, where all I did was add a plane, a few cubes, and a standard shader material.

I didn’t set or change any option or setting, anywhere.

Exact same issue: smooth on the Gear VR. Unusable laggy in the Cardboard.

Repo: GitHub - fariazz/comparison-gear-vr-cardboard-unity-560ba

@fariazz_1 The way you describe it actually sounds like expected behavior, not a bug. The Gear VR headset contains a high-performance IMU in order to make head rotation low-lag. If you build for Cardboard, Unity’s VR stack will use the telephone’s IMU rather than the one in the Gear, which isn’t meant for VR use.

Laggy head rotations in Cardboard is what Cardboard is all about. That’s why Daydeam ready phone must adhere to various hardware guidelines, including a low-lag IMU :slight_smile:

1 Like

There is also the fact that Gear VR has deep level direct kernel connections to talk to the hardware/drivers directly where cardboard is going through the regular SurfaceFlinger system graphics handling.

The other killer is that Cardboard does no re-projection which means any hitch or frame drop is immediately apparent. You’d be very surprised how much re-projection matters on Gear VR to get their smooth frame rate.

4 Likes

@fariazz_1 For Mosquito VR that you posted, you should also look into performance optimizations on your scene. You are running at Fantastic quality (in fact the only quality level you support) which is going to be very demanding. Your whole scene has 90K verts and 45K tris, most of which appear to be just the trees! You should be able to do something about lowering the poly count on those, maybe even using shaders and much simpler polygons to get some of the same effect.

Very interesting. It’s really apparent how far the Gear VR has come and how much you guys and Samsung must have worked to get to current performance. But it’s also obvious that Daydream (for whatever reason) isn’t there yet… I hope you will get there! :slight_smile:

Hi, @WendelinReich1
Fully respecting your superior knowledge, expertise, etc but wasn’t @joejo talking about Cardboard (rather than Daydream)? How does Daydream compare to Gear VR? (I’d hope positively!)

Anyway I was fascinated to read all of the above – really enlightening! Thank you!

Rupert

1 Like

@ Thanks for the clarification. You are correct.

Daydream is only on a couple phones as of right now, whereas Cardboard is much more broadly supported (including iOS). Daydream has full async re-projection and a deep swap chain to boost performance above that of Cardboard. I haven’t done a comparison between GearVR and Daydream but I am sure they have their strengths and weaknesses, most notably that Daydream is not platform limited as long as min spec hardware/OS are available. GearVR is Samsung only (which means it is much easier to wring the last bits of perf out) but is limited to just that platform.

1 Like

@fariazz_1 I took a look at your project and what you are seeing is down to the fact that Cardboard does not do re-projection in any way. Your app barely breaks 30fps in Cardboard and so you see a lot of jitter and latency. GearVR limits our render rate to 30fps but substitutes re-projection for every other frame and so you experience this as a smooth running VR application.

In general you are not going to be able to expect the same level of performance between GearVR and Cardboard as they are just not the same performance or feature wise. Your best comparison would be between GearVR and Daydream.

1 Like

Does bare Nougat have VR stack or that is unique to daydream devices? I mean the underlying stack to support async repro and other low level features not the whole daydream experience.

I believe that is Daydream specific and not a part of system Nougat but I am not entirely sure on that. Even if it is part of the system, if the hardware doesn’t support Daydream the whole thing will fail to init. It’s an all or nothing feature.

2 Likes

Thanks a lot @WendelinReich1 and @joejo for looking into this, and for the complete explanations! This makes a lot of sense and it’s really interesting. Didn’t know about re-projection or even that the Gear VR had it’s own IMU (I thought it was just a viewer with some lower level API’s for rendering)

Regarding scene optimization, yeah I had fixed the quality to high as I was trying different options. It looked the best on the Gear VR when on high (even with this number of polygons, it handles it quite well), so was trying to see if that forced the phone to do a better job when on Cardboard.