CarlKenner / dolphin

Dolphin is a GameCube/Wii emulator, allowing you to play games for these two platforms on PC, with improvements.
GNU General Public License v2.0
137 stars 30 forks source link

Positional tracking latency/overshoot with Rift CV1 #46

Open vgf89 opened 8 years ago

vgf89 commented 8 years ago

I've found the positional tracking is pretty jacked up in Dolphin VR. It feels slightly laggy, and when I stop moving, the tracking continues moving in the direction I was going for a few frames then moves back to where it should be. This results in the worlds feeling a lot less solid/stable (since everything kinda floats when I translate my head, even though it should be completely still in space) compared to actual VR games, and it might also help cause nausea.

It happens exactly the same way with and without OpCode replay enabled and at different values (so 30, 60, and 90FPS all have it, obviously with less smoothness at lower FPS). I mostly tested WindWaker.

It works fine in most normal games, including things like Lucky's Tale, Elite, Project Cars. Incidentally, the only other game I've found with the same exact problem is Minecrift.

I'm using this build: https://forums.oculus.com/community/discussion/34903/dolphin-emulator-cv1-compatibility/p1

CarlKenner commented 8 years ago

Darn it. I'll take a look and see if I can work out what's causing it.

I recently noticed this issue with the HTC Vive and fixed it for SteamVR, but unless you are running with the -steamvr command line, that won't be relevant to you.

I did add some fixes to the code recently for CV1, so it adds frames up to 90 FPS instead of 75, but that probably isn't the fix you are looking for.

BTW, WindWaker has action replay culling codes that make it render everything, so sometimes it has trouble running at full speed.

Kosyne commented 7 years ago

Didn't notice it till I saw this issue, but yes, can confirm that I'm getting this too (on my compile of d11c88cca48cd8181bf264eaf8c458db41677339)

Tested in WW and SA2 by moving my head horizontally then stopping. A slight bit of 'drift' while stopping, after which it corrects itself.