DLSSTweaks

Tweak DLL for NVIDIA DLSS, force DLAA on DLSS-supported titles, tweak scaling ratios & DLSS 3.1 presets, override DLSS versions without overwriting game files.

MIT License

Stars
1.2K
DLSSTweaks - DLSSTweaks 0.200.8.2 Latest Release

Published by emoose about 1 year ago

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking scaling ratios & DLSS 3.1 presets.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1+ is required for DLSSPresets overrides to be applied, but DLAA forcing / scaling ratio tweaks should work fine across 2.x versions too - DLSS framegen is unaffected by this DLL.

This has been tested with Nvidia driver series 528 & 53x - earlier driver versions may have issues, recommend updating if DLSSTweaks doesn't seem to apply to any games for you.

If the tweaks helped improve your experience consider buying a coffee to support future development & help to obtain more games to test with. Thank you!


Ray Reconstruction note: DLSSTweaks versions 0.200.8 onward appear to work fine with RR without issues, the scaling ratios can still be adjusted & OverrideDlssHud setting can show you the Ray Reconstruction HUD overlay, though if you do have any problems with it please feel free to let me know.

DLSSTweaks allows two different ways to setup the wrapper, which should help let it work across different system configs:

nvngx.dll

The easiest way to install is via nvngx.dll wrapping, this should work fine for the majority of games without needing to rename any files first.

However this method requires a small registry tweak to be applied first to stop DLSS from checking the nvngx.dll signature.

The included EnableNvidiaSigOverride.reg can install this tweak for you, the DLSSTweaksConfig.exe tool can also be used to install/remove this registry tweak.

After setting up the registry tweak you should be able to just copy the nvngx.dll & dlsstweaks.ini files next to your game EXE, and it should hopefully load into the game fine.

(this is the same registry tweak used by CyberFSR2 to load in their custom nvngx.dll, haven't seen any reports of issues caused by it, but if you play games that use anti-cheat software you may want to use the method below, instead of installing this global registry tweak)

dxgi.dll/etc

Alternatively if you don't wish to use the registry tweak, the older methods of loading in via dxgi.dll etc wrapping are also still supported.
(this older method requires more code hooks to be applied though, which may have issues on certain systems, the nvngx.dll method is believed to be more compatible)

You can switch to these wrappers by renaming the included nvngx.dll file to one of the supported filenames, the dlsstweaks.ini includes a list of filenames you can try.


If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

Note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first - the included INI explains each of the available tweaks, along with alternate filenames you can rename the DLSSTweaks DLL to.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.


Changes since 0.200.6

  • (0.200.8.2) DLSS: fixed incomplete Vulkan-related function hooks, VK games such as hl1rt should now run fine again
  • (0.200.8.2) INI: added BaseINI setting to INI, this tells DLSSTweaks to read from the specified INI before reading the rest of the settings in the current INI, allowing it to act as a sort of "global config" (eg. you could setup a single DLSSTweaks INI in a central location, then edit your individual game INIs to point at it via BaseINI, and then any changes to the central INI will automatically take effect, as long as they aren't set inside the game INI itself)
  • DLSS: hooked DLSS code which would pick the preset based on the current resolution ratio, so it can check against our tweaked ratios instead
  • DLSS: added support for 3.1.30 & 3.5
  • DLSS: added hook to allow DLSSD (Ray Reconstruction) HUD overlay to be toggled, OverrideDlssHud should now apply to it fine
  • DLSS: will now update the dynamic resolution params used by DLSS, fixes certain games that would use those params instead of the normal width/height we returned
  • DLSSPresets: added support for preset G (currently unused)
  • Wrapper: added missing _nvngx.dll exports, should now allow nvngx.dll wrapper to work with RR/DLSSD
  • ConfigTool: added NvGlobalProfileSettings section to adjust the new DLSS NvProfile settings added in DLSS 3.1.11+
  • ConfigTool: added VideoSuperResolution setting under NvGlobalProfileSettings
  • ConfigTool: allow tool to be ran seperately from DLSSTweaks.ini itself, can be used to configure the NvProfile settings above
  • ConfigTool: allow NvGlobalProfileSettings to be changed via command-line switches, the name displayed in ConfigTool matches the cmd-line parameter to use, eg. DLSSTweaksConfig.exe -GlobalForcedScale 0.77 will set the GlobalForcedScale NvProfile setting to 0.77, multiple options can be used at once
  • ConfigTool: for ratio-related settings, added a tooltip which will show estimate of the resolution for that ratio based on desktop res (likewise, entering a resolution instead of ratio will display estimated ratio too)
  • ConfigTool: added button to copy install to another folder (copies current DLSSTweaks DLL & INI over)
  • ConfigTool: included default INI inside ConfigTool itself, to fetch setting descriptions from
  • ConfigTool: added context-menu settings for DLLPathOverrides section, can now rename/delete overrides from there
  • ConfigTool: added option for setting the NV signature override from the tool itself (will prompt for admin permissions when changing)
  • ConfigTool: if we detect that our DLL filename is "nvngx.dll", check if the NV override is set & offer to set it up if not
  • ConfigTool: if we detect multiple DLSSTweaks DLL files are being used, show a warning about it and allow removing any extras
  • ConfigTool: if INI file can't be written, try relaunching as admin (will prompt if necessary)
  • ConfigTool: allow "Copy install" to scan game EXE/DLLs for possible DLL wrapper filenames to use & ask user which they'd like
  • ConfigTool: improved mouseover / hover detection when displaying setting descriptions
  • ConfigTool: fixed NV signature override code to set both registry keys that NVNGX might check

Game Compatibility

A list of games tested against DLSSTweaks can be found here: https://github.com/emoose/DLSSTweaks/wiki/Games

If you try out any game that isn't mentioned there please let us know how it went on the issue tracker!

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!


Verification

Hashes for verification:

nvngx.dll
  • MD5: 64195197F1AE8C52C7D1260AF79864F6
  • SHA-1: 5FD2221005218D6877D9B1EEDBFA9405145B29B3
  • SHA-256: 8BC53A6A7043AB25745546D4D56668600952E0440323BA6E1B87E6759BA1B120
DLSSTweaksConfig.exe
  • MD5: EF0DFEF1EE7E46CC7AF6B8049CAF5E20
  • SHA-1: 2116457445A1A55FCF49B6D195BB7A0FB2AFB7B4
  • SHA-256: 15CBCBDA36E45A008F2D13CB4646B5975CED9B1B5ECA83FD333377AE40518872

The files are signed too, but unfortunately only with a self-signed certificate, which would be easy for others to impersonate... more info about that at https://github.com/emoose/DLSSTweaks/wiki/DLL-Signature

(if someone with a proper code-signing cert is able to help sign DLLs for me it'd be extremely appreciated, please email me at abc (at) cock (dot) li)


Binaries / DLL file can be found on NexusMods: https://www.nexusmods.com/site/mods/550?tab=files

The files listed below are just source code for the DLL, the DLL itself for use with games can be found in the link above.

DLSSTweaks - DLSSTweaks 0.200.8.1

Published by emoose about 1 year ago

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking scaling ratios & DLSS 3.1 presets.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1+ is required for DLSSPresets overrides to be applied, but DLAA forcing / scaling ratio tweaks should work fine across 2.x versions too - DLSS framegen is unaffected by this DLL.

This has been tested with Nvidia driver series 528 & 53x - earlier driver versions may have issues, recommend updating if DLSSTweaks doesn't seem to apply to any games for you.

If the tweaks helped improve your experience consider buying a coffee to support future development & help to obtain more games to test with. Thank you!


Ray Reconstruction note: DLSSTweaks versions 0.200.8 onward appear to work fine with RR without issues, the scaling ratios can still be adjusted & OverrideDlssHud setting can show you the Ray Reconstruction HUD overlay, though if you do have any problems with it please feel free to let me know.

DLSSTweaks allows two different ways to setup the wrapper, which should help let it work across different system configs:

nvngx.dll

The easiest way to install is via nvngx.dll wrapping, this should work fine for the majority of games without needing to rename any files first.

However this method requires a small registry tweak to be applied first to stop DLSS from checking the nvngx.dll signature.

The included EnableNvidiaSigOverride.reg can install this tweak for you, the DLSSTweaksConfig.exe tool can also be used to install/remove this registry tweak.

After setting up the registry tweak you should be able to just copy the nvngx.dll & dlsstweaks.ini files next to your game EXE, and it should hopefully load into the game fine.

(this is the same registry tweak used by CyberFSR2 to load in their custom nvngx.dll, haven't seen any reports of issues caused by it, but if you play games that use anti-cheat software you may want to use the method below, instead of installing this global registry tweak)

dxgi.dll/etc

Alternatively if you don't wish to use the registry tweak, the older methods of loading in via dxgi.dll etc wrapping are also still supported.
(this older method requires more code hooks to be applied though, which may have issues on certain systems, the nvngx.dll method is believed to be more compatible)

You can switch to these wrappers by renaming the included nvngx.dll file to one of the supported filenames, the dlsstweaks.ini includes a list of filenames you can try.


If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

Note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first - the included INI explains each of the available tweaks, along with alternate filenames you can rename the DLSSTweaks DLL to.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.


Changes since 0.200.6

  • DLSS: hooked DLSS code which would pick the preset based on the current resolution ratio, so it can check against our tweaked ratios instead
  • DLSS: added support for 3.1.30 & 3.5
  • DLSS: added hook to allow DLSSD (Ray Reconstruction) HUD overlay to be toggled, OverrideDlssHud should now apply to it fine
  • DLSS: will now update the dynamic resolution params used by DLSS, fixes certain games that would use those params instead of the normal width/height we returned
  • DLSSPresets: added support for preset G (currently unused)
  • Wrapper: added missing _nvngx.dll exports, should now allow nvngx.dll wrapper to work with RR/DLSSD
  • ConfigTool: added NvGlobalProfileSettings section to adjust the new DLSS NvProfile settings added in DLSS 3.1.11+
  • ConfigTool: added VideoSuperResolution setting under NvGlobalProfileSettings
  • ConfigTool: allow tool to be ran seperately from DLSSTweaks.ini itself, can be used to configure the NvProfile settings above
  • ConfigTool: allow NvGlobalProfileSettings to be changed via command-line switches, the name displayed in ConfigTool matches the cmd-line parameter to use, eg. DLSSTweaksConfig.exe -GlobalForcedScale 0.77 will set the GlobalForcedScale NvProfile setting to 0.77, multiple options can be used at once
  • ConfigTool: for ratio-related settings, added a tooltip which will show estimate of the resolution for that ratio based on desktop res (likewise, entering a resolution instead of ratio will display estimated ratio too)
  • ConfigTool: added button to copy install to another folder (copies current DLSSTweaks DLL & INI over)
  • ConfigTool: included default INI inside ConfigTool itself, to fetch setting descriptions from
  • ConfigTool: added context-menu settings for DLLPathOverrides section, can now rename/delete overrides from there
  • ConfigTool: added option for setting the NV signature override from the tool itself (will prompt for admin permissions when changing)
  • ConfigTool: if we detect that our DLL filename is "nvngx.dll", check if the NV override is set & offer to set it up if not
  • ConfigTool: if we detect multiple DLSSTweaks DLL files are being used, show a warning about it and allow removing any extras
  • ConfigTool: if INI file can't be written, try relaunching as admin (will prompt if necessary)
  • ConfigTool: allow "Copy install" to scan game EXE/DLLs for possible DLL wrapper filenames to use & ask user which they'd like
  • ConfigTool: improved mouseover / hover detection when displaying setting descriptions
  • ConfigTool: fixed NV signature override code to set both registry keys that NVNGX might check

Game Compatibility

A list of games tested against DLSSTweaks can be found here: https://github.com/emoose/DLSSTweaks/wiki/Games

If you try out any game that isn't mentioned there please let us know how it went on the issue tracker!

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!


Verification

Hashes for verification:

nvngx.dll
  • MD5: 64195197F1AE8C52C7D1260AF79864F6
  • SHA-1: 5FD2221005218D6877D9B1EEDBFA9405145B29B3
  • SHA-256: 8BC53A6A7043AB25745546D4D56668600952E0440323BA6E1B87E6759BA1B120
DLSSTweaksConfig.exe
  • MD5: EF0DFEF1EE7E46CC7AF6B8049CAF5E20
  • SHA-1: 2116457445A1A55FCF49B6D195BB7A0FB2AFB7B4
  • SHA-256: 15CBCBDA36E45A008F2D13CB4646B5975CED9B1B5ECA83FD333377AE40518872

The files are signed too, but unfortunately only with a self-signed certificate, which would be easy for others to impersonate... more info about that at https://github.com/emoose/DLSSTweaks/wiki/DLL-Signature

(if someone with a proper code-signing cert is able to help sign DLLs for me it'd be extremely appreciated, please email me at abc (at) cock (dot) li)


Binaries / DLL file can be found on NexusMods: https://www.nexusmods.com/site/mods/550?tab=files

The files listed below are just source code for the DLL, the DLL itself for use with games can be found in the link above.

DLSSTweaks - DLSSTweaks 0.200.6

Published by emoose over 1 year ago

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking scaling ratios & DLSS 3.1 presets.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1+ is required for DLSSPresets overrides to be applied, but DLAA forcing / scaling ratio tweaks should work fine across 2.x versions too - DLSS framegen is unaffected by this DLL.

This has been tested with Nvidia driver series 528 & 531 - earlier driver versions may have issues, recommend updating if DLSSTweaks doesn't seem to apply to any games for you.

Many hours have gone into developing/testing/researching, along with debugging issues with different games.
If the tweaks have helped improve your experience, please consider buying a coffee to support future development & help to obtain more games to test with.


DLSSTweaks now offers two different ways to setup the wrapper, which should help let it work across different system configs:

nvngx.dll

The easiest way to install is via nvngx.dll wrapping, this should work fine for the majority of games without needing to rename any files first.

However this method requires a small registry tweak to be applied first to stop DLSS from checking the nvngx.dll signature.

The included EnableNvidiaSigOverride.reg can install this tweak for you (the tweak can also be removed via the DisableNvidiaSigOverride.reg)

After setting up the registry tweak you should be able to just copy the nvngx.dll & dlsstweaks.ini files next to your game EXE, and it should hopefully load into the game fine.

(this is the same registry tweak used by CyberFSR2 to load in their custom nvngx.dll, haven't seen any reports of issues caused by it, but if you play games that use anti-cheat software you may want to use the method below, instead of installing this global registry tweak)

dxgi.dll/etc

Alternatively if you don't wish to use the registry tweak, the older methods of loading in via dxgi.dll etc wrapping are also still supported.
(this older method requires more code hooks to be applied though, which may have issues on certain systems, the nvngx.dll method is believed to be more compatible)

You can switch to these wrappers by renaming the included nvngx.dll file to one of the supported filenames, the dlsstweaks.ini includes a list of filenames you can try.


If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

Note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first - the included INI explains each of the available tweaks, along with alternate filenames you can rename the DLSSTweaks DLL to.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.


Changes since 0.200.4:

  • ConfigTool: added DLSSTweaksConfig.exe tool for editing DLSSTweaks.ini, can change all settings inside the INI along with showing descriptions of each, and also allows selecting DLSS DLL to override with
  • DLSSQualityLevels: can now set DLSS quality level to a custom resolution directly, instead of needing to work out what ratio is needed for the given res
  • OverrideSharpening: lets the DLSS sharpening amount be customized, changed to softening instead, or disabled entirely (only for pre-2.5.1 DLSS, 2.5.1 and newer removed DLSS sharpening)
  • Log: now prints a recommendation about OverrideAutoExposure into log, if game doesn't provide its own exposure value to DLSS then enabling is recommended, otherwise if game is providing one, and user has OverrideAutoExposure enabled, they're now recommended to disable it
  • DLSSPresets: add hook to override presets forced by DLSS with users ones - now OverrideAppId shouldn't be required to override the presets determined by Nvidia, instead just change Default to any preset and it should be made active.
    (this might help DLSS to make any game-specific changes now too, since it'll now always be told the correct AppId for the game)
  • INI: monitor INI file by default, remove WatchIniUpdates setting, add DisableIniMonitoring in case some games have issues with it (the way it watches the INI is very efficient using Win32 directory-changes functions, so shouldn't have any perf issues)
  • DisableDevWatermark: add watermark removal patch for DLSSG / FrameGen 3.1.10 (aka 1.10.0)
  • DLLPathOverrides: now allows overriding almost any DLL to load from a custom path instead, useful for nvngx_dlss & nvngx_dlssg
  • Log: now tries to warn user via dlsstweaks_error.log file if multiple instances of DLSSTweaks are loaded in to the game
  • Log: fix DLSSTweaks log entries being printed to command-prompt window in certain games
  • Log: now logs the DLSS flags specified by the game when VerboseLogging is enabled, to help give more info about how games use it
  • Hooks: updated safetyhook to new version, improving compatibility with certain games (eg Minecraft)
  • DLSSQualityLevels: allow both comma and period to be used when specifying ratio
  • DLSSPresets: improved hook to only force presets that are customized (leaving non-customized ones to use NV-provided defaults), and added support for 3.1.1 to new override hook method
  • Hooks: applies hooks to modules slightly earlier, before DllMain of the module is ran, possibly improving stability/compatibility
  • Misc: fixed crash when std::filesystem::exists would throw exception (only seemed to happen under UWP games, which mess with filesystem permissions)
  • Misc: DLL is now self-signed, and hashes of DLL provided on github, more info at https://github.com/emoose/DLSSTweaks/wiki/DLL-Signature

Game Compatibility

A list of games tested against DLSSTweaks can be found here: https://github.com/emoose/DLSSTweaks/wiki/Games

If you try out any game that isn't mentioned there please let us know how it went on the issue tracker!

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!


Verification

Hashes for verification:

nvngx.dll
  • MD5: 063E4FAE1BF759DAE1EAE289896F4383
  • SHA-1: 2DD274315E5DC53730394B5796B972F96F74F6A9
  • SHA-256: 31C26172306DA5C4F08BC7DBB493E327CD48BBF507331967C74A7298122E3F67
DLSSTweaksConfig.exe
  • MD5: 169047C109383F658C2751E4FCC6114F
  • SHA-1: C53508304CDFE46EDFD44DD2F8AB3F0A0AF6C310
  • SHA-256: DCEB138FC651C8B67A3448CDF95F8E17D32494E065F9C31903F910D07200DA11

The files are signed too, but unfortunately only with a self-signed certificate, which would be easy for others to impersonate... more info about that at https://github.com/emoose/DLSSTweaks/wiki/DLL-Signature

(if someone with a proper code-signing cert is able to help sign DLLs for me it'd be extremely appreciated, please email me at abc (at) cock (dot) li)


Binaries / DLL file can be found on NexusMods: https://www.nexusmods.com/site/mods/550?tab=files

The files listed below are just source code for the DLL, the DLL itself for use with games can be found in the link above.

DLSSTweaks - DLSSTweaks 0.200.5-beta5

Published by emoose over 1 year ago

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking scaling ratios & DLSS 3.1 presets.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1+ is required for DLSSPresets overrides to be applied, but DLAA forcing / scaling ratio tweaks should work fine across 2.x versions too - DLSS framegen is unaffected by this DLL.

This has been tested with Nvidia driver series 528 & 531 - earlier driver versions may have issues, recommend updating if DLSSTweaks doesn't seem to apply to any games for you.

Many hours have gone into developing/testing/researching, along with debugging issues with different games.
If the tweaks have helped improve your experience, please consider buying a coffee to support future development & help to obtain more games to test with.


DLSSTweaks now offers two different ways to setup the wrapper, which should help let it work across different system configs:

nvngx.dll

The easiest way to install is via nvngx.dll wrapping, this should work fine for the majority of games without needing to rename any files first.

However this method requires a small registry tweak to be applied first to stop DLSS from checking the nvngx.dll signature.

The included EnableNvidiaSigOverride.reg can install this tweak for you (the tweak can also be removed via the DisableNvidiaSigOverride.reg)

After setting up the registry tweak you should be able to just copy the nvngx.dll & dlsstweaks.ini files next to your game EXE, and it should hopefully load into the game fine.

(this is the same registry tweak used by CyberFSR2 to load in their custom nvngx.dll, haven't seen any reports of issues caused by it, but if you play games that use anti-cheat software you may want to use the method below, instead of installing this global registry tweak)

dxgi.dll/etc

Alternatively if you don't wish to use the registry tweak, the older methods of loading in via dxgi.dll etc wrapping are also still supported.
(this older method requires more code hooks to be applied though, which may have issues on certain systems, the nvngx.dll method is believed to be more compatible)

You can switch to these wrappers by renaming the included nvngx.dll file to one of the supported filenames, the dlsstweaks.ini includes a list of filenames you can try.


If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

Note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first - the included INI explains each of the available tweaks, along with alternate filenames you can rename the DLSSTweaks DLL to.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.


Changes in 0.200.5-beta5/beta4:

0.200.5-beta5 is a "release candidate" for the 0.200.5 main release, need to test it with a few more games before pushing out that release properly, but not sure how long that might take me, so figured it was worth making one last beta release for it first.

  • (0.200.5-beta5): Log: fix DLSSTweaks log entries being printed to command-prompt window in certain games
  • (0.200.5-beta5): Hooks: updated safetyhook for improved compatibility
  • DLSSQualityLevels: can now set DLSS quality level to a custom resolution directly, instead of needing to work out what ratio is needed for the given res
  • DLSSQualityLevels: allow both comma and period to be used when specifying ratio
  • OverrideSharpening: lets the DLSS sharpening amount be customized, changed to softening instead, or disabled entirely (only for pre-2.5.1 DLSS, 2.5.1 and newer removed DLSS sharpening)
  • DLSSPresets: improved hook to only force presets that are customized (leaving non-customized ones to use NV-provided defaults), and added support for 3.1.1 to new override hook method
  • Log: now logs the DLSS flags specified by the game when VerboseLogging is enabled, to help give more info about how games use it
  • Log: now prints a recommendation about OverrideAutoExposure into log, if game doesn't provide its own exposure value to DLSS then enabling is recommended, otherwise if game is providing one, and user has OverrideAutoExposure enabled, they're now recommended to disable it
  • Hooks: applies hooks to modules slightly earlier, before DllMain of the module is ran, possibly improving stability/compatibility
  • Hooks: updated safetyhook to new version, improving compatibility with certain games (eg Minecraft)
  • Misc: fixed crash when std::filesystem::exists would throw exception (only seemed to happen under UWP games, which mess with filesystem permissions)
  • Misc: DLL is now self-signed, and hashes of DLL provided, more info at https://github.com/emoose/DLSSTweaks/wiki/DLL-Signature

Changes in 0.200.xx:

  • (0.200.5-beta3) DLSSPresets: add hook to override presets forced by DLSS with users ones - now OverrideAppId shouldn't be required to override the presets determined by Nvidia, instead just change Default to any preset and it should be made active.
    (this might help DLSS to make any game-specific changes now too, since it'll now always be told the correct AppId for the game)

  • (0.200.5-beta3) INI: added VerboseLogs setting to control log level, enabling this will give a tiny bit extra debugging into into the log file, more things about DLSS will likely be logged there in future

  • (0.200.5-beta3) INI: monitor INI file by default, remove WatchIniUpdates setting, add DisableIniMonitoring in case some games have issues with it (the way it watches the INI is very efficient using Win32 directory-changes functions, so shouldn't have any perf issues)

  • (0.200.5-beta3) FrameGen: allow changing watermark patch during runtime by editing INI file

  • (0.200.5-beta3) FrameGen: zero dlssg watermark string instead of code patch (should help watermark patch work across any later versions)

  • (0.200.5-beta2) DLLPathOverrides: fix crash when INI section empty / doesn't exist

  • (0.200.5-beta2) removed messagebox when multiple instances of DLSSTweaks are detected, will now only write to dlsstweaks_error.log instead

  • (0.200.5-beta1) DisableDevWatermark: add watermark removal patch for DLSSG / FrameGen 3.1.10 (aka 1.10.0)

  • (0.200.5-beta1) DLLPathOverrides: now allows overriding almost any DLL to load from a custom path instead, useful for nvngx_dlss & nvngx_dlssg

  • (0.200.5-beta1) now tries to warn user via MessageBox / dlsstweaks_error.log file if multiple instances of DLSSTweaks are loaded in to the game

  • (0.200.4) OverrideDlssDll: fixed issues with spaces in path

  • (0.200.4) clamped/limited quality level ratios between 0.0 and 1.0

  • (0.200.4) updated to latest safetyhook

  • (0.200.4) INI: improved/simplified text

  • (0.200.4) added extra logging around errors & current settings

  • (0.200.4) improved vulkan function definitions

  • (0.200.4) for those using global injector setups, will now first read in settings from a global INI located next to the DLL, and then override with settings from an INI located next to game EXE, so settings can be overridden per-game

  • (0.200.4) now uses DLSS SDK for DLSS structs/properties instead of needing to define them ourselves

  • (0.200.3) improved how wrapped functions call back to original functions, helps fix crashes on certain games

  • (0.200.3) moved OverrideAppId to DLSSPresets section

  • (0.200.3) added ResolutionOffset setting to INI, allows offsetting the DLAA resolution by certain amount, for games that don't like DLAA working at full resolution (eg. Crysis 3 & RE Engine games...)

  • now supports wrapping the nvngx.dll file itself, via exported wrapper functions (this requires signature checks to be disabled via EnableSignatureOverride.reg)

  • improved code so that nvngx.dll wrapper method & the older hooking methods can both share the same logic

  • improved OverrideDlssHud hook to let it work across more versions of DLSS

  • UltraQuality override: allows setting a value for the normally-unused UltraQuality setting, most games don't support this, but a small number may detect the overridden value & make an Ultra Quality setting available to use (eg. Hogwarts Legacy)

  • OverrideDlssDll setting: can override the path that DLSS will be loaded from, may help with games that don't allow the included nvngx_dlss.dll file to be modified (eg. with RGL launcher), so you could set this to make it load DLSS from a different path instead

  • reorganized hooks into separate namespaces for each DLL that we apply changes to (nvngx & nvngx_dlss)

  • uses better method to watch for DLSS DLLs being loaded in, using LdrRegisterDllNotification instead of LoadLibrary hooks, reduces chances of issues with other DLL plugins

  • changed priority of ForceDLAA vs DLSSQualityLevels, values set in DLSSQualityLevels will now always override the ForceDLAA setting, if the section is enabled.

  • improved support for older drivers that might be missing certain DLSS functions

  • changes how hooks are performed: instead of our DLL handling the hook install / removal ourselves (needing us to keep track of the DLL loads/unloads), we instead just hook the DllMain of the module being hooked, which lets us know when the module is loaded/unloaded without needing any bookkeeping - this should help with games that might load & unload the DLSS modules during runtime

  • updated to newer safetyhook to improve stability of code hooks

Changes in 0.123.10+

  • (0.123.11) fixes issue with crashes on launch if log file can't be written (eg. with WinStore apps)
  • added DLSSQualityLevels section, where custom ratios can be set for each DLSS level
  • changed ForceAutoExposure to OverrideAutoExposure, can now be force disabled if desired
  • added WatchIniUpdates setting, which can try applying any updated dlsstweaks.ini settings during the session
  • added OverrideDlssHud setting, can allow force enabling/disabling the DLSS debug display without needing to edit registry
  • added DisableDevWatermark setting to hide watermark message when using dev DLL
  • improved function definitions, may improve stability (tiny chance that it might help with titles that had issues with DLAA previously)
  • switched hook library to safetyhook, use spdlog for logging
  • use ini-cpp to read INI instead of GetPrivateProfile functions, fixes issues with INI being locked & not being writable by external apps during runtime
  • now uses _beginthreadex instead of CreateThread for our main hook init thread

0.123.10+ could have some regressions in certain titles compared to 0.123.9 - if you find a title that used to work but now doesn't, please let me know on the issues page.


Game Compatibility

A list of games tested against DLSSTweaks can be found here: https://github.com/emoose/DLSSTweaks/wiki/Games

If you try out any game that isn't mentioned there please let us know how it went on the issue tracker!

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!


Verification

DLL hashes for verification (nvngx.dll):

  • MD5: 502BF55901035917DF912BC15D0CDE7D
  • SHA-1: 7FE074728059A15D4D70C05F85671C69B995DFAB
  • SHA-256: 8561D3BEC9B7120FED6D62D2828F9709AF6F12073A5361F7D1E5E11F77C2E9DD

The DLL is also signed too, but unfortunately only with a self-signed certificate, which would be easy for others to impersonate... more info about that at https://github.com/emoose/DLSSTweaks/wiki/DLL-Signature

(if someone with a proper code-signing cert is able to help sign DLLs for me it'd be extremely appreciated, please email me at abc (at) cock (dot) li)


Binaries / DLL file can be found on NexusMods: https://www.nexusmods.com/site/mods/550?tab=files
(this beta version is listed as "DLSSTweaks beta")

The files listed below are just source code for the DLL, the DLL itself for use with games can be found in the link above.

DLSSTweaks - DLSSTweaks 0.200.5-beta4

Published by emoose over 1 year ago

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking scaling ratios & DLSS 3.1 presets.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1+ is required for DLSSPresets overrides to be applied, but DLAA forcing / scaling ratio tweaks should work fine across 2.x versions too - DLSS framegen is unaffected by this DLL.

This has been tested with Nvidia driver series 528 & 531 - earlier driver versions may have issues, recommend updating if DLSSTweaks doesn't seem to apply to any games for you.

Many hours have gone into developing/testing/researching, along with debugging issues with different games.
If the tweaks have helped improve your experience, please consider buying a coffee to support future development, & help to obtain more games to test with. Thank you!


DLSSTweaks now offers two different ways to setup the wrapper, which should help let it work across different system configs:

nvngx.dll

The easiest way to install is via nvngx.dll wrapping, this should work fine for the majority of games without needing to rename any files first.

However this method requires a small registry tweak to be applied first to stop DLSS from checking the nvngx.dll signature.

The included EnableNvidiaSigOverride.reg can install this tweak for you (the tweak can also be removed via the DisableNvidiaSigOverride.reg)

After setting up the registry tweak you should be able to just copy the nvngx.dll & dlsstweaks.ini files next to your game EXE, and it should hopefully load into the game fine.

(this is the same registry tweak used by CyberFSR2 to load in their custom nvngx.dll, haven't seen any reports of issues caused by it, but if you play games that use anti-cheat software you may want to use the method below, instead of installing this global registry tweak)

dxgi.dll/etc

Alternatively if you don't wish to use the registry tweak, the older methods of loading in via dxgi.dll etc wrapping are also still supported.
(this older method requires more code hooks to be applied though, which may have issues on certain systems, the nvngx.dll method is believed to be more compatible)

You can switch to these wrappers by renaming the included nvngx.dll file to one of the supported filenames, the dlsstweaks.ini includes a list of filenames you can try.


If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

Note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first - the included INI explains each of the available tweaks, along with alternate filenames you can rename the DLSSTweaks DLL to.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.


Changes in 0.200.5-beta4:

  • DLSSQualityLevels: can now set DLSS quality level to a custom resolution directly, instead of needing to work out what ratio is needed for the given res
  • DLSSQualityLevels: allow both comma and period to be used when specifying ratio
  • OverrideSharpening: lets the DLSS sharpening amount be customized, changed to softening instead, or disabled entirely (only for pre-2.5.1 DLSS, 2.5.1 and newer removed DLSS sharpening)
  • DLSSPresets: improved hook to only force presets that are customized (leaving non-customized ones to use NV-provided defaults), and added support for 3.1.1 to new override hook method
  • Log: now logs the DLSS flags specified by the game when VerboseLogging is enabled, to help give more info about how games use it
  • Log: now prints a recommendation about OverrideAutoExposure into log, if game doesn't provide its own exposure value to DLSS then enabling is recommended, otherwise if game is providing one, and user has OverrideAutoExposure enabled, they're now recommended to disable it
  • Hooks: applies hooks to modules slightly earlier, before DllMain of the module is ran, possibly improving stability/compatibility
  • Hooks: updated safetyhook to new version, improving compatibility with certain games (eg Minecraft)
  • Misc: fixed crash when std::filesystem::exists would throw exception (only seemed to happen under UWP games, which mess with filesystem permissions)
  • Misc: DLL is now self-signed, and hashes of DLL provided, more info at https://github.com/emoose/DLSSTweaks/wiki/DLL-Signature

Changes in 0.200.xx:

  • (0.200.5-beta3) DLSSPresets: add hook to override presets forced by DLSS with users ones - now OverrideAppId shouldn't be required to override the presets determined by Nvidia, instead just change Default to any preset and it should be made active.
    (this might help DLSS to make any game-specific changes now too, since it'll now always be told the correct AppId for the game)

  • (0.200.5-beta3) INI: added VerboseLogs setting to control log level, enabling this will give a tiny bit extra debugging into into the log file, more things about DLSS will likely be logged there in future

  • (0.200.5-beta3) INI: monitor INI file by default, remove WatchIniUpdates setting, add DisableIniMonitoring in case some games have issues with it (the way it watches the INI is very efficient using Win32 directory-changes functions, so shouldn't have any perf issues)

  • (0.200.5-beta3) FrameGen: allow changing watermark patch during runtime by editing INI file

  • (0.200.5-beta3) FrameGen: zero dlssg watermark string instead of code patch (should help watermark patch work across any later versions)

  • (0.200.5-beta2) DLLPathOverrides: fix crash when INI section empty / doesn't exist

  • (0.200.5-beta2) removed messagebox when multiple instances of DLSSTweaks are detected, will now only write to dlsstweaks_error.log instead

  • (0.200.5-beta1) DisableDevWatermark: add watermark removal patch for DLSSG / FrameGen 3.1.10 (aka 1.10.0)

  • (0.200.5-beta1) DLLPathOverrides: now allows overriding almost any DLL to load from a custom path instead, useful for nvngx_dlss & nvngx_dlssg

  • (0.200.5-beta1) now tries to warn user via MessageBox / dlsstweaks_error.log file if multiple instances of DLSSTweaks are loaded in to the game

  • (0.200.4) OverrideDlssDll: fixed issues with spaces in path

  • (0.200.4) clamped/limited quality level ratios between 0.0 and 1.0

  • (0.200.4) updated to latest safetyhook

  • (0.200.4) INI: improved/simplified text

  • (0.200.4) added extra logging around errors & current settings

  • (0.200.4) improved vulkan function definitions

  • (0.200.4) for those using global injector setups, will now first read in settings from a global INI located next to the DLL, and then override with settings from an INI located next to game EXE, so settings can be overridden per-game

  • (0.200.4) now uses DLSS SDK for DLSS structs/properties instead of needing to define them ourselves

  • (0.200.3) improved how wrapped functions call back to original functions, helps fix crashes on certain games

  • (0.200.3) moved OverrideAppId to DLSSPresets section

  • (0.200.3) added ResolutionOffset setting to INI, allows offsetting the DLAA resolution by certain amount, for games that don't like DLAA working at full resolution (eg. Crysis 3 & RE Engine games...)

  • now supports wrapping the nvngx.dll file itself, via exported wrapper functions (this requires signature checks to be disabled via EnableSignatureOverride.reg)

  • improved code so that nvngx.dll wrapper method & the older hooking methods can both share the same logic

  • improved OverrideDlssHud hook to let it work across more versions of DLSS

  • UltraQuality override: allows setting a value for the normally-unused UltraQuality setting, most games don't support this, but a small number may detect the overridden value & make an Ultra Quality setting available to use (eg. Hogwarts Legacy)

  • OverrideDlssDll setting: can override the path that DLSS will be loaded from, may help with games that don't allow the included nvngx_dlss.dll file to be modified (eg. with RGL launcher), so you could set this to make it load DLSS from a different path instead

  • reorganized hooks into separate namespaces for each DLL that we apply changes to (nvngx & nvngx_dlss)

  • uses better method to watch for DLSS DLLs being loaded in, using LdrRegisterDllNotification instead of LoadLibrary hooks, reduces chances of issues with other DLL plugins

  • changed priority of ForceDLAA vs DLSSQualityLevels, values set in DLSSQualityLevels will now always override the ForceDLAA setting, if the section is enabled.

  • improved support for older drivers that might be missing certain DLSS functions

  • changes how hooks are performed: instead of our DLL handling the hook install / removal ourselves (needing us to keep track of the DLL loads/unloads), we instead just hook the DllMain of the module being hooked, which lets us know when the module is loaded/unloaded without needing any bookkeeping - this should help with games that might load & unload the DLSS modules during runtime

  • updated to newer safetyhook to improve stability of code hooks

Changes in 0.123.10+

  • (0.123.11) fixes issue with crashes on launch if log file can't be written (eg. with WinStore apps)
  • added DLSSQualityLevels section, where custom ratios can be set for each DLSS level
  • changed ForceAutoExposure to OverrideAutoExposure, can now be force disabled if desired
  • added WatchIniUpdates setting, which can try applying any updated dlsstweaks.ini settings during the session
  • added OverrideDlssHud setting, can allow force enabling/disabling the DLSS debug display without needing to edit registry
  • added DisableDevWatermark setting to hide watermark message when using dev DLL
  • improved function definitions, may improve stability (tiny chance that it might help with titles that had issues with DLAA previously)
  • switched hook library to safetyhook, use spdlog for logging
  • use ini-cpp to read INI instead of GetPrivateProfile functions, fixes issues with INI being locked & not being writable by external apps during runtime
  • now uses _beginthreadex instead of CreateThread for our main hook init thread

0.123.10+ could have some regressions in certain titles compared to 0.123.9 - if you find a title that used to work but now doesn't, please let me know on the issues page.


Game Compatibility

A list of games tested against DLSSTweaks can be found here: https://github.com/emoose/DLSSTweaks/wiki/Games

If you try out any game that isn't mentioned there please let us know how it went on the issue tracker!

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!


Verification

DLL hashes for verification (nvngx.dll):

  • MD5: 25326FCBC668ED90C28E39B988ED4B61
  • SHA-1: 70315847C8B160C49F29FF650729C3F864E20E3A
  • SHA-256: 11EFBE3663F05091FF7F1999EE43C261A3E57E4DAF4590DB0BCC818D2B224B36

The DLL is also signed too, but unfortunately only with a self-signed certificate, which would be easy for others to impersonate... more info about that at https://github.com/emoose/DLSSTweaks/wiki/DLL-Signature

(if someone with a proper code-signing cert is able to help sign DLLs for me it'd be extremely appreciated, please email me at abc (at) cock (dot) li)


Binaries / DLL file can be found on NexusMods: https://www.nexusmods.com/site/mods/550?tab=files
(this beta version is listed as "DLSSTweaks beta")

The files listed below are just source code for the DLL, the DLL itself for use with games can be found in the link above.

DLSSTweaks - DLSSTweaks 0.200.5-beta3

Published by emoose over 1 year ago

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking scaling ratios & DLSS 3.1 presets.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1+ is required for DLSSPresets overrides to be applied, but DLAA forcing / scaling ratio tweaks should work fine across 2.x versions too - DLSS framegen is unaffected by this DLL.

This has been tested with Nvidia driver series 528 & 531 - earlier driver versions may have issues, recommend updating if DLSSTweaks doesn't seem to apply to any games for you.

Many hours have gone into developing/testing/researching, along with debugging issues with different games.
If the tweaks have helped improve your experience, please consider buying a coffee to support future development, & help to obtain more games to test with. Thank you!


DLSSTweaks now offers two different ways to setup the wrapper, which should help let it work across different system configs:

nvngx.dll

The easiest way to install is via nvngx.dll wrapping, this should work fine for the majority of games without needing to rename any files first.

However this method requires a small registry tweak to be applied first to stop DLSS from checking the nvngx.dll signature.

The included EnableNvidiaSigOverride.reg can install this tweak for you (the tweak can also be removed via the DisableNvidiaSigOverride.reg)

After setting up the registry tweak you should be able to just copy the nvngx.dll & dlsstweaks.ini files next to your game EXE, and it should hopefully load into the game fine.

(this is the same registry tweak used by CyberFSR2 to load in their custom nvngx.dll, haven't seen any reports of issues caused by it, but if you play games that use anti-cheat software you may want to use the method below, instead of installing this global registry tweak)

dxgi.dll/etc

Alternatively if you don't wish to use the registry tweak, the older methods of loading in via dxgi.dll etc wrapping are also still supported.
(this older method requires more code hooks to be applied though, which may have issues on certain systems, the nvngx.dll method is believed to be more compatible)

You can switch to these wrappers by renaming the included nvngx.dll file to one of the supported filenames, the dlsstweaks.ini includes a list of filenames you can try.


If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

Note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first - the included INI explains each of the available tweaks, along with alternate filenames you can rename the DLSSTweaks DLL to.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.


Changes in 0.200.xx:

  • (0.200.5-beta3) DLSSPresets: add hook to override presets forced by DLSS with users ones - now OverrideAppId shouldn't be required to override the presets determined by Nvidia, instead just change Default to any preset and it should be made active.
    (this might help DLSS to make any game-specific changes now too, since it'll now always be told the correct AppId for the game)

  • (0.200.5-beta3) INI: added VerboseLogs setting to control log level, enabling this will give a tiny bit extra debugging into into the log file, more things about DLSS will likely be logged there in future

  • (0.200.5-beta3) INI: monitor INI file by default, remove WatchIniUpdates setting, add DisableIniMonitoring in case some games have issues with it (the way it watches the INI is very efficient using Win32 directory-changes functions, so shouldn't have any perf issues)

  • (0.200.5-beta3) FrameGen: allow changing watermark patch during runtime by editing INI file

  • (0.200.5-beta3) FrameGen: zero dlssg watermark string instead of code patch (should help watermark patch work across any later versions)

  • (0.200.5-beta2) DLLPathOverrides: fix crash when INI section empty / doesn't exist

  • (0.200.5-beta2) removed messagebox when multiple instances of DLSSTweaks are detected, will now only write to dlsstweaks_error.log instead

  • (0.200.5-beta1) DisableDevWatermark: add watermark removal patch for DLSSG / FrameGen 3.1.10 (aka 1.10.0)

  • (0.200.5-beta1) DLLPathOverrides: now allows overriding almost any DLL to load from a custom path instead, useful for nvngx_dlss & nvngx_dlssg

  • (0.200.5-beta1) now tries to warn user via MessageBox / dlsstweaks_error.log file if multiple instances of DLSSTweaks are loaded in to the game

  • (0.200.4) OverrideDlssDll: fixed issues with spaces in path

  • (0.200.4) clamped/limited quality level ratios between 0.0 and 1.0

  • (0.200.4) updated to latest safetyhook

  • (0.200.4) INI: improved/simplified text

  • (0.200.4) added extra logging around errors & current settings

  • (0.200.4) improved vulkan function definitions

  • (0.200.4) for those using global injector setups, will now first read in settings from a global INI located next to the DLL, and then override with settings from an INI located next to game EXE, so settings can be overridden per-game

  • (0.200.4) now uses DLSS SDK for DLSS structs/properties instead of needing to define them ourselves

  • (0.200.3) improved how wrapped functions call back to original functions, helps fix crashes on certain games

  • (0.200.3) moved OverrideAppId to DLSSPresets section

  • (0.200.3) added ResolutionOffset setting to INI, allows offsetting the DLAA resolution by certain amount, for games that don't like DLAA working at full resolution (eg. Crysis 3 & RE Engine games...)

  • now supports wrapping the nvngx.dll file itself, via exported wrapper functions (this requires signature checks to be disabled via EnableSignatureOverride.reg)

  • improved code so that nvngx.dll wrapper method & the older hooking methods can both share the same logic

  • improved OverrideDlssHud hook to let it work across more versions of DLSS

  • UltraQuality override: allows setting a value for the normally-unused UltraQuality setting, most games don't support this, but a small number may detect the overridden value & make an Ultra Quality setting available to use (eg. Hogwarts Legacy)

  • OverrideDlssDll setting: can override the path that DLSS will be loaded from, may help with games that don't allow the included nvngx_dlss.dll file to be modified (eg. with RGL launcher), so you could set this to make it load DLSS from a different path instead

  • reorganized hooks into separate namespaces for each DLL that we apply changes to (nvngx & nvngx_dlss)

  • uses better method to watch for DLSS DLLs being loaded in, using LdrRegisterDllNotification instead of LoadLibrary hooks, reduces chances of issues with other DLL plugins

  • changed priority of ForceDLAA vs DLSSQualityLevels, values set in DLSSQualityLevels will now always override the ForceDLAA setting, if the section is enabled.

  • improved support for older drivers that might be missing certain DLSS functions

  • changes how hooks are performed: instead of our DLL handling the hook install / removal ourselves (needing us to keep track of the DLL loads/unloads), we instead just hook the DllMain of the module being hooked, which lets us know when the module is loaded/unloaded without needing any bookkeeping - this should help with games that might load & unload the DLSS modules during runtime

  • updated to newer safetyhook to improve stability of code hooks

Changes in 0.123.10+

  • (0.123.11) fixes issue with crashes on launch if log file can't be written (eg. with WinStore apps)
  • added DLSSQualityLevels section, where custom ratios can be set for each DLSS level
  • changed ForceAutoExposure to OverrideAutoExposure, can now be force disabled if desired
  • added WatchIniUpdates setting, which can try applying any updated dlsstweaks.ini settings during the session
  • added OverrideDlssHud setting, can allow force enabling/disabling the DLSS debug display without needing to edit registry
  • added DisableDevWatermark setting to hide watermark message when using dev DLL
  • improved function definitions, may improve stability (tiny chance that it might help with titles that had issues with DLAA previously)
  • switched hook library to safetyhook, use spdlog for logging
  • use ini-cpp to read INI instead of GetPrivateProfile functions, fixes issues with INI being locked & not being writable by external apps during runtime
  • now uses _beginthreadex instead of CreateThread for our main hook init thread

0.123.10+ could have some regressions in certain titles compared to 0.123.9 - if you find a title that used to work but now doesn't, please let me know on the issues page.


Game Compatibility

A list of games tested against DLSSTweaks can be found here: https://github.com/emoose/DLSSTweaks/wiki/Games

If you try out any game that isn't mentioned there please let us know how it went on the issue tracker!

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!


DLL hashes for verification (nvngx.dll):

  • SHA256: AB7497A9760003938525F2C367C706A01858F6EC8B29AA03BBB068CC8CE964AB
  • SHA1: 9A239A2D0257A7EC12DEED0ABC2C4DFFFF983BA3
  • MD5: FF9A822B83DBF4F1BA6860E493B796A6

Future releases will also be self-signed, but those could then be self-signed by anyone else too, so hashes are still preferred way to verify it.

(if someone with a proper code-signing cert is able to help sign DLLs for me it'd be extremely appreciated, please email me at abc (at) cock (dot) li)


Binaries can be found on NexusMods: https://www.nexusmods.com/site/mods/550?tab=files
(this beta version is listed as "DLSSTweaks beta")

The files listed below are just source code for the DLL, binaries for use with games can be found in the link above.

DLSSTweaks - DLSSTweaks 0.200.5-beta2

Published by emoose over 1 year ago

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking scaling ratios & DLSS 3.1 presets.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1+ is required for DLSSPresets overrides to be applied, but DLAA forcing / scaling ratio tweaks should work fine across 2.x versions too - DLSS framegen is unaffected by this DLL.

This has been tested with Nvidia driver series 528 & 531 - earlier driver versions may have issues, recommend updating if DLSSTweaks doesn't seem to apply to any games for you.

Many hours have gone into developing/testing/researching, along with debugging issues with different games.
If the tweaks have helped improve your experience, please consider buying a coffee to support future development, & help to obtain more games to test with. Thank you!


DLSSTweaks now offers two different ways to setup the wrapper, which should help let it work across different system configs:

nvngx.dll

The easiest way to install is via nvngx.dll wrapping, this should work fine for the majority of games without needing to rename any files first.

However this method requires a small registry tweak to be applied first to stop DLSS from checking the nvngx.dll signature.

The included EnableNvidiaSigOverride.reg can install this tweak for you (the tweak can also be removed via the DisableNvidiaSigOverride.reg)

After setting up the registry tweak you should be able to just copy the nvngx.dll & dlsstweaks.ini files next to your game EXE, and it should hopefully load into the game fine.

(this is the same registry tweak used by CyberFSR2 to load in their custom nvngx.dll, haven't seen any reports of issues caused by it, but if you play games that use anti-cheat software you may want to use the method below, instead of installing this global registry tweak)

dxgi.dll/etc

Alternatively if you don't wish to use the registry tweak, the older methods of loading in via dxgi.dll etc wrapping are also still supported.
(this older method requires more code hooks to be applied though, which may have issues on certain systems, the nvngx.dll method is believed to be more compatible)

You can switch to these wrappers by renaming the included nvngx.dll file to one of the supported filenames, the dlsstweaks.ini includes a list of filenames you can try.


If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

Note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first - the included INI explains each of the available tweaks, along with alternate filenames you can rename the DLSSTweaks DLL to.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.


Changes in 0.200.xx:

  • (0.200.5-beta2) DLLPathOverrides: fix crash when INI section empty / doesn't exist
  • (0.200.5-beta2) removed messagebox when multiple instances of DLSSTweaks are detected, will now only write to dlsstweaks_error.log instead
  • (0.200.5-beta1) DisableDevWatermark: add watermark removal patch for DLSSG / FrameGen 3.1.10 (aka 1.10.0)
  • (0.200.5-beta1) DLLPathOverrides: now allows overriding almost any DLL to load from a custom path instead, useful for nvngx_dlss & nvngx_dlssg
  • (0.200.5-beta1) now tries to warn user via MessageBox / dlsstweaks_error.log file if multiple instances of DLSSTweaks are loaded in to the game
  • (0.200.4) OverrideDlssDll: fixed issues with spaces in path
  • (0.200.4) clamped/limited quality level ratios between 0.0 and 1.0
  • (0.200.4) updated to latest safetyhook
  • (0.200.4) INI: improved/simplified text
  • (0.200.4) added extra logging around errors & current settings
  • (0.200.4) improved vulkan function definitions
  • (0.200.4) for those using global injector setups, will now first read in settings from a global INI located next to the DLL, and then override with settings from an INI located next to game EXE, so settings can be overridden per-game
  • (0.200.4) now uses DLSS SDK for DLSS structs/properties instead of needing to define them ourselves
  • (0.200.3) improved how wrapped functions call back to original functions, helps fix crashes on certain games
  • (0.200.3) moved OverrideAppId to DLSSPresets section
  • (0.200.3) added ResolutionOffset setting to INI, allows offsetting the DLAA resolution by certain amount, for games that don't like DLAA working at full resolution (eg. Crysis 3 & RE Engine games...)
  • now supports wrapping the nvngx.dll file itself, via exported wrapper functions (this requires signature checks to be disabled via EnableSignatureOverride.reg)
  • improved code so that nvngx.dll wrapper method & the older hooking methods can both share the same logic
  • improved OverrideDlssHud hook to let it work across more versions of DLSS
  • UltraQuality override: allows setting a value for the normally-unused UltraQuality setting, most games don't support this, but a small number may detect the overridden value & make an Ultra Quality setting available to use (eg. Hogwarts Legacy)
  • OverrideDlssDll setting: can override the path that DLSS will be loaded from, may help with games that don't allow the included nvngx_dlss.dll file to be modified (eg. with RGL launcher), so you could set this to make it load DLSS from a different path instead
  • reorganized hooks into separate namespaces for each DLL that we apply changes to (nvngx & nvngx_dlss)
  • uses better method to watch for DLSS DLLs being loaded in, using LdrRegisterDllNotification instead of LoadLibrary hooks, reduces chances of issues with other DLL plugins
  • changed priority of ForceDLAA vs DLSSQualityLevels, values set in DLSSQualityLevels will now always override the ForceDLAA setting, if the section is enabled.
  • improved support for older drivers that might be missing certain DLSS functions
  • changes how hooks are performed: instead of our DLL handling the hook install / removal ourselves (needing us to keep track of the DLL loads/unloads), we instead just hook the DllMain of the module being hooked, which lets us know when the module is loaded/unloaded without needing any bookkeeping - this should help with games that might load & unload the DLSS modules during runtime
  • updated to newer safetyhook to improve stability of code hooks

Changes in 0.123.10+

  • (0.123.11) fixes issue with crashes on launch if log file can't be written (eg. with WinStore apps)
  • added DLSSQualityLevels section, where custom ratios can be set for each DLSS level
  • changed ForceAutoExposure to OverrideAutoExposure, can now be force disabled if desired
  • added WatchIniUpdates setting, which can try applying any updated dlsstweaks.ini settings during the session
  • added OverrideDlssHud setting, can allow force enabling/disabling the DLSS debug display without needing to edit registry
  • added DisableDevWatermark setting to hide watermark message when using dev DLL
  • improved function definitions, may improve stability (tiny chance that it might help with titles that had issues with DLAA previously)
  • switched hook library to safetyhook, use spdlog for logging
  • use ini-cpp to read INI instead of GetPrivateProfile functions, fixes issues with INI being locked & not being writable by external apps during runtime
  • now uses _beginthreadex instead of CreateThread for our main hook init thread

0.123.10+ could have some regressions in certain titles compared to 0.123.9 - if you find a title that used to work but now doesn't, please let me know on the issues page.


Game Compatibility

A list of games tested against DLSSTweaks can be found here: https://github.com/emoose/DLSSTweaks/wiki/Games

If you try out any game that isn't mentioned there please let us know how it went on the issue tracker!

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!


Binaries can be found on NexusMods: https://www.nexusmods.com/site/mods/550?tab=files
(this beta version is listed as "DLSSTweaks beta")

The files listed below are just source code for the DLL, binaries for use with games can be found in the link above.

DLSSTweaks - DLSSTweaks 0.200.5-beta1

Published by emoose over 1 year ago

(old release, see https://github.com/emoose/DLSSTweaks/releases for latest version)

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking scaling ratios & DLSS 3.1 presets.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1+ is required for DLSSPresets overrides to be applied, but DLAA forcing / scaling ratio tweaks should work fine across 2.x versions too - DLSS framegen is unaffected by this DLL.

This has been tested with Nvidia driver series 528 & 531 - earlier driver versions may have issues, recommend updating if DLSSTweaks doesn't seem to apply to any games for you.

Many hours have gone into developing/testing/researching, along with debugging issues with different games.
If the tweaks have helped improve your experience, please consider buying a coffee to support future development, & help to obtain more games to test with. Thank you!


DLSSTweaks now offers two different ways to setup the wrapper, which should help let it work across different system configs:

nvngx.dll

The easiest way to install is via nvngx.dll wrapping, this should work fine for the majority of games without needing to rename any files first.

However this method requires a small registry tweak to be applied first to stop DLSS from checking the nvngx.dll signature.

The included EnableNvidiaSigOverride.reg can install this tweak for you (the tweak can also be removed via the DisableNvidiaSigOverride.reg)

After setting up the registry tweak you should be able to just copy the nvngx.dll & dlsstweaks.ini files next to your game EXE, and it should hopefully load into the game fine.

(this is the same registry tweak used by CyberFSR2 to load in their custom nvngx.dll, haven't seen any reports of issues caused by it, but if you play games that use anti-cheat software you may want to use the method below, instead of installing this global registry tweak)

dxgi.dll/etc

Alternatively if you don't wish to use the registry tweak, the older methods of loading in via dxgi.dll etc wrapping are also still supported.
(this older method requires more code hooks to be applied though, which may have issues on certain systems, the nvngx.dll method is believed to be more compatible)

You can switch to these wrappers by renaming the included nvngx.dll file to one of the supported filenames, the dlsstweaks.ini includes a list of filenames you can try.


If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

Note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first - the included INI explains each of the available tweaks, along with alternate filenames you can rename the DLSSTweaks DLL to.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.


Changes in 0.200.xx:

  • (0.200.5) DisableDevWatermark: add watermark removal patch for DLSSG / FrameGen 3.1.10 (aka 1.10.0)
  • (0.200.5) DLLPathOverrides: now allows overriding almost any DLL to load from a custom path instead, useful for nvngx_dlss & nvngx_dlssg
  • (0.200.5) now tries to warn user via MessageBox / dlsstweaks_error.log file if multiple instances of DLSSTweaks are loaded in to the game
  • (0.200.4) OverrideDlssDll: fixed issues with spaces in path
  • (0.200.4) clamped/limited quality level ratios between 0.0 and 1.0
  • (0.200.4) updated to latest safetyhook
  • (0.200.4) INI: improved/simplified text
  • (0.200.4) added extra logging around errors & current settings
  • (0.200.4) improved vulkan function definitions
  • (0.200.4) for those using global injector setups, will now first read in settings from a global INI located next to the DLL, and then override with settings from an INI located next to game EXE, so settings can be overridden per-game
  • (0.200.4) now uses DLSS SDK for DLSS structs/properties instead of needing to define them ourselves
  • (0.200.3) improved how wrapped functions call back to original functions, helps fix crashes on certain games
  • (0.200.3) moved OverrideAppId to DLSSPresets section
  • (0.200.3) added ResolutionOffset setting to INI, allows offsetting the DLAA resolution by certain amount, for games that don't like DLAA working at full resolution (eg. Crysis 3 & RE Engine games...)
  • now supports wrapping the nvngx.dll file itself, via exported wrapper functions (this requires signature checks to be disabled via EnableSignatureOverride.reg)
  • improved code so that nvngx.dll wrapper method & the older hooking methods can both share the same logic
  • improved OverrideDlssHud hook to let it work across more versions of DLSS
  • UltraQuality override: allows setting a value for the normally-unused UltraQuality setting, most games don't support this, but a small number may detect the overridden value & make an Ultra Quality setting available to use (eg. Hogwarts Legacy)
  • OverrideDlssDll setting: can override the path that DLSS will be loaded from, may help with games that don't allow the included nvngx_dlss.dll file to be modified (eg. with RGL launcher), so you could set this to make it load DLSS from a different path instead
  • reorganized hooks into separate namespaces for each DLL that we apply changes to (nvngx & nvngx_dlss)
  • uses better method to watch for DLSS DLLs being loaded in, using LdrRegisterDllNotification instead of LoadLibrary hooks, reduces chances of issues with other DLL plugins
  • changed priority of ForceDLAA vs DLSSQualityLevels, values set in DLSSQualityLevels will now always override the ForceDLAA setting, if the section is enabled.
  • improved support for older drivers that might be missing certain DLSS functions
  • changes how hooks are performed: instead of our DLL handling the hook install / removal ourselves (needing us to keep track of the DLL loads/unloads), we instead just hook the DllMain of the module being hooked, which lets us know when the module is loaded/unloaded without needing any bookkeeping - this should help with games that might load & unload the DLSS modules during runtime
  • updated to newer safetyhook to improve stability of code hooks

Changes in 0.123.10+

  • (0.123.11) fixes issue with crashes on launch if log file can't be written (eg. with WinStore apps)
  • added DLSSQualityLevels section, where custom ratios can be set for each DLSS level
  • changed ForceAutoExposure to OverrideAutoExposure, can now be force disabled if desired
  • added WatchIniUpdates setting, which can try applying any updated dlsstweaks.ini settings during the session
  • added OverrideDlssHud setting, can allow force enabling/disabling the DLSS debug display without needing to edit registry
  • added DisableDevWatermark setting to hide watermark message when using dev DLL
  • improved function definitions, may improve stability (tiny chance that it might help with titles that had issues with DLAA previously)
  • switched hook library to safetyhook, use spdlog for logging
  • use ini-cpp to read INI instead of GetPrivateProfile functions, fixes issues with INI being locked & not being writable by external apps during runtime
  • now uses _beginthreadex instead of CreateThread for our main hook init thread

0.123.10+ could have some regressions in certain titles compared to 0.123.9 - if you find a title that used to work but now doesn't, please let me know on the issues page.


Game Compatibility

A list of games tested against DLSSTweaks can be found here: https://github.com/emoose/DLSSTweaks/wiki/Games

If you try out any game that isn't mentioned there please let us know how it went on the issue tracker!

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!


Binaries can be found on NexusMods: https://www.nexusmods.com/site/mods/550?tab=files
(this beta version is listed as "DLSSTweaks beta")

The files listed below are just source code for the DLL, binaries for use with games can be found in the link above.

DLSSTweaks - DLSSTweaks 0.200.4

Published by emoose over 1 year ago

(old release, see https://github.com/emoose/DLSSTweaks/releases for latest version)

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking scaling ratios & DLSS 3.1 presets.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1+ is required for DLSSPresets overrides to be applied, but DLAA forcing / scaling ratio tweaks should work fine across 2.x versions too - DLSS framegen is unaffected by this DLL.

This has been tested with Nvidia driver series 528 & 531 - earlier driver versions may have issues, recommend updating if DLSSTweaks doesn't seem to apply to any games for you.

Many hours have gone into developing/testing/researching, along with debugging issues with different games.
If the tweaks have helped improve your experience, please consider buying a coffee to support future development, & help to obtain more games to test with. Thank you!


DLSSTweaks now offers two different ways to setup the wrapper, which should help let it work across different system configs:

nvngx.dll

The easiest way to install is via nvngx.dll wrapping, this should work fine for the majority of games without needing to rename any files first.

However this method requires a small registry tweak to be applied first to stop DLSS from checking the nvngx.dll signature.

The included EnableNvidiaSigOverride.reg can install this tweak for you (the tweak can also be removed via the DisableNvidiaSigOverride.reg)

After setting up the registry tweak you should be able to just copy the nvngx.dll & dlsstweaks.ini files next to your game EXE, and it should hopefully load into the game fine.

(this is the same registry tweak used by CyberFSR2 to load in their custom nvngx.dll, haven't seen any reports of issues caused by it, but if you play games that use anti-cheat software you may want to use the method below, instead of installing this global registry tweak)

dxgi.dll/etc

Alternatively if you don't wish to use the registry tweak, the older methods of loading in via dxgi.dll etc wrapping are also still supported.
(this older method requires more code hooks to be applied though, which may have issues on certain systems, the nvngx.dll method is believed to be more compatible)

You can switch to these wrappers by renaming the included nvngx.dll file to one of the supported filenames, the dlsstweaks.ini includes a list of filenames you can try.


If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

Note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first - the included INI explains each of the available tweaks, along with alternate filenames you can rename the DLSSTweaks DLL to.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.


Changes in 0.200.xx:

  • (0.200.4) OverrideDlssDll: fixed issues with spaces in path
  • (0.200.4) clamped/limited quality level ratios between 0.0 and 1.0
  • (0.200.4) updated to latest safetyhook
  • (0.200.4) INI: improved/simplified text
  • (0.200.4) added extra logging around errors & current settings
  • (0.200.4) improved vulkan function definitions
  • (0.200.4) for those using global injector setups, will now first read in settings from a global INI located next to the DLL, and then override with settings from an INI located next to game EXE, so settings can be overridden per-game
  • (0.200.4) now uses DLSS SDK for DLSS structs/properties instead of needing to define them ourselves
  • (0.200.3) improved how wrapped functions call back to original functions, helps fix crashes on certain games
  • (0.200.3) moved OverrideAppId to DLSSPresets section
  • (0.200.3) added ResolutionOffset setting to INI, allows offsetting the DLAA resolution by certain amount, for games that don't like DLAA working at full resolution (eg. Crysis 3 & RE Engine games...)
  • now supports wrapping the nvngx.dll file itself, via exported wrapper functions (this requires signature checks to be disabled via EnableSignatureOverride.reg)
  • improved code so that nvngx.dll wrapper method & the older hooking methods can both share the same logic
  • improved OverrideDlssHud hook to let it work across more versions of DLSS
  • UltraQuality override: allows setting a value for the normally-unused UltraQuality setting, most games don't support this, but a small number may detect the overridden value & make an Ultra Quality setting available to use (eg. Hogwarts Legacy)
  • OverrideDlssDll setting: can override the path that DLSS will be loaded from, may help with games that don't allow the included nvngx_dlss.dll file to be modified (eg. with RGL launcher), so you could set this to make it load DLSS from a different path instead
  • reorganized hooks into separate namespaces for each DLL that we apply changes to (nvngx & nvngx_dlss)
  • uses better method to watch for DLSS DLLs being loaded in, using LdrRegisterDllNotification instead of LoadLibrary hooks, reduces chances of issues with other DLL plugins
  • changed priority of ForceDLAA vs DLSSQualityLevels, values set in DLSSQualityLevels will now always override the ForceDLAA setting, if the section is enabled.
  • improved support for older drivers that might be missing certain DLSS functions
  • changes how hooks are performed: instead of our DLL handling the hook install / removal ourselves (needing us to keep track of the DLL loads/unloads), we instead just hook the DllMain of the module being hooked, which lets us know when the module is loaded/unloaded without needing any bookkeeping - this should help with games that might load & unload the DLSS modules during runtime
  • updated to newer safetyhook to improve stability of code hooks

Changes in 0.123.10+

  • (0.123.11) fixes issue with crashes on launch if log file can't be written (eg. with WinStore apps)
  • added DLSSQualityLevels section, where custom ratios can be set for each DLSS level
  • changed ForceAutoExposure to OverrideAutoExposure, can now be force disabled if desired
  • added WatchIniUpdates setting, which can try applying any updated dlsstweaks.ini settings during the session
  • added OverrideDlssHud setting, can allow force enabling/disabling the DLSS debug display without needing to edit registry
  • added DisableDevWatermark setting to hide watermark message when using dev DLL
  • improved function definitions, may improve stability (tiny chance that it might help with titles that had issues with DLAA previously)
  • switched hook library to safetyhook, use spdlog for logging
  • use ini-cpp to read INI instead of GetPrivateProfile functions, fixes issues with INI being locked & not being writable by external apps during runtime
  • now uses _beginthreadex instead of CreateThread for our main hook init thread

0.123.10+ could have some regressions in certain titles compared to 0.123.9 - if you find a title that used to work but now doesn't, please let me know on the issues page.


Game Compatibility

A list of games tested against DLSSTweaks can be found here: https://github.com/emoose/DLSSTweaks/wiki/Games

If you try out any game that isn't mentioned there please let us know how it went on the issue tracker!

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!


Binaries can be found on NexusMods: https://www.nexusmods.com/site/mods/550?tab=files

The files listed below are just source code for the DLL, binaries for use with games can be found in the link above.

DLSSTweaks - DLSSTweaks 0.200.3

Published by emoose over 1 year ago

(old release, see https://github.com/emoose/DLSSTweaks/releases for latest version)

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking scaling ratios & DLSS 3.1 presets.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1 is required for DLSSPresets overrides to be applied, but DLAA forcing / scaling ratio tweaks should work fine across 2.x too - DLSS framegen is unaffected by this DLL.

This has been tested with Nvidia driver series 528 & 531 - earlier driver versions are known to have issues, recommend updating if DLSSTweaks doesn't seem to apply to any games for you.

Many hours have gone into developing/testing/rewriting, along with debugging issues with different games.
If the tweaks have helped improve your experience, please consider buying a coffee to support future development, & help to obtain more games to test with. Thank you!


DLSSTweaks now offers two different ways to setup the wrapper, which should help let it work across different system configs:

nvngx.dll

The easiest way to install is via nvngx.dll wrapping, this should work fine for the majority of games without needing to rename any files first.

However this method requires a small registry tweak to be applied first to stop DLSS from checking the nvngx.dll signature.

The included EnableSignatureOverride.reg can install this tweak for you (the tweak can also be removed via the DisableSignatureOverride.reg)

After setting up the registry tweak you should be able to just copy the nvngx.dll & dlsstweaks.ini files next to your game EXE, and it should hopefully load into the game fine.

(this is the same registry tweak used by CyberFSR2 to load in their custom nvngx.dll, haven't seen any reports of issues caused by it, but if you play games that use anti-cheat software you may want to use the method below, instead of installing this global registry tweak)

dxgi.dll/etc

Alternatively if you don't wish to use the registry tweak, the older methods of loading in via dxgi.dll etc wrapping are also still supported.
(this older method requires more code hooks to be applied though, which may have issues on certain systems, the nvngx.dll method is believed to be more compatible)

You can switch to these wrappers by renaming the included nvngx.dll file to one of the supported filenames, the dlsstweaks.ini includes a list of filenames you can try.


If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

Note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first - the included INI explains each of the available tweaks, along with alternate filenames you can rename the DLSSTweaks DLL to.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.


Changes in 0.200.xx:

  • (0.200.3) improved how wrapped functions call back to original functions, helps fix crashes on certain games
  • (0.200.3) moved OverrideAppId to DLSSPresets section
  • (0.200.3) added ResolutionOffset setting to INI, allows offsetting the DLAA resolution by certain amount, for games that don't like DLAA working at full resolution (eg. Crysis 3 & RE Engine games...)
  • now supports wrapping the nvngx.dll file itself, via exported wrapper functions (this requires signature checks to be disabled via EnableSignatureOverride.reg)
  • improved code so that nvngx.dll wrapper method & the older hooking methods can both share the same logic
  • improved OverrideDlssHud hook to let it work across more versions of DLSS
  • UltraQuality override: allows setting a value for the normally-unused UltraQuality setting, most games don't support this, but a small number may detect the overridden value & make an Ultra Quality setting available to use (eg. Hogwarts Legacy)
  • OverrideDlssDll setting: can override the path that DLSS will be loaded from, may help with games that don't allow the included nvngx_dlss.dll file to be modified (eg. with RGL launcher), so you could set this to make it load DLSS from a different path instead
  • reorganized hooks into separate namespaces for each DLL that we apply changes to (nvngx & nvngx_dlss)
  • uses better method to watch for DLSS DLLs being loaded in, using LdrRegisterDllNotification instead of LoadLibrary hooks, reduces chances of issues with other DLL plugins
  • changed priority of ForceDLAA vs DLSSQualityLevels, values set in DLSSQualityLevels will now always override the ForceDLAA setting, if the section is enabled.
  • improved support for older drivers that might be missing certain DLSS functions
  • changes how hooks are performed: instead of our DLL handling the hook install / removal ourselves (needing us to keep track of the DLL loads/unloads), we instead just hook the DllMain of the module being hooked, which lets us know when the module is loaded/unloaded without needing any bookkeeping - this should help with games that might load & unload the DLSS modules during runtime
  • updated to newer safetyhook to improve stability of code hooks

Changes in 0.123.10+

  • (0.123.11) fixes issue with crashes on launch if log file can't be written (eg. with WinStore apps)
  • added DLSSQualityLevels section, where custom ratios can be set for each DLSS level
  • changed ForceAutoExposure to OverrideAutoExposure, can now be force disabled if desired
  • added WatchIniUpdates setting, which can try applying any updated dlsstweaks.ini settings during the session
  • added OverrideDlssHud setting, can allow force enabling/disabling the DLSS debug display without needing to edit registry
  • added DisableDevWatermark setting to hide watermark message when using dev DLL
  • improved function definitions, may improve stability (tiny chance that it might help with titles that had issues with DLAA previously)
  • switched hook library to safetyhook, use spdlog for logging
  • use ini-cpp to read INI instead of GetPrivateProfile functions, fixes issues with INI being locked & not being writable by external apps during runtime
  • now uses _beginthreadex instead of CreateThread for our main hook init thread

0.123.10+ could have some regressions in certain titles compared to 0.123.9 - if you find a title that used to work but now doesn't, please let me know on the issues page.


Game Compatibility

A list of games tested against DLSSTweaks can be found here: https://github.com/emoose/DLSSTweaks/wiki/Games

If you try out any game that isn't mentioned there please let us know how it went on the issue tracker!

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!


Binaries can be found on NexusMods: https://www.nexusmods.com/witcher3/mods/7925?tab=files

The files listed below are just source code for the DLL, binaries for using with games can be found in the link above.

DLSSTweaks - DLSSTweaks 0.200.2

Published by emoose over 1 year ago

(E: old release, check https://github.com/emoose/DLSSTweaks/releases for latest)

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking scaling ratios & DLSS 3.1 presets.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1 is required for DLSSPresets overrides to be applied, but DLAA forcing / scaling ratio tweaks should work fine across 2.x too - DLSS framegen is unaffected by this DLL.

This has been tested with Nvidia driver series 528 & 531 - earlier driver versions are known to have issues, recommend updating if DLSSTweaks doesn't seem to apply to any games for you.

Many hours have gone into developing/testing/rewriting, along with debugging issues with different games.
If the tweaks have helped improve your experience, please consider buying a coffee to support future development & help to obtain more games to test with. Thank you!


DLSSTweaks now offers two different ways to setup the wrapper, which should help let it work across different system configs:

nvngx.dll

The easiest way to install is via nvngx.dll wrapping, this should work fine for the majority of games without needing to rename any files first.

However this method requires a small registry tweak to be applied first to stop DLSS from checking the nvngx.dll signature.

The included EnableSignatureOverride.reg can install this tweak for you (the tweak can also be removed via the DisableSignatureOverride.reg)

After setting up the registry tweak you should be able to just copy the nvngx.dll & dlsstweaks.ini files next to your game EXE, and it should hopefully load into the game fine.

(this is the same registry tweak used by CyberFSR2 to load in their custom nvngx.dll, haven't seen any reports of issues caused by it, but if you play games that use anti-cheat software you may want to use the method below, instead of installing this global registry tweak)

dxgi.dll/etc

Alternatively if you don't wish to use the registry tweak, the older methods of loading in via dxgi.dll etc wrapping are also still supported.
(this older method requires more code hooks to be applied though, which may have issues on certain systems, the nvngx.dll method is believed to be more compatible)

You can switch to these wrappers by renaming the included nvngx.dll file to one of the supported filenames, the dlsstweaks.ini includes a list of filenames you can try.


If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

Note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first - the included INI explains each of the available tweaks, along with alternate filenames you can rename the DLSSTweaks DLL to.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.


Changes:

  • now supports wrapping the nvngx.dll file itself, via exported wrapper functions (this requires signature checks to be disabled via EnableSignatureOverride.reg)
  • improved code so that nvngx.dll wrapper method & the older hooking methods can both share the same logic
  • improved OverrideDlssHud hook to let it work across more versions of DLSS
  • UltraQuality override: allows setting a value for the normally-unused UltraQuality setting, most games don't support this, but a small number may detect the overridden value & make an Ultra Quality setting available to use (eg. Hogwarts Legacy)
  • OverrideDlssDll setting: can override the path that DLSS will be loaded from, may help with games that don't allow the included nvngx_dlss.dll file to be modified (eg. with RGL launcher), so you could set this to make it load DLSS from a different path instead
  • reorganized hooks into separate namespaces for each DLL that we apply changes to (nvngx & nvngx_dlss)
  • uses better method to watch for DLSS DLLs being loaded in, using LdrRegisterDllNotification instead of LoadLibrary hooks, reduces chances of issues with other DLL plugins
  • changed priority of ForceDLAA vs DLSSQualityLevels, values set in DLSSQualityLevels will now always override the ForceDLAA setting, if the section is enabled.
  • improved support for older drivers that might be missing certain DLSS functions
  • changes how hooks are performed: instead of our DLL handling the hook install / removal ourselves (needing us to keep track of the DLL loads/unloads), we instead just hook the DllMain of the module being hooked, which lets us know when the module is loaded/unloaded without needing any bookkeeping - this should help with games that might load & unload the DLSS modules during runtime
  • updated to newer safetyhook to improve stability of code hooks

Changes in 0.123.10+

  • (0.123.11) fixes issue with crashes on launch if log file can't be written (eg. with WinStore apps)
  • added DLSSQualityLevels section, where custom ratios can be set for each DLSS level
  • changed ForceAutoExposure to OverrideAutoExposure, can now be force disabled if desired
  • added WatchIniUpdates setting, which can try applying any updated dlsstweaks.ini settings during the session
  • added OverrideDlssHud setting, can allow force enabling/disabling the DLSS debug display without needing to edit registry
  • added DisableDevWatermark setting to hide watermark message when using dev DLL
  • improved function definitions, may improve stability (tiny chance that it might help with titles that had issues with DLAA previously)
  • switched hook library to safetyhook, use spdlog for logging
  • use ini-cpp to read INI instead of GetPrivateProfile functions, fixes issues with INI being locked & not being writable by external apps during runtime
  • now uses _beginthreadex instead of CreateThread for our main hook init thread

0.123.10+ could have some regressions in certain titles compared to 0.123.9 - if you find a title that used to work but now doesn't, please let me know on the issues page.


Game Compatibility

A list of games tested against DLSSTweaks can be found here: https://github.com/emoose/DLSSTweaks/wiki/Games

If you try out any game that isn't mentioned there please let us know how it went on the issue tracker!

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!


Binaries can be found on NexusMods: https://www.nexusmods.com/witcher3/mods/7925?tab=files

DLSSTweaks - DLSSTweaks 0.123.11

Published by emoose over 1 year ago

(E: old release, check https://github.com/emoose/DLSSTweaks/releases for latest)

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking scaling ratios & DLSS 3.1 presets.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1 is required for DLSSPresets overrides to be applied, but DLAA forcing / scaling ratio tweaks should work fine across 2.x too - DLSS framegen is unaffected by this DLL.

This has been tested with Nvidia driver version 528.49 - earlier driver versions are known to have issues, recommend updating if DLSSTweaks doesn't seem to apply to any games for you.


To install just extract dxgi.dll & dlsstweaks.ini next to your game executable, then edit the dlsstweaks.ini file with the tweaks you want to apply.
(note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first)

If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

The included INI explains each of the tweaks available, along with alternate filenames you can try for the DLL if it doesn't seem to load in properly, or if you want to use it alongside another DLL wrapper such as ReShade.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.

If this release helped you out at all, consider buying a coffee to help support future mods & tweaks :)


Changes in 0.123.10+

  • (0.123.11) fixes issue with crashes on launch if log file can't be written (eg. with WinStore apps)
  • added DLSSQualityLevels section, where custom ratios can be set for each DLSS level
  • changed ForceAutoExposure to OverrideAutoExposure, can now be force disabled if desired
  • added WatchIniUpdates setting, which can try applying any updated dlsstweaks.ini settings during the session
  • added OverrideDlssHud setting, can allow force enabling/disabling the DLSS debug display without needing to edit registry
  • added DisableDevWatermark setting to hide watermark message when using dev DLL
  • improved function definitions, may improve stability (tiny chance that it might help with titles that had issues with DLAA previously)
  • switched hook library to safetyhook, use spdlog for logging
  • use ini-cpp to read INI instead of GetPrivateProfile functions, fixes issues with INI being locked & not being writable by external apps during runtime
  • now uses _beginthreadex instead of CreateThread for our main hook init thread

0.123.10+ could have some regressions in certain titles compared to 0.123.9 - if you find a title that used to work but now doesn't, please let me know on the issues page.


Game Compatibility

A list of games tested against DLSSTweaks can be found here: https://github.com/emoose/DLSSTweaks/wiki/Games

If you try out any game that isn't mentioned there please let us know how it went on the issue tracker!

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!

DLSSTweaks - DLSSTweaks 0.123.10

Published by emoose over 1 year ago

Old release, latest release can be found at https://github.com/emoose/DLSSTweaks/releases

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking scaling ratios & DLSS 3.1 presets.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1 is required for DLSSPresets overrides to be applied, but DLAA forcing / scaling ratio tweaks should work fine across 2.x too - DLSS framegen is unaffected by this DLL.


To install just extract dxgi.dll & dlsstweaks.ini next to your game executable, then edit the dlsstweaks.ini file with the tweaks you want to apply.
(note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first)

If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

The included INI explains each of the tweaks available, along with alternate filenames you can try for the DLL if it doesn't seem to load in properly, or if you want to use it alongside another DLL wrapper such as ReShade.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.

If anyone would like to support future development my ko-fi page is https://ko-fi.com/emoose, your help is appreciated!


Changes in 0.123.10

  • added DLSSQualityLevels section, where custom ratios can be set for each DLSS level
  • changed ForceAutoExposure to OverrideAutoExposure, can now be force disabled if desired
  • added WatchIniUpdates setting, which can try applying any updated dlsstweaks.ini settings during the session
  • added OverrideDlssHud setting, can allow force enabling/disabling the DLSS debug display without needing to edit registry
  • added DisableDevWatermark setting to hide watermark message when using dev DLL
  • improved function definitions, may improve stability (tiny chance that it might help with titles that had issues with DLAA previously)
  • switched hook library to safetyhook, use spdlog for logging
  • use ini-cpp to read INI, fixes issues with INI not being writable by external apps during runtime
  • now uses _beginthreadex instead of CreateThread for our main hook init thread

0.123.10 might have some regressions in certain titles compared to 0.123.9 - if you find a title that used to work but now doesn't, please let me know on the issues page.


Game Compatibility

A list of games tested against DLSSTweaks can be found here: https://github.com/emoose/DLSSTweaks/wiki/Games

If you try out any game that isn't mentioned there please let us know how it went on the issue tracker!

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!

DLSSTweaks - DLSSTweaks 0.123.8

Published by emoose over 1 year ago

Old release, latest release can be found at https://github.com/emoose/DLSSTweaks/releases

Wrapper DLL that can force DLAA onto DLSS-supported titles, along with tweaking the presets used by DLSS 3.1.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1 is required for DLSSPresets overrides to be applied, but the DLAA feature should work fine across 2.x too - DLSS framegen is unaffected by this DLL.


To install just extract dxgi.dll & dlsstweaks.ini next to your game executable, then edit the dlsstweaks.ini file with the tweaks you want to apply.
(note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first)

If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

The included INI explains each of the tweaks available, along with alternate filenames you can try for the DLL if it doesn't seem to load in properly, or if you want to use it alongside another DLL wrapper such as ReShade.

NOT RECOMMENDED FOR ONLINE GAMES
The way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by most anti-cheats.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.

If anyone would like to support future development my ko-fi page is https://ko-fi.com/emoose, any help is appreciated :)


Changes:

  • (0.123.8) added hooks for NVSDK_NGX_VULKAN functions, hopefully letting it work on vulkan titles (experimental, please let me know if you find a game that doesn't work with it!)
  • (0.123.7) add ForceAutoExposure setting
  • (0.123.6) initial release

You can find a list of games that users have reported working or not at https://github.com/emoose/DLSSTweaks/wiki/Games

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!

If you try out any game that isn't mentioned here please let us know how it went on the issue tracker!

DLSSTweaks - DLSSTweaks 0.123.7

Published by emoose over 1 year ago

Wrapper DLL that can force DLAA onto most DLSS-supported titles, along with tweaking the presets used by DLSS 3.1.

To install just extract dxgi.dll & dlsstweaks.ini next to your game executable, then edit the dlsstweaks.ini file with the tweaks you want to apply.
(note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first)

If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

The INI should explain each of the tweaks available, along with alternate filenames you can use for the DLL if it doesn't seem to load in properly, or if you want to use it alongside another DLL wrapper.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1 is required for DLSSPresets overrides to be applied, but the DLAA feature should work fine across 2.x too - right now I'm not sure how this might affect DLSS framegen at all.

NOT RECOMMENDED FOR ONLINE GAMES - the way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by even the simplest anti-cheat.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.

If anyone would like to support future development my ko-fi page is https://ko-fi.com/emoose, any help is appreciated :)


Changes:

  • (0.123.7) add ForceAutoExposure setting
  • (0.123.6) initial release

Titles known to hopefully work with it:

  • Dying Light 2
  • Shadow of the Tomb Raider
  • Judgment
  • Lost Judgment
  • Death Stranding
  • Cyberpunk 2077
  • Red Dead Redemption 2 (rename to XInput9_1_0.dll)
  • Plague Tale Requiem (UE4)
  • Chernobylite (UE4)
  • Ghostwire Tokyo (UE4)
  • God of War
  • Uncharted 4
  • Horizon Zero Dawn
  • Deathloop
  • Ready Or Not (UE4)
  • HITMAN 3

The UE4 titles mentioned above might need to be renamed to XInput1_3.dll or XInput9_1_0.dll to work.

Titles that may have issues with DLAA:

  • FIST: Forged in Shadow Torch
  • Mortal Shell
  • Minecraft Bedrock Edition (DLAA causes screen cut in half)

DLSS3.1 preset overrides may still work fine in the titles above.

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!

If you try out any game that isn't mentioned here please let us know how it went on the issue tracker!

DLSSTweaks - DLSSTweaks 0.123.6

Published by emoose over 1 year ago

Wrapper DLL that can force DLAA onto most DLSS-supported titles, along with tweaking the presets used by DLSS 3.1.

To install just extract dxgi.dll & dlsstweaks.ini next to your game executable, then edit the dlsstweaks.ini file with the tweaks you want to apply.
(note that the default dlsstweaks.ini won't apply any tweaks, it must be edited first)

If the DLL loaded in fine there should be a dlsstweaks.log file created next to the EXE, if that shows up then hopefully the tweaks should be active.
(you can use the DLSS dev DLL to verify that they're actually active, the INI file has more info about that)

The INI should explain each of the tweaks available, along with alternate filenames you can use for the DLL if it doesn't seem to load in properly, or if you want to use it alongside another DLL wrapper.

Most titles that support DLSS2+ should hopefully work fine with this, but if you find any that don't, or have any other issues, feel free to post in the issue tracker.

DLSS 3.1 is required for DLSSPresets overrides to be applied, but the DLAA feature should work fine across 2.x too - right now I'm not sure how this might affect DLSS framegen at all.

NOT RECOMMENDED FOR ONLINE GAMES - the way the hook works is similar to how some game cheats modify games, it's very likely to be picked up by even the simplest anti-cheat.

Please don't reupload this DLL elsewhere, linking to the releases page would be appreciated.

If anyone would like to support future development my ko-fi page is https://ko-fi.com/emoose, any help is appreciated :)


Titles known to hopefully work with it:

  • Dying Light 2
  • Shadow of the Tomb Raider
  • Judgment
  • Lost Judgment
  • Death Stranding
  • Cyberpunk 2077
  • Red Dead Redemption 2 (rename to XInput9_1_0.dll)
  • Plague Tale Requiem (UE4)
  • Chernobylite (UE4)
  • Ghostwire Tokyo (UE4)
  • God of War
  • Uncharted 4
  • Horizon Zero Dawn
  • Deathloop
  • Ready Or Not (UE4)
  • HITMAN 3

The UE4 titles mentioned above might need to be renamed to XInput1_3.dll or XInput9_1_0.dll to work.

Titles that may have issues with DLAA:

  • FIST: Forged in Shadow Torch
  • Mortal Shell
  • Minecraft Bedrock Edition (DLAA causes screen cut in half)

DLSS3.1 preset overrides may still work fine in the titles above.

Many thanks to DoktorSleepless & OrganizationOk4516 for helping test the DLL with most of these games before release!

If you try out any game that isn't mentioned here please let us know how it went on the issue tracker!


VirusTotal results for dlsstweaks-0.123.6.zip (0/63): https://www.virustotal.com/gui/file-analysis/ZDI0OWYyOGJjNjEzNzBiZTZkN2YwYmQ5OTI5Nzg4N2I6MTY3NjMwNzIzMA==