Closed NeoSpark314 closed 5 years ago
Have you tried setting the extra latency mode to 0 and see its effect on tracking performance as well?
Just tried it; hard to tell with my simple test case if it improves with VRAPI_EXTRA_LATENCY_MODE_OFF ovr ON.. it still feels not as snappy as the oculus home controller tracking when switching back and forth (oculus home has extra latency activated according to OVR Metrics tool). Do you have an Idea on how to better test/debug this? The first time I noticed this was actually when I tested a small project (that ran perfectly smooth at 72 hz) and after 5min I got sick... which never happened to me with other quest apps so far even after >1hour...
I think I found at least one Issue with the controller tracking: https://github.com/GodotVR/godot_oculus_mobile/blob/36393808d159bb7e0a495f7038b0f67790702aa3/src/ovr_mobile_controller.cpp#L147 passes 0.0 as predicted display time instead of the value that is queried here https://github.com/GodotVR/godot_oculus_mobile/blob/36393808d159bb7e0a495f7038b0f67790702aa3/src/ovr_mobile_session.cpp#L247
Passing this value on significantly improves the situation for the controller.
There is a perceivable lag in tracking that seems not related to rendering performance.
The easiest reproducer for me is to have a simple unlit cube attached to the ARVRCcontroller and wave it in front of the eye. Then change to oculus home and do the same with the controller; the oculus home controller matches much better the hand movement. Both applications have swap interval and extra latency mode set to 1. FPS is constant 72 according to the OVR Metrics tool.
reproducer_tracking_latency.zip
I will try to look into this more deeply but any idea, hint or trick that could help me trace and debug this would be great.
I have two theories at the moment that I would use as starting point: A) It has to do sth. with the framebuffer swapping and there is maybe some additional buffering along the way to the OVR compositor B) or it comes from how the tracking positions are handled on the way to godot for rendering that could introduce the visible lag.