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
Here tried GPU Skinning, Graphics Jobs, with same results.
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)
In Unity without the profiler (with stats):
In Unity with the profiler (with stats):
With a build (Fantastic quality)
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?