Skip to content

DLSSTweaks 0.200.2

Compare
Choose a tag to compare
@emoose emoose released this 14 Mar 20:52
· 110 commits to master since this release

(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!

Buy Me a Coffee at ko-fi.com


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