Sorry, couldn't make a good title for this long post.
To start, I have a discussion (https://forums.oculusvr.com/community/discussion/62088/experiencing-some-lags-stutter-in-games-apps-laptop-gtx-1060-is-hardware-the-problem#latest), that explains my problems while playing the Oculus Home app and Robo Recall. The lags/stuttering do not make them unplayable but is noticeable. The takeaway could be that my hardware is, in fact, the problem.
Here's the build (if you didn't see in the other post):
It's a Laptop
i7 7700 HQ 2.8 GHz
32 GB RAM
GTX1060 GPU
headset pluged in usb 3.0 (but says 2.0) - using an usb 3.0 extension because the usb close to the HDMI is under an Asmedia controller with compatibility issues
1 sensor in usb 3.0
1 sensor in usb 2.0
it was expensive (I'm in Brazil)
Secondly, what I've already tried:
Set windows settings to performance over quality
Disabled USB power saving in windows settings
Went to Devices panel and turned off USB power saving option in every USB device possible
Disabled windows defender while playing/working (I have no other anti-virus)
I have no recording apps or anything with overlay issues that I've read about
Disabled game overlay in GeForce Experience
Set performance option in Nvidia Cotrol panel
Now talking about Rift and Unity.
I read about performance and optimizations and first I have to say that I did nothing about that in this scene that I'm going to show. I wanted to understand the need for optimization before optimizing.
In unity docs they say you can get away with from 1 to 2 million vertices in view. I setup a scene with a maximum of 56k vertices in view. Why? Because I had one with 250k max and the stuttering was really noticeable, so I did cut a lot of heavy things.
So how the scene is setup?
Unity 2017.3.1f1
Only baked ligthmap
No realtime shadows, because no realtime lights
1 non-directional lightmap of 4096x4096 (better than many of 1024x1024?)
Forward rendering - tried with deferred too, with the same result
Stereo rendering mode - tried single pass and multi pass, with the same result
Two baked reflection probes (box projection)
6 point lights (baked)
1 directional light (baked)
Camera (center eye anchor in a OVRCameraRig prefab) - not using Skybox
No atlas for the textures used (the ground and one wall paper on the wall) - image below
Too many materials?
Lighting settings:
Player settings:
Here tried GPU Skinning, Graphics Jobs, with same results.
Model hierarchy:
The selected object has a mesh renderer as it's children. (the grouping can affect batching?)
So, let's see the problem in video. I have three in youtube (linked below)
I tried with lower quality, but the problem persist. When I crouch and stand up it happens too (simulating the pattern shown in the videos above).
No problems when the view is restricted inside the room. When I look "outside" through the glass door (transparent material with reflections) the problem occurs.
Disabled Static and Dynamic Batching once to see what happened, and the stutter happened on the glass door, instead of when moving the head to face the table.
I read that the unity Skybox is a problem. I supose I'm not using it.
I really want to understand what is going on here, before I try to optimize without knowing what to. Again, too low-end hardware?
I believe all the problems related to that is sensor misconfiguration and head turning back without a third sensor to help. I don't know why, but the default setup in Unity is not as great as what was being done in Unreal. The default VR template in Unreal doesn't give as bad as the result in Unity doing the head movement pattern that I've shown in the clips above. I've setup a simple scene in Unity and the problems happened the same way.