OptiScaler is middleware that enables various upscaling technologies in DLSS2-only games. It allows non-Nvidia users to use upscaling by applying DLSS2 inputs to XeSS, FSR2, or FSR3. It also offers extensive customization options for all users, including those with Nvidia GPUs using DLSS.
Key aspects of OptiScaler:
This project is based on PotatoOfDoom's excellent CyberFSR2.
Warning: Do not use this mod with online games. It may trigger anti-cheat software and cause bans!
non-nvngx
To overcome DLSS 3.7's signature check requirements, I implemented a method developed by Artur (creator of DLSS Enabler). Later, this method increased the compatibility of OverlayMenu
, allowed OptiScaler to spoof DXGI and Vulkan, let users override the nvapi64.dll
and even let users to force Anitsotropic Filtering and Mipmap Lod Bias. In short, this installation method allowed OptiScaler to provide more features to users.
Step-by-step installation (Nvidia users please skip to step 3):
nvngx_dlss.dll
. Most of the time it's in the games exe folder (e.g. for Unreal Engine games it's <path-to-game>\Binaries\Win64\
). Some games and engines keep these third party dll's in different folders (like plugins
). So we need to find the nvngx_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. nvngx_dlss.dll
in the games exe folder to nvngx.dll
.nvngx.dll
to one of the supported filenames (I prefer dxgi.dll
) [1].[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
.
nvngx.dll
Step-by-step installation:
<path-to-game>\Binaries\Win64\
) [1]EnableSignatureOverride.reg
from DlssOverrides
folder and confirm merge. [2][3][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:
Import Registry File
-> navigate to and select EnableSignatureOverride.reg
If your game is not on Steam, it all boils down to opening regedit inside your game's prefix and importing the file.
dlss-enabler-upscaler.dll
in game foldernvngx.dll
file from OptiScaler 7zip file to a temp foldernvngx.dll
to dlss-enabler-upscaler.dll
dlss-enabler-upscaler.dll
from temp folder to the game folderDisableSignatureOverride.reg
file EnableSignatureOverride.reg
, DisableSignatureOverride.reg
, nvngx.dll
, nvngx.ini
fileslibxess.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 delete libxess.dll
file. If there were no libxess.dll
file it's safe to delete.OptiScaler implements the necessary API methods of DLSS2 & NVAPI to act as a middleware. It interprets calls from the game and redirects them to the chosen upscaling backend, allowing games designed for one technology to use another.
dxgi.dll
) as Nvidia GPUs (with XeSS detection to enable XMX on Intel Arc cards)nvngi.ini
) as Nvidia GPUs (not working for Doom Eternal)nvapi64.dll
file (when running in non-nvngx mode)nvngx_dlss.dll
file (when running in non-nvngx mode)Please check this document for configuration parameters and explanations. (Will be updated)
If you can't open in-game menu:
Please check this document for rest of the 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.
[*] 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.