Erimelowo / OpenVR-Dynamic-Resolution

Lightweight OpenVR app to dynamically adjust your HMD's resolution depending on your GPU frametime, CPU frametime and VRAM.
https://store.steampowered.com/app/3243840/OVR_Dynamic_Resolution/
BSD 3-Clause "New" or "Revised" License
103 stars 6 forks source link

VRChat doesn't work with OpenVR Dynamic Resolution #15

Closed Crimson-foxGITHUB closed 1 year ago

Crimson-foxGITHUB commented 1 year ago

The first game I tested with this plugin was VRChat. Using fpsVR's benchmarking tools, the resolution didn't decrease or increase a single time the entire session. Even going from a less demanding world solo to Test Pilots pubs of 20 returned zero difference in resolution, and GPU frametimes also indicated nothing was happening. At 90Hz, frametimes tended to hover around 16ms instead of 11 or 22.5.

P.S. using minGpuTimeThreshold to avoid changing resolution during loading screens actually doesn't work because games use the GPU to load in assets. Framerates can dip as low as half your normal refresh rate during loading screens.

Erimelowo commented 1 year ago

Is this consistent? Many people including me use it in VRChat (it was made for it). Can you make sure you’re using the default settings and provide any steps to reproduce if possible? Also what headset are you using (if Quest, VD, ALVR or Link)?

VRChat has 2 loading screens, one of which doesn’t use your GPU. The setting was primarly made for the SteamVR void though.

Crimson-foxGITHUB commented 1 year ago

Quest 2 via wired Link, GTX 1660 Super 6GB, Ryzen 7 3700X.

To reproduce:

-Plug the Quest 2 into the computer -Open up Oculus Link in your headset -Open up OpenVR-Dynamic-Resolution.exe, which opens SteamVR -Launch fpsVR's benchmarking window and VRChat -Go to a hardware-intensive session -Use the "detect resolution" button in fpsVR to see it return the exact same resolution it gives in Oculus PC's app settings

Here's my settings.ini file:

settings.txt

Erimelowo commented 1 year ago

alwaysReproject is set to 1, which would explain your frametime being 16, given a margin. OVRDR does not care about the resolution in the Oculus PC app. Check the SteamVR resolution instead.

Erimelowo commented 1 year ago

Also make sure SteamVR’s resolution is set to Custom! Not Auto!

Crimson-foxGITHUB commented 1 year ago

alwaysReproject is set to 1, which would explain your frametime being 16, given a margin. OVRDR does not care about the resolution in the Oculus PC app. Check the SteamVR resolution instead.

It's at 100%.

By the way, alwaysReproject=1 doesn't even work properly.

https://github.com/Louka3000/OpenVR-Dynamic-Resolution/assets/61099225/c151bdbb-4bb5-4349-aab0-0fdfa4fefcdc

Erimelowo commented 1 year ago

100% is the default value. You need to test in-game. Not sure what you mean by it not working? A friend and I have been using it all-weekend. It is not gonna change the text but that’s normal.

Crimson-foxGITHUB commented 1 year ago

100% is the default value. You need to test in-game. Not sure what you mean by it not working? A friend and

I have been using it all-weekend. It is not gonna change the text but that’s normal.

Did a quick recording of VRChat running using a very demanding avatar, max mirror resolution, it hitting 45FPS yet not lowering the resolution, alwaysReproject=0. Had to split it into two files and put those parts into two separate .zip files because of GitHub limitations, but here you go.

part1.zip part2.zip

Erimelowo commented 1 year ago

Your videos don't work, but I did notice you are using 0.1.1. Can you please upgrade to 0.2.1 (also I made it update the text there)

Erimelowo commented 1 year ago

Any update on this?

Crimson-foxGITHUB commented 1 year ago

Any update on this?

Had to deal with IRL stuff the last two days, will be back tomorrow and with videos on 0.2.1.

Crimson-foxGITHUB commented 1 year ago

https://github.com/Louka3000/OpenVR-Dynamic-Resolution/assets/61099225/b6e01e05-9a2f-478d-b2fe-9ef172fcf638

FINALLY, it actually works now that reprojection is handled correctly. Video might display some jank involved but resolution changing is actually working.

An oddity I did notice though is that the app changes the global resolution instead of the per-game resolution: not sure if this is a SteamVR thing, a Unity thing, or a VRChat thing.

Erimelowo commented 1 year ago

Glad to hear it ^^

It changes the global resolution for simplicity’s sake. I don’t even know how I’d go about changing it per-game, but there’s not really any advantage. In fact, it’d just be more annoying to reset it and debug.