Giter VIP home page Giter VIP logo

vrperfkit's Introduction

VR Performance Toolkit

Performance-oriented collection of mods for VR games.

Included mods:

  • Upscaling techniques (render at lower resolution and upscale to target resolution)
    • AMD FidelityFX Super Resolution
    • NVIDIA Image Scaling
    • AMD Contrast Adaptive Sharpening
  • Fixed foveated rendering (render center of image at full resolution, but drop resolution towards edges)
    • Variable Rate Shading (only for NVIDIA RTX / GTX 16xx cards)

Planned mods:

  • "Fixed foveated" rendering (render fewer pixels at the edges of the screen)
    • Radial Density Masking (all GPUs, but works only with a handful of games)
  • Force hidden area mask: don't render pixels at the edges that are not visible in the headset. Many games already use this mask, but not all. This mod will allow you to force its usage.

Supported VR runtimes:

  • Oculus
  • OpenVR

Supported graphics APIs:

  • Direct3D 11

Installation

Extract dxgi.dll and vrperfkit.yml next to the game's main executable. For Unreal Engine games, this is typically <Game>Game\Binaries\Win64\<Game>Game-Win64-Shipping.exe.

Edit the vrperfkit.yml config file to your heart's content. The available options are documented inside the config file; you'll have to experiment with them and try which options work for your particular game.

Build instructions

Clone the repository and init all submodules.

git clone https://github.com/fholger/vrperfkit.git
cd vrperfkit
git submodule init
git submodule update --recursive

Download the Oculus SDK and extract LibOVR from the downloaded archive to the ThirdParty folder.

Download NVAPI (requires NVIDIA developer account) and extract the contents of the Rxxx-developer folder to ThirdParty\nvapi.

Run cmake to generate Visual Studio solution files. Build with Visual Studio. Note: Ninja does not work, due to the included shaders that need to be compiled. This is only supported with VS solutions.

vrperfkit's People

Contributors

fholger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vrperfkit's Issues

Request - allow change to FFR resolution multipliers

I don’t know if the resolution multipliers of the 3 rings are unchangeable due to how VRS works or if it uses values you set, but I wonder if you could expose those resolution multipliers in the config file for users to change?

Specifically, for me in SkyrimVR, I have to set a SGSSAA value in Nvidia Profile Inspector that matches the resolution scale in the rings to remove very obvious visual anomalies (something about shadows turning white on textures with transparency like foliage, plants etc). So 2x SGSSAA fixes the first ring but leaves the rest with shimmering white shadows, and increasing to 4x SGSSAA also fixes the middle layer. However 8x SGSSAA does nothing more to fix the outer layer, probably because it is set to 16x FFR. Meanwhile there is no setting for 16x SGSSAA. So my theory is if I could set the outer ring to 8x then SGSSAA would fix it too and I could leave that outer ring more in my field of view, and thus improve my performance (right now I am setting that last radius really high so I don’t see any of the outer ring).

DCS foveated rendering doesn't seem to work

I got the following in log file while applying foveated rendering.

(DEBUG) VRS: Single eye target, don't know which eye (multiple lines)

The config file is the following :

upscaling:
  enabled: true
  method: nis
  renderScale: 0.59
  sharpness: 0.6
  radius: 0.6
  applyMipBias: true
fixedFoveated:
  enabled: true
  innerRadius: 0.2
  midRadius: 0.4
  outerRadius: 0.6
debugMode: true
hotkeys:
  enabled: true
  toggleDebugMode: ["ctrl", "shift", "f1"]
  cycleUpscalingMethod: ["ctrl", "shift", "f2"]
  increaseUpscalingRadius: ["ctrl", "shift", "f3"]
  decreaseUpscalingRadius: ["ctrl", "shift", "f4"]
  increaseUpscalingSharpness: ["ctrl", "shift", "f5"]
  decreaseUpscalingSharpness: ["ctrl", "shift", "f6"]
  toggleUpscalingApplyMipBias: ["ctrl", "shift", "f7"]
  captureOutput: ["ctrl", "shift", "f8"]
  toggleFixedFoveated: ["alt", "shift", "f1"]

Full log :

20:43:01 [17616] Current configuration:
20:43:01 [17616]   Upscaling (NIS) is enabled
20:43:01 [17616]     * Render scale: 0.59
20:43:01 [17616]     * Sharpness:    0.6
20:43:01 [17616]     * Radius:       0.6
20:43:01 [17616]     * MIP bias:     enabled
20:43:01 [17616]   Debug mode is enabled
20:43:01 [17616] Currently active hotkeys:
20:43:01 [17616]   * cycleUpscalingMethod 17 16 113
20:43:01 [17616]   * increaseUpscalingRadius 17 16 114
20:43:01 [17616]   * decreaseUpscalingRadius 17 16 115
20:43:01 [17616]   * increaseUpscalingSharpness 17 16 116
20:43:01 [17616]   * decreaseUpscalingSharpness 17 16 117
20:43:01 [17616]   * toggleDebugMode 17 16 112
20:43:01 [17616]   * toggleUpscalingApplyMipBias 17 16 118
20:43:01 [17616]   * toggleFixedFoveated 18 16 112
20:43:01 [17616]   * captureOutput 17 16 119
20:43:01 [17616] Installing hook for LoadLibraryA from 00007FF85B6404F0 to 00007FFFC255B2C0
20:43:01 [17616] Installing hook for LoadLibraryExA from 00007FF85B63FBC0 to 00007FFFC255B310
20:43:01 [17616] Installing hook for LoadLibraryW from 00007FF85B63FEE0 to 00007FFFC255B3F0
20:43:01 [17616] Installing hook for LoadLibraryExW from 00007FF85B63ADC0 to 00007FFFC255B380
20:43:01 [17616] d3d11.dll is loaded in the process, installing hooks...
20:43:01 [17616] Installing hook for D3D11CreateDevice from 00007FF854CBFCB0 to 00007FFFC253CBA0
20:43:01 [17616] Installing hook for D3D11CreateDeviceAndSwapChain from 00007FF854CBFE20 to 00007FFFC253D020
20:43:16 [17616] vrclient_x64.dll is loaded in the process, installing hooks...
20:43:16 [17616] Installing hook for VRClientCoreFactory from 00007FFFEA4C2AF0 to 00007FFFC25448B0
20:43:16 [17616] OpenVR: requested interface IVRClientCore_003
20:43:16 [17616] Installing virtual function hook for IVRClientCore::GetGenericInterface
20:43:16 [17616] Installing virtual function hook for IVRClientCore::Cleanup
20:43:16 [17616] OpenVR: requested interface IVRClientCore_003
20:43:16 [17616] Removing hook to 00007FFFEA4B9200
20:43:16 [17616] Removing hook to 00007FFFEA4BA800
20:43:16 [17616] Installing virtual function hook for IVRClientCore::GetGenericInterface
20:43:16 [17616] Installing virtual function hook for IVRClientCore::Cleanup
20:43:16 [17616] OpenVR: requested interface IVRRenderModels_006
20:43:16 [17616] OpenVR: requested interface IVRRenderModelsInternal_XXX
20:43:16 [17616] OpenVR: requested interface IVRResources_001
20:43:16 [17616] OpenVR: requested interface IVRDriverManager_001
20:43:16 [17616] OpenVR: requested interface IVRSettings_003
20:43:16 [17616] OpenVR: requested interface IVRSettingsInternal_001
20:43:16 [17616] OpenVR: requested interface IVRPaths_001
20:43:16 [17616] OpenVR: requested interface IVRPathsInternal_001
20:43:16 [17616] OpenVR: requested interface IVRProperties_001
20:43:16 [17616] OpenVR: requested interface IVRPropertiesInternal_001
20:43:16 [17616] OpenVR: requested interface IVRServer_XXX
20:43:16 [17616] OpenVR: requested interface IVRSystemLayerInternal_XXX
20:43:16 [17616] OpenVR: requested interface IVRClientInternal_XXX
20:43:16 [17616] OpenVR: requested interface LocalizationManager
20:43:16 [17616] OpenVR: requested interface IVRCompositorSystemInternal_001
20:43:16 [17616] OpenVR: requested interface IVRInput_010
20:43:16 [17616] OpenVR: requested interface IVRInputInternal_002
20:43:16 [17616] OpenVR: requested interface IVRChaperone_004
20:43:16 [17616] OpenVR: requested interface IVRChaperoneSetup_006
20:43:16 [17616] OpenVR: requested interface IVRChaperoneInternal_001
20:43:16 [17616] OpenVR: requested interface IVRApplications_007
20:43:16 [17616] OpenVR: requested interface IVRSystem_022
20:43:16 [17616] Installing virtual function hook for IVRSystem::GetRecommendedRenderTargetSize
20:43:16 [17616] OpenVR: requested interface IVRMailbox_002
20:43:16 [17616] OpenVR: requested interface IVRDebug_001
20:43:16 [17616] OpenVR: requested interface IVRBlockQueue_004
20:43:16 [17616] OpenVR: requested interface IVRControlPanel_006
20:43:16 [17616] OpenVR: requested interface IVRApplicationsInternal_XXX
20:43:16 [17616] OpenVR: requested interface IVRResources_001
20:43:16 [17616] OpenVR: requested interface IVRDriverDirectInternal_XXX
20:43:16 [17616] OpenVR: requested interface IVROverlay_025
20:43:16 [17616] OpenVR: requested interface IVROverlayInternal_XXX
20:43:16 [17616] OpenVR: requested interface IVRDriverDirectInternal_XXX
20:43:16 [17616] OpenVR: requested interface IVRExtendedDisplay_001
20:43:16 [17616] OpenVR: requested interface IVRTrackedCameraInternal_XXX
20:43:16 [17616] OpenVR: requested interface IVRCompositor_027
20:43:16 [17616] Installing virtual function hook for IVRCompositor::WaitGetPoses
20:43:16 [17616] Installing virtual function hook for IVRCompositor::PostPresentHandoff
20:43:16 [17616] Installing virtual function hook for IVRCompositor::Submit
20:43:16 [17616] OpenVR: requested interface IVRSystem_019
20:43:16 [17616] OpenVR: requested interface IVRCompositor_022
20:43:16 [17616] OpenVR: requested interface IVRExtendedDisplay_001
20:43:16 [17616] OpenVR: requested interface IVRRenderModels_006
20:43:16 [17616] (DEBUG) Redirecting D3D11CreateDevice to system
20:43:16 [17616] (DEBUG) Redirecting D3D11CreateDeviceAndSwapChain to system
20:43:16 [17616] Loading DLL at "C:\\WINDOWS\\system32\\dxgi.dll"
20:43:16 [17616] (DEBUG) Redirecting CreateDXGIFactory2 to system
20:43:21 [17616] Game is submitting D3D11 textures, creating necessary output resources...
20:43:21 [17616] Trying to load NVAPI...
20:43:21 [17616] Successfully initialized NVAPI; Variable Rate Shading is available.
20:43:21 [17616] Installing virtual function hook for ID3D11DeviceContext::PSSetSamplers
20:43:21 [17616] Installing virtual function hook for ID3D11DeviceContext::OMSetRenderTargets
20:43:21 [17616] Installing virtual function hook for ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews
20:43:21 [17616] (DEBUG) Create UAV for texture of format 28 and view dimension 4
20:43:21 [17616] OpenVR: requested interface IVRSystem_022
20:43:21 [17616] Raw projection for eye 0: l -1.5, r 1.1, t -1.4, b 1.4
20:43:21 [17616] Display is canted by 0 RAD
20:43:21 [17616] Projection center for eye 0: 0.59, 0.5
20:43:21 [17616] Raw projection for eye 1: l -1.1, r 1.5, t -1.4, b 1.4
20:43:21 [17616] Display is canted by -0 RAD
20:43:21 [17616] Projection center for eye 1: 0.41, 0.5
20:43:21 [17616] OpenVR: requested interface IVRSystem_022
20:43:21 [17616] Creating shader resource view for input texture 000001FFD3881D78
20:43:21 [17616] Creating D3D11 resources for NIS upscaling...
20:43:21 [17616] (DEBUG) MIP LOD Bias changed from 0 to -0.76, recreating samplers
20:43:21 [17616] OpenVR: requested interface IVRSettings_003
20:43:21 [17616] OpenVR: requested interface IVRResources_001
20:43:21 [17616] OpenVR: requested interface IVRCompositorSystemInternal_001
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] Creating replacement sampler for 0000020057E47EE0 with MIP LOD bias -0.76
20:43:21 [17616] Creating replacement sampler for 000001FF970A8CA0 with MIP LOD bias -0.76
20:43:21 [17616] Creating replacement sampler for 000001FF970AA320 with MIP LOD bias -0.76
20:43:21 [17616] Creating replacement sampler for 000001FF970AA8E0 with MIP LOD bias -0.76
20:43:21 [17616] Creating replacement sampler for 000001FF970A7760 with MIP LOD bias -0.76
20:43:21 [17616] Creating replacement sampler for 000001FF970A6420 with MIP LOD bias -0.76
20:43:21 [17616] Creating replacement sampler for 000001FF970A7620 with MIP LOD bias -0.76
20:43:21 [17616] Creating replacement sampler for 000001FF970A7520 with MIP LOD bias -0.76
20:43:21 [17616] Creating replacement sampler for 000001FF970A61E0 with MIP LOD bias -0.76
20:43:21 [17616] Creating replacement sampler for 000001FF970A60E0 with MIP LOD bias -0.76
20:43:21 [17616] Creating replacement sampler for 000001FF970A5FA0 with MIP LOD bias -0.76
20:43:21 [17616] Creating replacement sampler for 000001FF970A5EA0 with MIP LOD bias -0.76
20:43:21 [17616] Creating shader resource view for input texture 000001FFD3882A78
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] Creating replacement sampler for 0000020057E446A0 with MIP LOD bias -0.76
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] Creating replacement sampler for 000001FF970A9B60 with MIP LOD bias -0.76
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:21 [17616] (DEBUG) VRS: Single eye target, don't know which eye
...
20:43:56 [17616] Fixed foveated is now disabled
20:43:57 [17616] Average GPU processing time for post-processing: 0.48 ms
20:43:57 [17616] Fixed foveated is now enabled
20:43:57 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:57 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:43:57 [17616] (DEBUG) VRS: Single eye target, don't know which eye
20:44:00 [17616] Fixed foveated is now disabled
...

So each time I activate the foveated rendering it seem it goes fubar with the debug log (DEBUG) VRS: Single eye target, don't know which eye

Is there a way to throw money at this?

I get it. Open Source Software isn't primarily made to make money, but since this software is mostly used for leisure-stuff anyway and turns out to be really useful I sure wouldn't mind a paypal link/patreon account or whatever to support the effort :).

Oculus mode in Elite Dangerous: no effect?

I'm trying to run vperfkit via Oculus on a Pimax. Reason is that some games can be modified to use the Oculus libraries so the game can be run without needing the very resource hungry "enable parallel projections" setting in PiTool. reddit user n4ske created a modified launcher that allows to run ED in Oculus mode for SteamVR-headsets.
This works, but the performance is low and I suspect this is because OVR uses a high super resolution setting (image is very clear compared to my SteamVR-optimized variant), basically offsetting the performance gain due to disabled parallel projections. I was hoping that vrperfkit might help boost performance at this high super resolution setting but it seems to have no effect in the game. Hotkeys don't do anything and when I edit the yml to low upscaling factors, no difference can be noticed. According to the logfile, vrperfkit takes control when using OVR:

00:53:32 [19164] ======================
00:53:32 [19164] VR Performance Toolkit
00:53:32 [19164] ======================

00:53:32 [19164] Setting render scale to minimum value of 0.5
00:53:32 [19164] Current configuration:
00:53:32 [19164] Upscaling (FSR) is enabled
00:53:32 [19164] * Render scale: 0.5
00:53:32 [19164] * Sharpness: 0.7
00:53:32 [19164] * Radius: 0.5
00:53:32 [19164] * MIP bias: enabled
00:53:32 [19164] Debug mode is enabled
00:53:32 [19164] Currently active hotkeys:
00:53:32 [19164] * cycleUpscalingMethod 17 113
00:53:32 [19164] * increaseUpscalingRadius 17 114
00:53:32 [19164] * decreaseUpscalingRadius 17 115
00:53:32 [19164] * increaseUpscalingSharpness 17 116
00:53:32 [19164] * decreaseUpscalingSharpness 17 117
00:53:32 [19164] * toggleDebugMode 17 112
00:53:32 [19164] * toggleUpscalingApplyMipBias 17 118
00:53:32 [19164] * toggleFixedFoveated 18 112
00:53:32 [19164] * captureOutput 17 119
00:53:32 [19164] Installing hook for LoadLibraryA from 00007FFA9C9B04F0 to 00007FFA7600B0A0
00:53:32 [19164] Installing hook for LoadLibraryExA from 00007FFA9C9AFBC0 to 00007FFA7600B0F0
00:53:32 [19164] Installing hook for LoadLibraryW from 00007FFA9C9AFEE0 to 00007FFA7600B1D0
00:53:32 [19164] Installing hook for LoadLibraryExW from 00007FFA9C9AADC0 to 00007FFA7600B160
00:53:32 [19164] d3d11.dll is loaded in the process, installing hooks...
00:53:32 [19164] Installing hook for D3D11CreateDevice from 00007FFA9644FCB0 to 00007FFA75FECBA0
00:53:32 [19164] Installing hook for D3D11CreateDeviceAndSwapChain from 00007FFA9644FE20 to 00007FFA75FED020
00:53:34 [19156] (DEBUG) Redirecting CreateDXGIFactory1 to system
00:53:34 [19156] Loading DLL at "C:\WINDOWS\system32\dxgi.dll"

Any idea why it still has no effect in the game?

Does this work with Unity?

This isn't an issue, just a question, but could be helped through documentation. The README points to a location to put the files that seems applicable to Unreal engine games. Its not clear to me from that whether this works with Unity games, and if so, where the files should be placed in that case. Hoping that the README could be clarified a bit.

Crashes with new Reshade 5.0

Excited to try out the new Reshade 5.0 with supposed performance improvements and built-in SteamVR support, but SkyrimVR crashes every time (and froze the entire computer one time) when Vrperfkit is also enabled. This is whether Reshade 5.0's dll is renamed as d3d11 or dinput8: the normal load screen appears that says Reshade 5.0 is loading, then the game crashes. Switching back to your version of Reshade's dll renamed d3d11 works normally.

The logs are interesting - Reshade 5.0 (dinput8) says it is terminating due to DXGI, and the Vrperfkit log appears to be endlessly setting texture sizes.

Thanks!

DINPUT8.log
vrperfkit.log

Pavlov VR glitches caused by VR Performance Toolkit

1: Looking down scopes has them rendering at a much lower resolution than intended, even with MIP bias disabled.
2: Colors are all sorts of incorrect: it's very washed-out.
3: Around the edges of the screen, there's this weird black pixelation that turns into some weird color-band-spectrum-error thing whenever you die. It also only appears on some textures for some reason.

Reshade performance weirdness with Vrperfkit active

First, mind-blowingly amazing performance improvement with this mod! Thank you!

Not game-breaking, but weird issue in SkyrimVR. Using your old Openvr_api version of FFR or FSR the performance hit from Reshade made sense (I can see in the Reshade statistics tab that the 2 effects I am using take about 0.5-0.6 GPU ms combined; disabling/enabling Reshade effects by hitting Del only slightly affected overall fps).

Now with the DXGI version I activate Reshade by renaming its dll to d3d11.dll, and that works. However every time I add the Reshade dll with the same two effects my fps drops by 10-20fps consistently (from pretty steady 90fps without Reshade down to the 70's), even though the Reshade statistics tab again shows 0.5-0.6 GPU ms combined. Disabling Reshade effects via Del key doesn't seem to improve fps noticeably, but removing the Reshade dll from the game folder gets me back to 90fps. So maybe the 2 dll's are conflicting behind the scenes?

I am monitoring performance in FpsVR but the GPU milliseconds don't seem to match FPS reliably since (I think) much of the work being done by Vrperfkit and Reshade isn't included in the ms it displays, but is included in the FPS. However I notice that ~9.5ms = ~90fps with only vrperfkit; ~10ms (with both Vrperfkit and Reshade) drops me down to the 70's (tested multiple times loading the same game save and walking the same route).

Maybe you could keep an eye out for any potential conflicts between the two dlls, or maybe an Openvr_api version of Vrperfkit wouldn't experience the same issue? Thanks!

dxgi.dll not found?

I have downloaded all the files, but can't find dxgi.dll anywhere in there?

Am I missing something? Cant even see it in the repo list of files?

VRChat Crashes

The crashes seem to occur mostly when both FSR and FFR are enabled. Opening SteamVR dashboard while in-game seems to cause a crash.

This log is with default values but both FSR and FFR enabled
vrperfkit.log

Other info:

  • Using ALVR with Quest 2 to stream PCVR, and it has its own FFR, perhaps there are conflicts? I will test with air link and update this issue. Edit: This is happening with air link as well, so the streaming method probably isn't to blame.
  • Crashes on startup if I play around with the values (e.g. setting resolution target for FSR to 100% from 77%), but I can load the game with the default values
  • I also use Desktop+ and OVR Advanced Settings (not sure if it's relevant, but I included the info just in case)

Might be a silly question

Hi! Do I need to downscale resolution on Steam VR or the game resolution slider to match native res with FSR or NIS? Thank you!

Would this allow D3D11 -> Vulkan via DXVK on Windows?

Saw a few commits like d7ade8d and I was wondering if DXVK could be used on Windows, or in other words allow D3D11 VR games like Blade & Sorcery to run with Vulkan?

I've heard that DXVK couldn't be used on Windows for VR due to dxgi or something like that.

NVIDIA Freestyle/ Image filtering?

Hi, would NVIDIA Freestyle/ some sort of image filtering be possible with this? Tweaking black levels/gamma/contrast/saturation would be awesome.

Doesnt work with Iracing

I've got all working fine with ACC and AMS2, but with Iracing the image loads only on the monitor, in the headset there is no image, only "loading". This is in Oculus mode with a Quest 2. Any idea?

ACC - Instant crash upon start

Hi,

Not sure if this is supposed to work with ACC but reporting it anyways for your knowledge.

Been an avid user of openvr_fsr and openvr_foveated (currently using https://github.com/fholger/openvr_foveated and testing, seems to be working really, really well for ACC)

Logs here, not sure if it's tells you anything about the crash. Let me know if you want me to test anything else further.

03:20:11 [3556] ======================
03:20:11 [3556] VR Performance Toolkit
03:20:11 [3556] ======================

03:20:11 [3556] Current configuration:
03:20:11 [3556]   Upscaling (FSR) is enabled
03:20:11 [3556]     * Render scale: 0.95
03:20:11 [3556]     * Sharpness:    1
03:20:11 [3556]     * Radius:       0.5
03:20:11 [3556]     * MIP bias:     enabled
03:20:11 [3556]   Debug mode is disabled
03:20:11 [3556] Installing hook for LoadLibraryA from 00007FFDD2BCEBB0 to 00007FFDBB67B0A0
03:20:11 [3556] Installing hook for LoadLibraryExA from 00007FFDD2BCE550 to 00007FFDBB67B0F0
03:20:11 [3556] Installing hook for LoadLibraryW from 00007FFDD2BCE540 to 00007FFDBB67B1D0
03:20:11 [3556] Installing hook for LoadLibraryExW from 00007FFDD2BCA200 to 00007FFDBB67B160
03:20:11 [3556] d3d11.dll is loaded in the process, installing hooks...
03:20:11 [3556] Installing hook for D3D11CreateDevice from 00007FFDCD63DE80 to 00007FFDBB65CBA0
03:20:11 [3556] Installing hook for D3D11CreateDeviceAndSwapChain from 00007FFDCD63DFE0 to 00007FFDBB65D020
03:20:12 [3556] Loading DLL at "C:\\WINDOWS\\system32\\dxgi.dll"
03:20:13 [3556] vrclient_x64.dll is loaded in the process, installing hooks...
03:20:13 [3556] Installing hook for VRClientCoreFactory from 00007FFD91252AF0 to 00007FFDBB664830
03:20:13 [3556] OpenVR: requested interface IVRClientCore_003
03:20:13 [3556] Installing virtual function hook for IVRClientCore::GetGenericInterface
03:20:13 [3556] Installing virtual function hook for IVRClientCore::Cleanup
03:20:13 [3556] OpenVR: requested interface IVRClientCore_003
03:20:13 [3556] Removing hook to 00007FFD91249200
03:20:13 [3556] Removing hook to 00007FFD9124A800
03:20:13 [3556] Installing virtual function hook for IVRClientCore::GetGenericInterface
03:20:13 [3556] Installing virtual function hook for IVRClientCore::Cleanup
03:20:13 [3556] OpenVR: requested interface IVRRenderModels_006
03:20:13 [3556] OpenVR: requested interface IVRRenderModelsInternal_XXX
03:20:13 [3556] OpenVR: requested interface IVRResources_001
03:20:13 [3556] OpenVR: requested interface IVRDriverManager_001
03:20:13 [3556] OpenVR: requested interface IVRSettings_003
03:20:13 [3556] OpenVR: requested interface IVRSettingsInternal_001
03:20:13 [3556] OpenVR: requested interface IVRPaths_001
03:20:13 [3556] OpenVR: requested interface IVRPathsInternal_001
03:20:13 [3556] OpenVR: requested interface IVRProperties_001
03:20:13 [3556] OpenVR: requested interface IVRPropertiesInternal_001
03:20:13 [3556] OpenVR: requested interface IVRServer_XXX
03:20:13 [3556] OpenVR: requested interface IVRSystemLayerInternal_XXX
03:20:13 [3556] OpenVR: requested interface IVRClientInternal_XXX
03:20:13 [3556] OpenVR: requested interface LocalizationManager
03:20:13 [3556] OpenVR: requested interface IVRCompositorSystemInternal_001
03:20:13 [3556] OpenVR: requested interface IVRInput_010
03:20:13 [3556] OpenVR: requested interface IVRInputInternal_002
03:20:13 [3556] OpenVR: requested interface IVRChaperone_004
03:20:13 [3556] OpenVR: requested interface IVRChaperoneSetup_006
03:20:13 [3556] OpenVR: requested interface IVRChaperoneInternal_001
03:20:13 [3556] OpenVR: requested interface IVRApplications_007
03:20:13 [3556] OpenVR: requested interface IVRSystem_022
03:20:13 [3556] Installing virtual function hook for IVRSystem::GetRecommendedRenderTargetSize
03:20:13 [3556] OpenVR: requested interface IVRMailbox_002
03:20:13 [3556] OpenVR: requested interface IVRDebug_001
03:20:13 [3556] OpenVR: requested interface IVRBlockQueue_004
03:20:13 [3556] OpenVR: requested interface IVRControlPanel_006
03:20:13 [3556] OpenVR: requested interface IVRApplicationsInternal_XXX
03:20:13 [3556] OpenVR: requested interface IVRResources_001
03:20:13 [3556] OpenVR: requested interface IVRDriverDirectInternal_XXX
03:20:13 [3556] OpenVR: requested interface IVROverlay_025
03:20:13 [3556] OpenVR: requested interface IVROverlayInternal_XXX
03:20:13 [3556] OpenVR: requested interface IVRDriverDirectInternal_XXX
03:20:13 [3556] OpenVR: requested interface IVRExtendedDisplay_001
03:20:13 [3556] OpenVR: requested interface IVRTrackedCameraInternal_XXX
03:20:13 [3556] OpenVR: requested interface IVRCompositor_027
03:20:13 [3556] Installing virtual function hook for IVRCompositor::WaitGetPoses
03:20:13 [3556] Installing virtual function hook for IVRCompositor::PostPresentHandoff
03:20:13 [3556] Installing virtual function hook for IVRCompositor::Submit
03:20:13 [3556] OpenVR: requested interface IVRSystem_020
03:20:13 [3556] OpenVR: requested interface IVRSystem_020
03:20:13 [3556] OpenVR: requested interface IVRCompositor_022
03:20:13 [3556] OpenVR: requested interface IVROverlay_019
03:20:13 [3556] OpenVR: requested interface IVRChaperone_003
03:20:18 [3556] OpenVR: requested interface IVRExtendedDisplay_001
03:20:18 [3556] OpenVR: requested interface IVRInput_007
03:20:18 [5140] OpenVR: requested interface IVRSettings_003
03:20:18 [5140] OpenVR: requested interface IVRSystem_022
03:20:18 [5140] OpenVR: requested interface IVRSystem_022
03:20:18 [5140] OpenVR: requested interface IVRSystem_022
03:20:18 [5140] OpenVR: requested interface IVRSystem_022
03:20:18 [5140] Game is submitting D3D11 textures, creating necessary output resources...
03:20:18 [5140] Trying to load NVAPI...
03:20:18 [5140] Successfully initialized NVAPI; Variable Rate Shading is available.
03:20:18 [5140] Installing virtual function hook for ID3D11DeviceContext::PSSetSamplers
03:20:18 [5140] Installing virtual function hook for ID3D11DeviceContext::OMSetRenderTargets
03:20:18 [5140] Installing virtual function hook for ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews
03:20:18 [5140] OpenVR: requested interface IVRSystem_022
03:20:18 [5140] Raw projection for eye 0: l -1.1, r 1.1, t -1.4, b 1.1
03:20:18 [5140] Display is canted by 0 RAD
03:20:18 [5140] Projection center for eye 0: 0.52, 0.57
03:20:18 [5140] Raw projection for eye 1: l -1.1, r 1.1, t -1.4, b 1.1
03:20:18 [5140] Display is canted by -0 RAD
03:20:18 [5140] Projection center for eye 1: 0.48, 0.57
03:20:18 [5140] OpenVR: requested interface IVRSystem_022
03:20:18 [5140] Creating shader resource view for input texture 0000027EE86DA598
03:20:18 [5140] Creating D3D11 resources for FSR upscaling...
03:20:18 [5140] OpenVR: requested interface IVRResources_001
03:20:18 [5140] OpenVR: requested interface IVRCompositorSystemInternal_001
03:20:18 [5140] Creating replacement sampler for 0000027EE88A7C00 with MIP LOD bias -0.074
03:20:18 [5140] Creating replacement sampler for 0000027D87789BC0 with MIP LOD bias -0.074
03:20:18 [5140] Creating replacement sampler for 0000027D82E1EB80 with MIP LOD bias -0.074
03:20:18 [5140] Creating replacement sampler for 0000027D82E1F300 with MIP LOD bias -0.074
03:20:18 [5140] Creating replacement sampler for 0000027EE88A8380 with MIP LOD bias -0.074
03:20:18 [5140] Creating replacement sampler for 0000027D876BC8C0 with MIP LOD bias -0.074
03:20:18 [5140] Creating replacement sampler for 0000027D877AB7C0 with MIP LOD bias -0.074
03:20:18 [5140] Creating replacement sampler for 0000027D877CE480 with MIP LOD bias -0.074

openvr_api variant?

I understand this will supercede the openvr_api mods because this is potentially compatible with Oculus games, however an added benefit of the previous openvr_api method was that it forced games to run in SteamVR. Despite some people reporting reduced performance, I strongly preferred running games in SteamVR due to SteamVR input, but some games won't allow you to. Into The Radius was an example that no matter what I did I couldn't get it to run in SteamVR instead of Oculus without the use of a third party tool such as OpenVR Advanced Settings. However, your openvr_api mods allowed the game to run in SteamVR, bypassing the need for a third party program constantly running in the background.

So I'm curious, would it be possible to continue to compile an openvr_api variant, or perhaps add a "force runtime" configurable setting to the kit? This could be used to improve performance by forcing Oculus or OpenComposite instead of SteamVR.

How to change settings

Hi Fholger, you forgot to add "how to" in readme :)

I figured it from log, we suppose to use shortcuts to circle between different settings, (Alt=17, F1 =112, F2=113...)


13:24:45 [13400] Currently active hotkeys:
13:24:45 [13400] * cycleUpscalingMethod 17 113 (Alt+F2)
13:24:45 [13400] * increaseUpscalingRadius 17 114
13:24:45 [13400] * decreaseUpscalingRadius 17 115
13:24:45 [13400] * increaseUpscalingSharpness 17 116
13:24:45 [13400] * decreaseUpscalingSharpness 17 117
13:24:45 [13400] * toggleDebugMode 17 112
13:24:45 [13400] * toggleUpscalingApplyMipBias 17 118
13:24:45 [13400] * captureOutput 17 119


Also there are some settings as default in vrperfkit:


13:24:45 [13400] Current configuration:
13:24:45 [13400] Upscaling (FSR) is enabled
13:24:45 [13400] * Render scale: 0.77
13:24:45 [13400] * Sharpness: 0.7
13:24:45 [13400] * Radius: 0.6
13:24:45 [13400] * MIP bias: enabled
13:24:45 [13400] Debug mode is disabled


How can I set my preferred settings as my default? Is there some config file to edit?
Or can I save it after using shortcuts?

Not working with AMS 2.

Copied the files to the .exe directory, but its not working. There isnt even a logfile after starting the game.

Unity game rendering upside down in HMD

Testing this mod with A Township Tale through SteamVR, currently running in Unity 2018 at the moment I believe.

When running the game with this mod the HMD renders the entire world upside down, yet the screen mirror on the monitor is right side up. HMD is a Steam Index.

Is it possible the devs are using an outdated SDK version that's somehow conflicting with this?

Also the Launcher for this game allows users to choose between SteamVR and Oculus runtimes - SteamVR generally performs better and that's what I'm using. Have not tried running the Oculus runtime, but I can do so if that helps.

Debug for foveated rendering

Is it possible to draw some rings or something for the foveated rendering rings in debug mode? Would really aid the understanding of where they are and if they can be seen in the headset.

Really impressive mod. Looking forward to the force hidden area mask feature., hopefully additional gains to be had!

Antialiasing gamma & TWDSS Visual shifting

Asgard's Wrath when Epic or High AA used the left eye getting a very bright gamma. It happens only after starting the game, not on the menu.
TWDSS on the bottom part of the screen is Visual shifting can be noticeable even in the menu.

Request -- Prediction (Motion) Dampening

OpenXR tool for MSFS recently implemented a feature called " Prediction Dampening" -- which seems like it was mainly used to dampen the movements induced for new Win11 users.

However there are two instances beyond that I can think this might help.
First is for those of us who have buttkickers, and/or just drink too much coffee. Its possible that it can induce weird situations where your view is bouncing around and being tracked by the headset which just feels off, either due to rumbling, or even just a rapid heartbeat.

The second and probably more universal: ZOOM. By zooming in any game, there's no stabilization, unlike flat panel games. This results in really bad images, much like holding high power binoculars.

Ideally, I'd like to be able to rapidly switch between different levels of dampening, so for non-zoom, I could have a low dampening, but when zoomed, higher dampening.

I contacted the developers of the OpenXR tool, and they suggested asking here as they don't know OpenVR, just OpenXR.
The way they said it is implemented is:
"basically fake out the predicted display time returned by the OpenXR runtime (whether it's the WMR one, Oculus one, SteamVR one)"

This might be asking a lot, I know, but its a feature I'd love to see non the less and I don't know where else to ask.
Or, if you know of any other way to dampen the tracking, especially when in any sort of zoom, I'd be interested.

Question: When migrating from OpenVRFSR

Apparently there are some bugs as far as the issue is concerned, but I would like to make my intentions in good time.
Simple question. If I have an app that originally had OpenVRFSR installed, should I run a repair on Steam to restore the openvrapi.dll to the original openvrapi.dll instead of renaming and replacing the dxgi.dll from FSR?
(Some people might want to integrate with Reshade, but let's leave that for now)

Translated with www.DeepL.com/Translator (free version)

H3VR controllers not detected with Virtual Desktop

Hello! I'm using an Oculus Quest 2 to play my games, using Virtual Desktop, and I noticed that while the game loads and my HMD moves perfectly fine, my controllers aren't detected as moving around, or receiving any inputs whatsoever also. One thing to note, is that I found controllers on the ground that are Vive Wands, so it looks like the game thinks there are Vive Wands, if that helps.

Here is the log for the game when it ran.
vrperfkit.log

TAA injection? Is it possible?

Hi, so Alien Isolation has a VR mod and it also has a separate TAA injection mod. So is it possible to inject TAA into games that don't have it or did alien isolation have it but it was disabled and they used SMAA instead.. which is weird since TAA looks better and uses less resources...

Both projects are here on GitHub.

`fixedFoveated` creates weird pixelated spots in right eyes middle [ SkyrimVR]

Hello there,

so I'm running Skyrim VR with verperfkit v0.2.2 on a Quest2, with an RTX 3070 GPU.

First of all thank you for starting this projected , "foveated rendering" makes so much sense, and it also seemed to work at first.
The thing is, I noticed on my right eye, there are big areas right in the middle with really low-res rendering. If I close my left eye, parts of the image look more like Daggerfall then Skyrim.

It doesn't happen when I just look at the floor or a wall, only starts when I look at something a few meters away. It also sometimes went away but then came back. Obviously it's really distracting.

If I turn off fixedFoveated in the yml, the issue stops happening, but obviously then I also loose out on some of the FPS gains you gave us.
it's also weird it only happens on the right eye, never on the left.

I'm connecting with oculus link and have the Oculus resolution turned all the way up in the oculus menu.

Does not work: iRacing + Oculus

Simulator simply will not launch for Oculus user… Quest 2 if that makes a difference.

I was so excited for foveated rendering!! Hope this can be fixed :)

Reshade + New PerfKit

I love the new method, but it seems that it necessarily prohibits the use of your own openvr_alpha2 from last year (which I just discovered along with Reshade) as it uses the dxgi.dll.
Is there a way to use or combine both?
My god I just fell in love with what Reshade could do with Your Preset + CAS + DFX. I had to revert to using your openVR_api.dll method just so I could do the FSR AND Reshade.
If there's a way I'd love to use your new performance kit in addition or combination as I'm very excited about the addition of VRS and FFR and don't want to miss a trick!
This is especially useful for Wide FOV (such as Pimax uses) as the vision is distorted (chromatically or by way of barrel distortion) anyway.
Also just thanks man. THANKS!
Literally your work is the best thing to happen to my VR experience!
You are like a digital optometrist!

I don't find dxgi.dll

Sorry, it's probably stupid, but I don't find the file dxgi.dll inside the zip/file
Where is it?
Thanks

User Overlay

Maybe I'm using the utility the wrong way (forgive my ignorance!). In debug mode, could numeric values be shown onscreen as they are being adjusted? This way we can write them down and place them directly in the config file when we find exactly what we need.

Oculus attempt with Pimax?

I tried the PerfKit with the only two games I own that use Oculus runtime, Lone Echo 1 and 2, but it doesn't seem to work (at least the hotkeys don't). I'm still learning about github and have very basic programming skills. Looking at the build I didn't see how it ties in exactly to the Oculus runtime.

Assetto Corsa: Single eye target

Hi,

when starting Assetto Corsa with the dll and conf file placed as instructed the vrperfkit.log is created and the dll seems to load well, but then it repeats the following message forever:

23:35:05 [18032] (DEBUG) VRS: Single eye target, don't know which eye

This is obviously with debug mode enabled. I do not see any radius in game. Any setting I should change?

vrperfkit.log

Beast Saber instant Crash

German

Beat Saber crasht direkt nach dem öffnen (Steam Version) einzigste änderung in der vrperfkit.yml ist das der renderscale auf 0.5 gesetzt ist. Der CrashDump hab ich mal angehängt hoffe das hilft, oder jmd kann mir helfen wenn ich was falsch konfiguriert hab oder so.

VRPerfkit.log im spielordner:
vrperfkit.log

Beat Saber CrashDump in einer zip weil Github mich die nicht anders hochladen lässt:
Beat Saber CrashDump.zip

English

Beat Saber crashes immediately after opening (Steam version) the only change in the vrperfkit.yml is that the renderscale is set to 0.5. The CrashDump I have attached hope that helps, or anyone can help me if I have configured something wrong or something.

VRPerfkit.log in the game folder:
vrperfkit.log

Beat Saber CrashDump in a zip because Github doesn't let me upload it any other way:
Beat Saber CrashDump.zip

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.