Hotrian / OVRdrop-Public

Public issue/feature tracker for OVRdrop
103 stars 1 forks source link

Add Oculus SDK support #12

Open Hotrian opened 7 years ago

Hotrian commented 7 years ago

I believe it may be possible to add Oculus SDK support which would fix the issue where in some games on the Oculus Rift you cannot see OVRdrop.

Looking into it soon - I only just got a Rift today so I couldn't test against it until now.

Hotrian commented 7 years ago

This doesn't seem possible. The Oculus SDK doesn't seem to support Overlays like SteamVR.

I looked into the Rift only Overlay program that's floating around, and it seems to be hooking the DirectX draw chain to tap into the rendering pipeline.

I thought that this would let me draw Overlays, but it seems like it won't let me draw them unless I'm also rendering a scene.

Messing around with the Unity plugin now to see if I can bypass drawing a scene, but it doesn't seem very likely.

JALowther commented 7 years ago

I think it's time to take this up with Oculus themselves because the ability to view your stream chat inside the Rift headset is the number 1 missing feature for pretty much EVERY streamer of Rift games.

Hotrian commented 7 years ago

Unfortunately I doubt Oculus will consider rewriting their render pipeline for a little Overlay app.

JALowther commented 7 years ago

Same, though at this point they badly need to do something because allowing the Rift to be stream-unfriendly is a TERRIBLE idea...

They should have chat stream integration already.

Hotrian commented 7 years ago

Seems like this might not be entirely necessary. While Oculus SDK support would be very good, it would require hooking the DirectX pipeline and I'm not sure how stable that would be.

What I did find out, is you can make Elite Dangerous on the Oculus Rift use the SteamVR APIs, simply by setting EliteDangerous64.exe or EliteDangerous32.exe to run with Compatibility for Windows 7. This works for Subnautica too, and possibly other Oculus SDK titles.

I messed around with ED for a while, and besides using the SteamVR API, I didn't see any other difference between compatibility mode and non-compatibility mode.

I made a quick little guide to setup Elite Dangerous and one for Subnautica.

Will definitely be testing for other games as well.

ChickenMacNugget commented 7 years ago

I've been having the issue described here, as I have an Oculus and the Steam version of Elite Dangerous. Setting the .exe to windows 7 compatibility mode fixes the issue with the overlay.

However, it causes there to be significant frame drops and tracking loss in the Oculus, particularly when accessing menus in Elite. This is unusual for my system, as I usually get a solid 90fps uninterrupted. Here is a quick video I took of tracking/framerate issue: https://youtu.be/W0L6NkZr2Ks

I don't have Subnautica to check if this the same issue there.

Hotrian commented 7 years ago

@ChickenMacNugget Sorry for the late response! Unfortunately, the "frame drops" you mentioned might be caused by using SteamVR as you're now using Reprojection instead of Asynchronous Spacewarp - however if the spikes are more significant than that then that seems unlikely.

As far as tracking loss goes, OVRdrop certainly shouldn't be doing anything that would effect tracking. Can you send me a DxDiag?

If you haven't, can you try The Lab (both with and without OVRdrop) and see how that goes?

You can generate the DxDiag file by:

  1. Hold the Windows Key and press R
  2. Type dxdiag into the Run box, and click Ok
  3. The DirectX Diagnostic Tool should open
  4. Press the Save All Information.. button
  5. Name the file and press Save

Edit: Back onto the subject of this issue, I might soon be able to tap into the Oculus Render Pipeline and draw OVRdrop directly to the Rift, but I'm still in the experimental pre-functional phase :P. Definitely no ETA and no promises!

ChickenMacNugget commented 7 years ago

@Hotrian Thanks for getting back to me :D

I'm actually getting this framedrop/tracking issue (I think it's more of massive frame drop and then the tracking tries to figure out where I am after) when OVRdrop isn't even launched with Elite. This framedrop is present just from launching Elite in the Windows 7 compatability mode, and isn't really linked to the OVRdrop at all. It might be an issue with my system more than anything.

Regardless I'll get a DxDiag for the Oculus Tomorrow as I'll have some free time.

Tsaukpaetra commented 6 years ago

On the plus side, I've been (through proxy) in discussions with Epic Games about programmatically disabling Oculus SDK when the game is launched through Steam VR. At the moment, it's really hacky and requires two separate builds for Oculus and Steam (the tasks of which are annoying to do from an automation standpoint due to what files need to be modified essentially requiring a complete game rebuild to "cut it out" from the game).

I'm just hoping that our efforts will pay off and a future update to UE4 will let this work by default...

Hotrian commented 6 years ago

@Tsaukpaetra that sounds amazing :). I hope, as you do, that this can become a standard setting in game engines. It should be a simple launch flag like -nooculus which would disable the oculus SDK checks (effectively breaking oculus only games, but only when launched with the flag so not an issue).

It's my understanding that Oculus isn't handling SteamVR correctly. Instead of handing SteamVR direct access to the device, they hand SteamVR an emulator, for lack of a better word, and handle the emulator's interaction with the HMD. This is why the Oculus SDK automatically overrides SteamVR in all cases. SteamVR never has actual access to the HMD, as there is not a proper driver for SteamVR to interface with.

Tsaukpaetra commented 6 years ago

Yup, basically as soon as the game starts, unless we force it to use OpenVR (for SteamVR), Oculus steals it and doesn't want to give it back. Problem being, forcing OpenVR tends to put the game in Vive mode, which does weird things to our controller mappings and a few other wacky glitches.