Add FidelityFX SuperResolution to SteamVR games

Related tags

Game openvr_fsr
Overview

Modified OpenVR DLL with AMD FidelityFX SuperResolution Upscaler

This modified openvr_api.dll allows you to apply FidelityFX SuperResolution upscaling to many SteamVR games, as long as they use D3D11.

To install, find the location of the openvr_api.dll in the game's installation folder:

  • It might be located right next to the main executable (e.g. Skyrim, FO4).
  • For Unity games, look in: <GameDir>\<Game>_Data\Plugins
  • For Unreal 4 games, look in: <GameDir>\Engine\Binaries\ThirdParty\OpenVR\OpenVRvX_Y_Z

Rename the existing openvr_api.dll to openvr_api.orig.dll, then extract both the openvr_api.dll and the openvr_mod.cfg from the archive to this directory. You should now edit the openvr_mod.cfg to your liking and adjust the renderScale and sharpness parameters to your liking.

In case you want to uninstall the mod, simply remove the openvr_api.dll file again and rename the original openvr_api.orig.dll back to openvr_api.dll.

In case you run into issues, the log file (openvr_mod.log) may provide clues to what's going on.

Example results:

Important disclaimer

This is a best-effort experiment and hack to bring this upscaling technique to VR games which do not support it natively. Please understand that the approach taken here cannot guarantee the optimal quality that FSR might, in theory, be capable of. AMD has specific recommendations where and how FSR should be placed in the render pipeline. Due to the nature of this generic hack, I cannot guarantee nor control that all of these recommendations are actually met for any particular game. Please do not judge the quality of FSR solely by this mod :)

I intend to keep working on the performance, quality and compatibility of this mod, so do check back occasionally.

Known issues

  • Half Life: Alyx and Star Wars: Squadrons do not work, because they don't like you replacing their openvr_dll.api.
  • In rare cases, the rendering output may appear unnaturally dark when this mod is active. This is an issue with color space that I hope to be able to fix in a future release.
  • Please report any other game that isn't working, assuming that it is a SteamVR game and uses D3D11 for rendering.

OpenVR SDK

OpenVR is an API and runtime that allows access to VR hardware from multiple vendors without requiring that applications have specific knowledge of the hardware they are targeting. This repository is an SDK that contains the API and samples. The runtime is under SteamVR in Tools on Steam.

Documentation

Documentation for the API is available on the GitHub Wiki

More information on OpenVR and SteamVR can be found on http://steamvr.com

Comments
  • FSR radius out of sweetspot on wide Pimax headsets.

    FSR radius out of sweetspot on wide Pimax headsets.

    On Pimax headsets the radius setting seems to be inverted, causing the use of bilinear upscaling in the sweetspot of the lens while fsr is applied outside of the specified radius. Disabling the radius (setting radius to 2) appears to function as intended however. This seems to be the case regardless of fovated rendering. I set the sharpening to 1, radius to 0.6, and renderScale to 0.77 to highlight the effect I'm talking about.

    fsr pimax right eye anotated This is an anotated screenshot of the steamvr headset view of the right eye.

    20210719232536_1_vr This is a screenshot taken by steamvr.

    Here's my log if it helps.

    openvr_mod.log

    opened by RamesTheGeneric 43
  • Euro/American Truck Simulator 2 not working

    Euro/American Truck Simulator 2 not working

    Both Euro and American truck simulator does not work,

    VR mode starts and work fine, but FSR is not doing anything, this is the log i got for both

    Initializing hooks...
    Requested interface FnTable:IVRSystem_021
    Requested interface FnTable:IVRCompositor_026
    Shutting down hooks.
    
    opened by hgouveia 27
  • Only works with Pavlov of the modern steam games

    Only works with Pavlov of the modern steam games"

    Other than Skyrim and Fallout 4 , all of the games I've tried PCars2 , Dİrt Rally, Half-life Alyx (which gives error if dll is changed) only Pavlov works with this, I can see it working ingame and also got the log on the dll directory. Is this normal at this moment ?

    opened by patientx 16
  • Projection/inclination correction (so far only observed in IL-2 Sturmovik)

    Projection/inclination correction (so far only observed in IL-2 Sturmovik)

    Thanks for your work - I know it's only meant for some specific games, however:

    I gave it a spin in IL2 Sturmovik using an HP Reverb G2 and although the game loads fine and FSR is doing its thing, there seems to be some sort of problem in the projection of the image - looks like the images on the screens are too wide-apart or something and there seems to be some slight distortion when pitching the view.

    Any tips on what to check on correcting this?

    opened by firdimigdi 14
  • List for verified games

    List for verified games

    Hi FHolger

    can you please enable the wiki of this project to document all tested games?

    for example:

    Game|Engine|dll location|extra notes|tested down to ---|---|---|---|--- Project Wingman|Unreal 4|%steam app / common% /Project Wingman/Engine/Binaries/ThirdParty/OpenVR/OpenVRv1_5_17/Win64/ |below balanced "small" text is unreadable|rx 480 DCS World|Custom?|%steam app / common% /DCSWorld/bin/ |below quality UI text is unreadable|rx 480

    opened by DFOXpro 11
  • Not Working as Expected in HellBlade Senua' Sacrifice VR

    Not Working as Expected in HellBlade Senua' Sacrifice VR

    I've applied this mod to Hellblade VR and the resolution scaling doesn't seem to work. The sharpening seems to do something because image looks to be a little sharper but performance is slightly worse than it would be without the mod by about 10FPS on my system.

    opened by VWP92 11
  • Issues with Revive

    Issues with Revive

    so this mod is awesome and I would really love it to work with Revive and it does work to an extent i.e. if I replace the openvr_api32/64 dlls with the one from this mod it technically works but for some reason the games are super dark and unplayable.

    have tested with Lone Echo and Stormland and get the same issue.

    would be awesome if this worked as i could finally play these games without having to turn everything to LOW , and with the mod enabled I get playable FPS at higher settings. it's just too dark to enjoy them.

    have tried fiddling with brightness settings in steamvr and using things like FPSVR but nothing works

    opened by CelticSpike 10
  • Image very bright in DCS 2.7.3 Open Beta

    Image very bright in DCS 2.7.3 Open Beta

    I've just updated to RC1 and it appears to have affected the brightness/gamma in DCS 2.7.3 Open Beta. The image is now very bright. This seems to be the opposite of issue #10 sadly.

    The image looks normal/as expected in the mirror. I faked up some images which I can attach if you want, but "looks too bright" really does cover it.

    (Excellent work, btw. Thank you!)

    opened by fooksca 10
  • Dirt 2 very dark

    Dirt 2 very dark

    I have tried the mod in Dirt 2 and it works but the dashboard of the car leaves it very dark and I have tried various sharpness values ​​but nothing varies. Without the same car and circuit mod, the dashboard looks much brighter and looks perfectly. Do you know why it can be?

    opened by jordanpucela 10
  • Upscaling not happening at all?

    Upscaling not happening at all?

    Hello!

    I've been having some difficulty getting this to run properly (using an RTX 3080 and Index). I'm convinced the DLL is working, because the "renderScale" value in the config is affecting the output resolution, although FSR does not appear to be occuring at all. (wasn't seeing anything weird in the log file either)

    I've tried messing with the radius setting, and I've been unable to destinguish any difference between the center and edges of the image (even when looking at it in the deskop view), it all just looks low resolution.

    I've tested this with Revive (by swapping it's DLL instead of a specific game), and in a basic example with Beat Saber, and have gotten the same results.

    Is it possible I'm doing something wrong, or maybe just over thinking how good FSR should look? So far it's just looked identical as if I were to just run at that resolution.

    Thanks!

    opened by CircuitLord 9
  • AMS2 works excellently with full detail via the Oculus Link :-D

    AMS2 works excellently with full detail via the Oculus Link :-D

    AMS2 works excellently with full detail via the Oculus Link with the AMD 6900XT and a 5800X ..... 90 FPS without problems (0.77 FSR). When I try to play wirelessly via Virtual Desktop, I get an error message.

    Thanks for the MOD :-D

    opened by Mavy1704 9
  • crash vtol vr

    crash vtol vr

    I try this version v2.1.1 and install it to the latest version of vtol vr game folder, it's working the graphic changed, but the problem is that I can't press any button on my quest 2 controllers the trigger also doesn't work

    opened by Cvar1984 0
  • openvr_mod.cfg 26.12.2021

    openvr_mod.cfg 26.12.2021

    image

    { "fsr": { // enable image upscaling through AMD's FSR or NVIDIA's NIS "enabled": true,

    // if enabled, uses NVIDIA's Image Scaling instead of the default
    // AMD FidelityFX SuperResolution. Both algorithms work similarly, but produce
    // somewhat different results. You may want to experiment switching between the
    // two to determine which one you like better for a particular game.
    "useNIS": false,
    
    // Per-dimension render scale. If <1, will lower the game's render resolution
    // accordingly and afterwards upscale to the "native" resolution set in SteamVR.
    // If >1, the game will render at its "native" resolution, and afterwards the
    // image is upscaled to a higher resolution as per the given value.
    // If =1, effectively disables upsampling, but you'll still get the sharpening stage.
    // AMD presets:
    //   Ultra Quality => 0.77
    //   Quality       => 0.67
    //   Balanced      => 0.59
    //   Performance   => 0.50
    "renderScale": 0.77,
    
    // tune sharpness, values range from 0 to 1
    "sharpness": 0.9,
    
    // Only apply FSR/NIS to the given radius around the center of the image.
    // Anything outside this radius is upscaled by simple bilinear filtering,
    // which is cheaper and thus saves a bit of performance. Due to the design
    // of current HMD lenses, you can experiment with fairly small radii and may
    // still not see a noticeable difference.
    // Sensible values probably lie somewhere between [0.2, 1.0]. However, note
    // that, since the image is not spheric, even a value of 1.0 technically still
    // skips some pixels in the corner of the image, so if you want to completely
    // disable this optimization, you can choose a value of 2.
    // IMPORTANT: if you face issues like the view appearing offset or mismatched
    // between the eyes, turn this optimization off by setting the value to 2.0
    "radius": 0.5,
    
    // if enabled, applies a negative LOD bias to texture MIP levels
    // should theoretically improve texture detail in the upscaled image
    // IMPORTANT: if you experience issues with rendering like disappearing
    // textures or strange patterns in the rendering, try turning this off
    // by setting the value to false.
    "applyMIPBias": true,
    
    // If enabled, will visualize the radius to which FSR/NIS is applied.
    // Will also periodically log the GPU cost for applying FSR/NIS in the
    // current configuration.
    "debugMode": false,
    
    "hotkeys": {
      // If enabled, you can change certain settings of the mod on the fly by
      // pressing certain hotkeys. Good to see the visual difference. But you
      // may want to turn off hotkeys during regular play to prevent them from
      // interfering with game hotkeys.
      "enabled": true,
    
      // if enabled, must also be holding CTRL key to use hotkeys
      "requireCtrl": false,
    
      // if enabled, must also be holding ALT key to use hotkeys
      "requireAlt": false,
    
      // if enabled, must also be holding SHIFT key to use hotkeys
      "requireShift": false,
    
      // Below, you can see what hotkey functions are available and also configure
      // the hotkey for it. To configure the hotkey, you need to use the corresponding
      // virtual key code, which you can look up on this page:
      // https://cherrytree.at/misc/vk.htm
    
      // switch between FSR and NIS (default key: F1 - 112)
      "toggleUseNIS": 112,
    
      // toggle debug mode on or off (default key: F2 - 113)
      "toggleDebugMode": 113,
    
      // decrease sharpness by 0.05 (default key: F3 - 114)
      "decreaseSharpness": 114,
    
      // increase sharpness by 0.05 (default key: F4 - 115)
      "increaseSharpness": 115,
    
      // decrease sharpening radius by 0.05 (default key: F5 - 116)
      "decreaseRadius": 116,
    
      // increase sharpening radius by 0.05 (default key: F6 - 117)
      "increaseRadius": 117,
    
      // take a screenshot of the final output sent to the HMD (default key: F7 - 118)
      "captureOutput": 118
    }
    

    } }

    opened by Eisi1964 0
  • openvr_mod.cfg 17.01.2022

    openvr_mod.cfg 17.01.2022

    Plugin Fehlermeldung! Was soll ich jetzt machen? Die Log-Datei ist nicht vorhanden. Es liegen auch 2 Dateien, aber mit unterschiedlichem Datum vor. Eine Datei vom 17.01.2022 und eine Datei vom 26.12.2021 vor. Ich weiß nicht warum.

    Danke für die Hilfe.

    Plugin error message! What should I do now? The log file does not exist. There are also 2 files, but with different date. A file from 17.01.2022 and a file from 26.12.2021 are present. I do not know why.

    Thanks for the help.


    image

    { "foveated": { // enable fixed foveated rendering "enabled": true,

    // if enabled, will attempt to use variable rate shading
    // NOTE: only works on NVIDIA RTX or GTX 16xx cards!
    "useVariableRateShading": true,
    
    "innerRadius": 0.6,
    "midRadius": 0.8,
    "outerRadius": 1.0,
    
    "sharpen": {
        // sharpen the image with NVIDIA's NIS sharpening
        "enabled": true,
    
        // tune sharpness, values range from 0 to 1
        "sharpness": 0.4,
        
        // Only apply sharpening to the given radius around the center of the image.
        // Saves a bit of performance.
        "radius": 0.75
    },
    
    // If enabled, will visualize the radius to which sharpening is applied.
    // Will also periodically log the GPU cost for image restore and sharpening in the
    // current configuration.
    "debugMode": false,
    
    "hotkeys": {
      // If enabled, you can change certain settings of the mod on the fly by
      // pressing certain hotkeys. Good to see the visual difference. But you
      // may want to turn off hotkeys during regular play to prevent them from
      // interfering with game hotkeys.
      "enabled": true,
    
      // if enabled, must also be holding CTRL key to use hotkeys
      "requireCtrl": false,
    
      // if enabled, must also be holding ALT key to use hotkeys
      "requireAlt": false,
    
      // if enabled, must also be holding SHIFT key to use hotkeys
      "requireShift": false,
    
      // Below, you can see what hotkey functions are available and also configure
      // the hotkey for it. To configure the hotkey, you need to use the corresponding
      // virtual key code, which you can look up on this page:
      // https://cherrytree.at/misc/vk.htm
    
      // toggle fixed foveated rendering on or off (default key: F1 - 112)
      "toggleFFR": 112,
    
      // toggle debug mode on or off (default key: F2 - 113)
      "toggleDebugMode": 113,
    
      // decrease sharpness by 0.05 (default key: F3 - 114)
      "decreaseSharpness": 114,
    
      // increase sharpness by 0.05 (default key: F4 - 115)
      "increaseSharpness": 115,
    
      // decrease currently selected radius by 0.05 (default key: F5 - 116)
      "decreaseRadius": 116,
    
      // increase currently selected radius by 0.05 (default key: F6 - 117)
      "increaseRadius": 117,
    
      // select the inner FFR radius for manipulation (default key: 1 - 49)
      "selectInnerRadius": 49,
    
      // select the middle FFR radius for manipulation (default key: 2 - 50)
      "selectMidRadius": 50,
    
      // select the outer FFR radius for manipulation (default key: 3 - 51)
      "selectOuterRadius": 51,
    
      // select the sharpening radius for manipulation (default key: 4 - 52)
      "selectSharpenRadius": 52,
    
      // take a screenshot of the final output sent to the HMD (default key: F7 - 118)
      "captureOutput": 118,
    
      // toggle between variable rate shading (VRS) and radial density masking (RDM)
      // (default key: F8 - 119)
      "toggleUseVRS": 119
    }
    

    } }

    opened by Eisi1964 0
  • Vr completely broken

    Vr completely broken

    whenever i use FSR on a game the up scaling and graphics work but i cant control my character or have it tracked i just float randomly in the air in front of the character with my head locked please help

    opened by KodeStart 0
  • Bonelabs compatibility?

    Bonelabs compatibility?

    I've tried to add the mod to Bonelabs, but I somehow can't find the "openvr_api.dll" file.

    Am I just blind or is there something different with Bonelabs?

    Thanks Guys!

    opened by MarvinF8ner 1
Releases(fsr_v2.1.1)
  • fsr_v2.1.1(Dec 27, 2021)

  • fsr_v2.1(Dec 26, 2021)

    Changelog:

    • add customizable hotkeys to adjust some of the mod's config parameters on the fly. For example, you can switch between FSR and NIS and also toggle debug mode on or off. Refer to the updated config file for available hotkeys and how to configure them.
    • add possibility to take a screenshot of the final output image that gets sent to the headset. Screenshot is stored as a .dds file right next to the DLL. You can open them with e.g. Paint.Net.
    • added some missing function exports in newer OpenVR versions. Might theoretically enable some additional games to run with the mod.
    Source code(tar.gz)
    Source code(zip)
    openvr_fsr_v2.1.zip(113.80 KB)
  • fsr_v2.0(Nov 17, 2021)

    This release adds NVIDIA's Image Scaling (NIS) as an alternative to AMD's FidelityFX SuperResolution (FSR). You can choose which algorithm you want to use by setting the new parameter useNIS in the config either to false (FSR, default) or true (NIS).

    Both algorithms work similarly and take a similar amount of time, but the output is sufficiently different that it's worth experimenting which one you like better for a particular game.

    Source code(tar.gz)
    Source code(zip)
    openvr_fsr_v2.0.zip(100.22 KB)
  • fsr_v1.3(Oct 30, 2021)

  • fsr_v1.2(Oct 24, 2021)

  • fsr_v1.1(Aug 11, 2021)

    Changelog:

    • Fixed projection center for the radius application of FSR. The radius where FSR is applied should now give proper stereo overlap on all headsets.
    • Added a debugMode option that, when enabled, visualizes the FSR radius and also periodically logs the GPU cost of the FSR application.
    • Be a bit more conservative when overriding sampler LOD bias. Might (or might not) prevent some rendering issues when applyMipBias is enabled.
    Source code(tar.gz)
    Source code(zip)
    openvr_fsr_v1.1.zip(89.11 KB)
  • fsr_v1.0(Jul 27, 2021)

  • fsr_rc2(Jul 17, 2021)

  • fsr_rc1(Jul 16, 2021)

    Changelog:

    • fix for IL2 and possibly other games
    • apply a negative LOD bias for texture MIP levels, as per AMD's recommendations. Might result in a bit more texture detail, hard to tell the difference, honestly
    • "fixed foveated" optimization: FSR is now only applied to a configurable radius from the image centre, any pixels outside the radius are upscaled by cheaper bilinear filter. Even with a fairly small radius, it is often hard to tell the difference due to the current HMD lenses. Feel free to experiment with it and gain a few additional usecs for your frametime budget :)
    Source code(tar.gz)
    Source code(zip)
    openvr_fsr_rc1.zip(86.79 KB)
  • fsr_alpha1.2(Jul 8, 2021)

  • fsr_alpha1.1(Jul 6, 2021)

  • fsr_alpha1(Jul 4, 2021)

Owner
Holger Frydrych
Holger Frydrych
This is a list of different open-source video games and commercial video games open-source remakes.

This is a list of different open-source video games and commercial video games open-source remakes.

Ivan Bobev 173 Jan 2, 2023
crwusiz branch is comma.ai devel-staging base xx979xx HKG_community source add

crwusiz openpilot crwusiz branch is comma.ai devel-staging base xx979xx HKG_community source add v0.8.9 [ allow white panda and gray panda, OP3T suppo

Lee Jong Mun 36 Dec 14, 2022
Open-source, cross-platform, C++ game engine for creating 2D/3D games.

GamePlay v3.0.0 GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games. Website Wiki API De

gameplay3d 3.9k Jan 8, 2023
A C math library targeted at games

Kazmath Kazmath is a simple 3D maths library written in C. It was initially coded for use in my book, Beginning OpenGL Game Programming - Second editi

Luke Benstead 506 Dec 31, 2022
3D games console based on RP2040 and iCE40 UP5k

PicoStation 3D This is an unfinished, untested project to develop a 3D games console based on an RP2040 microcontroller and an iCE40 UP5k FPGA. Quick

Luke Wren 37 Sep 12, 2022
A set of libraries and tools to make MSX games using the C programming language.

ubox MSX lib This is a set of libraries and tools to make MSX games using the C programming language. There are three main components: ubox: thin wrap

Juan J. Martínez 42 May 30, 2022
TIC-80 is a fantasy computer for making, playing and sharing tiny games.

TIC-80 is a fantasy computer for making, playing and sharing tiny games.

Vadim Grigoruk 3.8k Jan 4, 2023
Enfusion Artifical Intelligence for DayZ and future Bohemia Interactive games.

Enfusion AI Project (eAI) This mod adds headless player units under the control of a script on the server. Although the script is very rudimentary now

William Bowers 61 Nov 26, 2022
Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.

Game engine behind Sea Dogs, Pirates of the Caribbean and Age of Pirates games.

Storm Devs 693 Dec 29, 2022
null 5.2k Jan 7, 2023
Cute Framework (CF for short) is the cutest framework available for making 2D games in C/C++

Cute Framework (CF for short) is the cutest framework available for making 2D games in C/C++. CF comprises of different features, where the various features avoid inter-dependencies. In this way using CF is about picking and choosing which pieces are needed for your game

null 314 Dec 26, 2022
Modding (hacking) il2cpp games by classes, methods, fields names.

ByNameModding Modding (hacking) il2cpp games by classes, methods, fields names. Status: Ready to use Why did I do it 1. In order not to update the off

null 97 Jan 2, 2023
OGRE is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce games and demos utilising 3D hardware.

OGRE (Object-Oriented Graphics Rendering Engine) is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce games and demos utilising 3D hardware. The class library abstracts all the details of using the underlying system libraries like Direct3D and OpenGL and provides an interface based on world objects and other intuitive classes.

null 3.1k Jan 3, 2023
Insomniac games cache simulation tool plugin for UE4

Insomniac Games CacheSim plugin for UE4 This plugin for Unreal Engine 4 lets you use the Insomniac Games Cache Simulation tool to detect cache misses

Toni Rebollo Berná 29 Aug 27, 2022
Bounce is a 3D physics engine for games.

Bounce Welcome! Bounce is a 3D physics engine for games. Features Common Efficient data structures with no use of STL Fast memory allocators Built-in

Irlan Robson 72 Aug 3, 2022
Project DELTA - An open-source trainer built on the Void Engine for Toby Fox's games and their spin-offs.

Project DELTA v3 Project DELTA - An open-source, modular mod menu for Toby Fox's games and their spin-offs. Important note to Grossley: Yes, it is out

Archie 8 Oct 15, 2022
Speedrun plugin for Source engine games.

Features Automatic demo recording Accurate session timing Speedrun timer with complex custom rule system Tools for segmented and tool-assisted speedru

Portal 2 Speedrunning 65 Jan 6, 2023
A single-header C++ library for making simple 2D games

A single-header C++ library for making simple 2D games PLATFORM: Windows LANGUAGE: C++ ENVIRONMENT: Visual Studio Why? Learning C++ is often seen as d

Sumo Digital Academy 63 Dec 22, 2022
Stream Raspberry Pi games to the GBA via the Link Cable

gba-remote-play video-only.mp4 This software streams games from a Raspberry Pi to a Game Boy Advance, through its Link Port. Video and audio are compr

Rodrigo Alfonso 360 Dec 20, 2022