1. About
2. How it works?
3. Supported APIs and Upscalers
4. Installation
5. Known Issues
6. Compilation and Credits
7. Wiki
OptiScaler is a tool that lets you replace upscalers in games that already support DLSS2+ / FSR2+ / XeSS, now also supports enabling frame generation (through OptiFG or Nukem's dlssg-to-fsr3).
While previously only DLSS2+ inputs were supported, newer versions also added support for XeSS and FSR2+ inputs (with some caveats
Key aspects of OptiScaler:
- Enables usage of XeSS, FSR2, FSR3, FSR4
$^2$ and DLSS in upscaler-enabled games - Allows users to fine-tune their upscaling experience with a wide range of tweaks and enhancements (RCAS & MAS, Output Scaling, DLSS Presets, Ratio & DRS Overrides etc.)
- Since v0.7.0+, added experimental frame generation support with possible HUDfix solution (OptiFG by FSR3)
- Supports Fakenvapi integration - enables Reflex hooking and injecting Anti-Lag 2 (RDNA1+ only) or LatencyFlex (LFX) - not bundled
$^3$ - Since v0.7.7, support for Nukem's FSR FG mod dlssg-to-fsr3 has also been added - not bundled
$^3$ - For a detailed list of all features, check Features
Important
Always check the Wiki Compatibility list for known game issues and workarounds.
Also please check the Optiscaler known issues at the end regarding RTSS compatibility
Note
Expand for [1], [2] and [3]
[1] Regarding XeSS, since Unreal Engine plugin does not provide depth, replacing in-game XeSS breaks other upscalers, but you can still apply RCAS sharpening to XeSS to reduce blurry visuals (in short, if it's a UE game, in-game XeSS only works with XeSS in OptiScaler overlay).
Regarding FSR inputs, FSR 3.1 is the first version with a fully standardised, forward-looking API and should be fully supported. Since FSR2 and FSR3 support custom interfaces, game support will depend on the developers' implementation. With Unreal Engine games, you might need ini tweaks for FSR inputs.
[2] Regarding FSR4, support added with recent Nightly builds. Please check FSR4 Compatibility list for known supported games.
[3] For not bundled items, please check Installation
Official Discord Server: DLSS2FSR
This project is based on PotatoOfDoom's excellent CyberFSR2.
OptiScaler implements the necessary API methods of DLSS2+ & NVAPI, XeSS and FSR2+ to act as a middleware. It interprets calls from the game and redirects them to the chosen upscaling backend, allowing games using one technology to use another one of your choice.
Note
Pressing Insert
should open the Optiscaler Overlay in-game and expose all of the options (shortcut key can be changed in the config file).
Currently OptiScaler can be used with DirectX 11, DirectX 12 and Vulkan, but each API has different sets of upscaler options.
OptiFG currently only supports DX12 and is explained in a separate paragraph.
- XeSS (Default)
- FSR2 2.1.2, 2.2.1
- FSR3 3.1 (and FSR2 2.3.2)
- DLSS
- FSR4 (Preliminary support)
- FSR2 2.2.1 (Default, native DX11)
- FSR3 3.1.2 (unofficial port to native DX11)
- XeSS 1.x.x, FSR2 2.1.2, 2.2.1, FSR3 3.1 & FSR2 2.3.2 (via background DX12 processing)
$^1$ - DLSS (native DX11)
- XeSS 2.x (soon™, but Intel ARC only)
Note
Expand for [1]
[1] These implementations use a background DirectX12 device to be able to use Dirext12-only upscalers. There is a 10-15% performance penalty for this method, but allows many more upscaler options. Also native DirectX11 implementation of FSR 2.2.1 is a backport from Unity renderer and has its own problems of which some were fixed by OptiScaler. These implementations do not support Linux and will result in a black screen.
- FSR2 2.1.2 (Default), 2.2.1
- FSR3 3.1 (and FSR2 2.3.2)
- DLSS
- XeSS 2.x (soon™)
OptiFG was added with v0.7 and is only supported in DX12. It's enabled by default with the FGType=auto
setting in Optiscaler.ini.
It's an experimental way of adding FSR3 FG to games without native Frame Generation, or can also be used as a last case scenario if the native FG is not working properly.
Since FSR3 FG doesn't support HUD interpolation, it requires a HUDless resource to avoid HUD ghosting/garbling. In games without native FG, Optiscaler tries finding the HUDless resource when the user enables HUDfix. Depending on how the game draws its UI/HUD, Optiscaler may or may not be successful in finding it. There are several options for tuning the search.
A more detailed guide will be available in the Wiki, along with a list of HUDfix incompatible games.
Caution
Warning: Do not use this mod with online games. It may trigger anti-cheat software and cause bans!
Important
Please use the Nightly builds as the latest Stable is vastly outdated and the Readme does not apply to it anymore due to many missing features.
Fair warning, Nightly builds have Debug logging forced by default due to being bleeding-edge. If everything is working fine, then you can save storage space by disabling it by leaving LogFile=
blank.
1. Extract all of the Optiscaler files by the main game exe (for Unreal Engine games, that's usually the win_shipping.exe in one of the subfolders, generally <path-to-game>\Game-or-Project-name\Binaries\Win64\
, ignore the Engine
folder)
2. Try the OptiScaler Setup.bat
script for automating the renaming process.
3. If the Bat file wasn't successful, please check the Manual steps.
Step-by-step installation:
1. Extract all Optiscaler files from the zip by the main game exe (for Unreal Engine games, that's usually the win_shipping.exe in one of the subfolders, generally <path-to-game>\Game-or-Project-name\Binaries\Win64\
, ignore the Engine
folder).
2. Rename OptiScaler's OptiScaler.dll
(for old versions, it's nvngx.dll
) to one of the supported filenames (preferred dxgi.dll
, but depends on the game)
Note
For FSR2/3-only games that don't have DLSS (e.g. The Callisto Protocol or The Outer Worlds: Spacer's Choice Edition), you have to provide the nvngx_dlss.dll
in order to use DLSS in Optiscaler - download link e.g. TechPowerUp or Streamline SDK repo
Step-by-step installation:
1. Extract all Optiscaler files from the zip by the main game exe (for Unreal Engine games, that's usually the win_shipping.exe in one of the subfolders, generally <path-to-game>\Game-or-Project-name\Binaries\Win64\
, ignore the Engine
folder)
2. Rename OptiScaler's OptiScaler.dll
(for old versions, it's nvngx.dll
) to one of the supported filenames (preferred dxgi.dll
, but depends on the game)
3a. Either locate the nvngx_dlss.dll
file (for UE games, generally in one of the subfolders under Engine/Plugins
), create a copy, rename the copy to nvngx.dll
and put it beside Optiscaler
3b. OR download nvngx_dlss.dll
from e.g. TechPowerUp or Streamline SDK repo if you don't want to search, rename it to nvngx.dll
and put it beside Optiscaler
Check the screenshot for proper installation
1. Download the mod's regular version - dlssg-to-fsr3 NexusMods or dlssg-to-fsr3 Github
2. Put the dlssg_to_fsr3_amd_is_better.dll
in the same folder as Optiscaler (by the main game exe) and set FGType=nukems
in Optiscaler.ini
3. For AMD/Intel GPUs, Fakenvapi is also required when using Nukem mod in order to successfully expose DLSS FG in-game.
0. Do not use with Nvidia, only required for AMD/Intel
1. Download the mod - Fakenvapi
2. Extract the files and transfer nvapi64.dll
and fakenvapi.ini
to the same folder as Optiscaler (by the main game exe)
Anti-Lag 2 only supports RDNA cards and is Windows only atm (shortcut for cycling the overlay - Alt+Shift+L
). For information on how to verify if Anti-Lag 2 is working, please check Anti-Lag 2 SDK. Latency Flex is cross-vendor and cross-platform, can be used as an alternative if AL2 isn't working.
Tip
[1] Linux users should add renamed dll to overrides:
WINEDLLOVERRIDES=dxgi=n,b %COMMAND%
Important
Please don't rename the ini file, it should stay as OptiScaler.ini
.
Note
- dxgi.dll
- winmm.dll
- dbghelp.dll (nightly only)
- version.dll
- wininet.dll
- winhttp.dll
- OptiScaler.asi (with an ASI loader)
Note
If there is another mod (e.g. Reshade etc.) that uses the same filename (e.g. dxgi.dll
), you can create a new folder called plugins
and put other mod files in this folder. OptiScaler will check this folder and if it finds the same dll file (for example dxgi.dll
), it will load this file instead of the original library.
Legacy
Step-by-step installation:
- Download the latest relase from releases.
- Extract the contents of the archive next to the game executable file in your games folder. (e.g. for Unreal Engine games, it's
<path-to-game>\Game-or-Project-name\Binaries\Win64\
)$^1$ - Rename
OptiScaler.dll
tonvngx.dll
(For older builds, file name is alreadynvngx.dll
, so skip this step) - Run
EnableSignatureOverride.reg
fromDlssOverrides
folder and confirm merge.$^2$ $^3$
[1] This package contains latest version of libxess.dll
and if the game folder contains any older version of the same library, it will be overwritten. Consider backing up or renaming existing files.
[2] Normally Streamline and games check if nvngx.dll is signed, by merging this .reg
file we are overriding this signature check.
[3] Adding signature override on Linux - There are many possible setups, this one will focus on Steam games:
- Make sure you have protontricks installed
- Run in a terminal protontricks regedit, replace with an id for your game
- Press "registry" in the top left of the new window ->
Import Registry File
-> navigate to and selectEnableSignatureOverride.reg
- You should see a message saying that you successfully added the entries to the registry
If your game is not on Steam, it all boils down to opening regedit inside your game's prefix and importing the file.
- Delete/rename
dlss-enabler-upscaler.dll
in game folder - Extract
OptiScaler.dll
(for old versions, it'snvngx.dll
) file from OptiScaler 7zip file to a temp folder - Rename
OptiScaler.dll
(for old versions, it'snvngx.dll
) todlss-enabler-upscaler.dll
- Copy
dlss-enabler-upscaler.dll
from temp folder to the game folder
- Run
DisableSignatureOverride.reg
file - Delete
EnableSignatureOverride.reg
,DisableSignatureOverride.reg
,OptiScaler.dll
(for old versions, it'snvngx.dll
),OptiScaler.ini
files (if you used Fakenvapi and/or Nukem mod, then also deletefakenvapi.ini
,nvapi64.dll
anddlssg_to_fsr3
files) - If there was a
libxess.dll
file and you have backed it up, delete the new file and restore the backed up file. If you overwrote/replaced the old file, DO NOT deletelibxess.dll
file. If there was nolibxess.dll
before, it's safe to delete. Same goes for FSR files (amd_fidelityfx
).
Please check this document for configuration parameters and explanations. If your GPU is not an Nvidia one, check GPU spoofing options (Will be updated)
If you can't open the in-game menu overlay:
- Please check that you have enabled DLSS, XeSS or FSR from game options
- If using legacy installation, please try opening menu while you are in-game (while 3D rendering is happening)
- If you are using RTSS (MSI Afterburner, CapFrameX), please enable this setting in RTSS and/or try updating RTSS. When using OptiFG please disable RTSS for best compatibility
Please check this document for the rest of the known issues and possible solutions for them. Also check the community Wiki for possible game issues and HUDfix incompatible games.
- Visual Studio 2022
- Clone this repo with all of its submodules.
- Open the OptiScaler.sln with Visual Studio 2022.
- Build the project
- @PotatoOfDoom for CyberFSR2
- @Artur for DLSS Enabler and helping me implement NVNGX api correctly
- @LukeFZ & @Nukem for their great mods and sharing their knowledge
- @FakeMichau for continous support, testing and feature creep
- @QM for continous testing efforts and helping me to reach games
- @TheRazerMD for continous testing and support
- @Cryio, @krispy, @krisshietala, @Lordubuntu, @scz, @Veeqo for their hard work on compatibility matrix
- And the whole DLSS2FSR community for all their support