OptiScaler is drop-in DLSS2 to XeSS/FSR2/FSR3/DLSS replacement for games.
Official Discord Server: DLSS2FSR
Do not use this mod with online games, it might trigger anti-cheat software and cause bans!
This project is based on PotatoOfDoom's excellent CyberFSR2.
With DLSS 3.7 Nvidia disabled signature check override, this means nvngx.dll
or _nvngx.dll
must be signed by Nvidia. For this override I use a method developed by Artur (developer of DLSS Enabler).
This method increases the compatibility of OverlayMenu
, allows OptiScaler to spoof DXGI and Vulkan and overriding nvapi64.dll
. In short this installation method allows OptiScaler to work with all it's features.
Step-by-step installation (Nvidia users please use step 3 only):
- We need an Nvidia signed dll file to bypass signature checks. All games that support DLSS come with
nvngx_dlss.dll
. Most of the time it's in the games exe folder. Some games and engines keep these third party dll's in different folders (likeplugins
). So we need to find thenvngx_dlss.dll
file and copy it to the games exe folder. If it's already in the games exe folder, make a copy of it. - Rename the copy of
nvngx_dlss.dll
in the games exe folder tonvngx.dll
. - Rename OptiScaler's
nvngx.dll
to one of the supported filenames (I preferdxgi.dll
, it also eliminates the need for the d3d12-proxy) and copy it to the games exe folder [1]. - If your GPU is not an Nvidia one, check here for spoofing options.
- dxgi.dll (with Nvidia GPU spoofing for non-Nvidia cards)
- winmm.dll
- version.dll
- wininet.dll
- winhttp.dll
- OptiScaler.asi (with an ASI loader)
[1] Linux users should add renamed dll to overrides:
WINEDLLOVERRIDES=dxgi=n,b %COMMAND%
If there is another mod (e.g. Reshade etc.) that uses the same filename (e.g. dxgi.dll
), if you rename it with the -original
suffix (e.g. dxgi-original.dll
), OptiScaler will load this file instead of the original library.
Alternatively you can create a new folder called plugins
and put other mods 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.
Please don't rename the ini file, it should stay as nvngx.ini
.
Step-by-step installation (Nvidia users, please skip step 4):
- Download the latest relase from releases.
- Extract the contents of the archive next to the game executable file in your games folder. [1]
- Run
EnableSignatureOverride.reg
fromDlssOverrides
folder and confirm merge. [2][3] - If your GPU is not an Nvidia one, check here for spoofing options.
[1] This package contains latest version of libxess.dll
and if game folder contains any older version of same library it would be overwritten. Consider backing up or renaming existing file.
[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.
Most games have checks for enabling DLSS options. To enable DLSS options in these games there are several methods which explained here
- Delete/rename
dlss-enabler-upscaler.dll
in game folder - Copy
nvngx.dll
file from OptiScaler 7zip file to game folder - Rename
nvngx.dll
todlss-enabler-upscaler.dll
- Run
DisableSignatureOverride.reg
file - Delete
EnableSignatureOverride.reg
,DisableSignatureOverride.reg
,nvngx.dll
,nvngx.ini
files - If there were a
libxess.dll
file and you have backed it up delete the new file and restore the backed up file. If you have overwrote old file DO NOT deletelibxess.dll
file. If there were nolibxess.dll
file it's safe to delete.
OptiScaler implements all necessary API methods of DLSS2 & NVAPI to act as a man in the middle. So from games perspective it's using DLSS2 but actually using OptiScaler and calls are interpreted/redirected to XeSS & FSR2 or DLSS with OptiScaler's tweaks and enchancements.
- Supports multiple upscaling backends (XeSS, FSR 2.1.2, FSR 2.2.1, FSR 3.1 and DLSS)
- Supports DLSS 3.7 and above (check installation instructions)
- Supports DLSS-D (Ray Reconstruction) on Nvidia cards (Supports changing presets and using OptiScaler enchanchements)
- Ability to modify DLSS/DLSS-D presets on the fly
- Supports XeSS v1.3.x's Ultra Performance, NativeAA modes (Not using XeSS 1.3.x scaling ratios)
- An in-game menu for tuning and saving settings on the fly (Shortcut key is INSERT)
- Full integration with DLSS Enabler for DLSS-FG support
- RCAS support with MAS (Motion Adaptive Sharpening) for all Dx12 & Dx11withDx12 upscalers
- Output Scaling option (0.5x to 3.0x) for backends running on Dx12 & Dx11withDx12
- Supports DXGI spoofing (when running as
dxgi.dll
) as Nvidia GPUs (with XeSS detection to enable XMX on Intel Arc cards) - Supports Vulkan spoofing (needs to be enabled from
nvngi.ini
) as Nvidia GPUs (not working for Doom Eternal) - Supports loading specific
nvapi64.dll
file (when running in non-nvngx mode) - Supports loading specific
nvngx_dlss.dll
file (when running in non-nvngx mode) - Supports overriding scaling ratios
- Supports overriding DRS range
- Autofixes for colored lights on Unreal Engine & AMD graphics cards
- Autofixes for missing exposure texture information
- Ability to modify Mipmap Lod Bias value of game
Please check this document for configuration parameters and explanations. (Will be updated)
Please check this document for known issues and possible solutions for them.
Currently OptiScaler can be used with DirectX 11, DirectX 12 and Vulkan but each API has different sets of upscaler options.
- XeSS 1.x.x (Default upscaler)
- FSR2 2.1.2
- FSR2 2.2.1
- FSR3 3.1.0 & FSR2 2.3.2
- DLSS
- FSR2 2.2.1 native DirectX11 implementation (Default upscaler)
- XeSS 1.x.x with background DirectX12 processing [*]
- FSR2 2.1.2 with background DirectX12 processing [*]
- FSR2 2.2.1 with background DirectX12 processing [*]
- FSR3 3.1.0 & FSR2 2.3.2 with background DirectX12 processing [*]
- DLSS native DirectX11 implementation
[*] This implementations uses a background DirectX12 device to be able to use Dirext12 only upscalers. There is %10-15 performance penalty for this method but allows much more upscaler options. Also native DirectX11 implementation of FSR 2.2.1 is a backport from Unity renderer and has it's own problems which some of them avoided by OptiScaler. These implementations does not support Linux and will result black screen.
- FSR2 2.1.2 (Default upscaler)
- FSR2 2.2.1
- FSR3 3.1.0 & FSR2 2.3.2
- DLSS
- 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 to implement NVAPI correctly
- @LukeFZ & @Nukem for their great mods and sharing their knowledge
- @FakeMichau for support, testing and feature creep
- @QM for continous testing efforts and helping me to reach games
- @Cryio, @krispy, @krisshietala, @Lordubuntu, @scz, @Veeqo for their hard work on compatibility matrix
- @RazzerBrazzer and DLSS2FSR community for all their support