emoose / 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
1.25k stars 21 forks source link

Issue with Modern Warfare 2019 and Battlefield 5 #40

Open TheSpider12 opened 1 year ago

TheSpider12 commented 1 year ago

Modern Warfare 2019: With the new dlss file (version 3.1.1) in the game folder, the game will automatically replace that with its original dlss file (version 2.3.4) every time it is launched, meaning preset overrides won't work. Not sure if DLAA still works with the old version.

Battlefield 5: This game doesn't automatically reject the new dlss file like the above, but with new file in place, the in-game DLSS toggle is greyed out. Putting the old dlss file (1.0.13) back and the toggle is available, but again, meaning preset overrides won't work and uncertain whether DLAA still works with the old version.

So DLSSTweaks doesn't seem to work well with these two games. For Modern Warfare 2019, it doesn't matter because SMAA T2x should be picked over DLAA anyway for ray tracing to work. But for Battlefield 5, only TAA is available so DLAA may be better here if we can get it to work. How to confirm is DLAA is working in Battlefield 5 with the old version of dlss file?

Z4ndyz commented 1 year ago

Multiplayer games will usually reject anti attempt at modifying any of it's game DLL as an anti-cheat measure and usually the anti-cheat will get you first or file replacement. Also it's highly advised not to try to do anything for games that have multiplayer or an anti-cheat as it might get you ban, or at the very least it's breaking ToS/EULA and if they really want to could also get you banned.

Also as for Battlefield 5 you cannot swap out DLSS version 1 with anything. DLSS 1 worked vastly different and the dlss for those games was on a per-game basis trained and their dll cannot be interchanged at all. DLSS swapping only works for games that were built on DLSS 2 onwards and they definetely do not support DLAA.

TheSpider12 commented 1 year ago

Multiplayer games will usually reject anti attempt at modifying any of it's game DLL as an anti-cheat measure and usually the anti-cheat will get you first or file replacement. Also it's highly advised not to try to do anything for games that have multiplayer or an anti-cheat as it might get you ban, or at the very least it's breaking ToS/EULA and if they really want to could also get you banned.

Also as for Battlefield 5 you cannot swap out DLSS version 1 with anything. DLSS 1 worked vastly different and the dlss for those games was on a per-game basis trained and their dll cannot be interchanged at all. DLSS swapping only works for games that were built on DLSS 2 onwards and they definetely do not support DLAA.

Sorry, regarding your statement "DLSS swapping only works for games that were built on DLSS 2 onwards and they definitely do not support DLAA", I can understand the first part per your explanation about dlss 1, but what does "they definitely do not support dlaa" mean? I thought the purpose of dlsstweaks here is to force dlaa onto dlss 2 games that don't natively support dlaa?

By the way, could you show me how I can know for sure if dlaa forced by dlsstweaks is working? Enabling OverrideDlssHUD in the ini file doesn't seem to do anything. I'm testing this with Modern Warfare. Understand that it's not advisable but I just want to test. The game replaces the dev file with its original dlss file but dlaa should still work, right?

Z4ndyz commented 1 year ago

Forgot a comma in my statement that lead to some confusion my bad.

DLSS 1 -> Can't use DLSSTweaks nor swap DLL files -> no DLAA DLSS 2 -> Tweakable -> Can use DLAA, or if for some reason the game doesn't work it should accept a render scale of 0.99 which is basically native.

About MW, DLAA should work as long as DLSSTweaks injected dll is still hooked up to the game. You can check if the log file is generated it should in the same folder where you put the dll.

Check "dlsstweaks.log" for something such as

[2023-02-23 22:50:57.978] [info] DLSSTweaks v0.123.10, by emoose: DLL wrapper loaded, watching for DLSS library load... [2023-02-23 22:51:05.319] [info] Applied _nvngx.dll DLL export hooks, waiting for game to call them... [2023-02-23 22:51:07.160] [info] DLSS functions found & parameter hooks applied! [2023-02-23 22:51:07.160] [info] Settings:

TheSpider12 commented 1 year ago

Forgot a comma in my statement that lead to some confusion my bad.

DLSS 1 -> Can't use DLSSTweaks nor swap DLL files -> no DLAA DLSS 2 -> Tweakable -> Can use DLAA, or if for some reason the game doesn't work it should accept a render scale of 0.99 which is basically native.

About MW, DLAA should work as long as DLSSTweaks injected dll is still hooked up to the game. You can check if the log file is generated it should in the same folder where you put the dll.

Check "dlsstweaks.log" for something such as

[2023-02-23 22:50:57.978] [info] DLSSTweaks v0.123.10, by emoose: DLL wrapper loaded, watching for DLSS library load... [2023-02-23 22:51:05.319] [info] Applied _nvngx.dll DLL export hooks, waiting for game to call them... [2023-02-23 22:51:07.160] [info] DLSS functions found & parameter hooks applied! [2023-02-23 22:51:07.160] [info] Settings:

  • ForceDLAA: false
  • OverrideAutoExposure: enable
  • OverrideAppId: false . This was an example from when i last played The Witcher 3

Another thing you could do to test is set the axis scale for Ultra Performance/Performance to an abysymal value such as 0.10-0.15 most likely you would see a jittered bunch of blown up pixels but that means that the tweak worked and it set a much lower render scale, that would also mean a render scale of 0.99 or 1 (DLAA) works. If the log file is empty and/or this behaviour doesn't happen then most likely means that the dll didn't get loaded in the first place or was rejected by the anti-cheat straight up.

Ok so I just tested this with Shadow of Tomb Raider and the DLSS debug display HUD appears in-game, and I can see DLAA is being properly applied. However, if I exit the game and open the log file, it's still empty. Weird.

Question: If dlaa is working now, should I replace the dev dlss file with the game's original dlss file? Or I can just keep the dev dlss file there? It mentions in the ini file: "If it works with dev DLL you can then switch to the regular release DLL fine". What does he mean by "regular release DLSS"?

And what does OverrideAutoExposure do? Should I set OverrideAutoExposure = 1 in the ini file for Shadow of Tomb Raider?