GithubHelp home page GithubHelp logo

emoose / dlsstweaks Goto Github PK

View Code? Open in Web Editor NEW
1.1K 1.1K 17.0 478 KB

Tweak DLL for NVIDIA DLSS, allows forcing DLAA on DLSS-supported titles, tweaking scaling ratios & DLSS 3.1 presets, and overriding DLSS versions without overwriting game files.

License: MIT License

C 0.20% C++ 46.41% CMake 4.11% Batchfile 0.05% C# 49.22%
dlss game nvidia

dlsstweaks's Introduction

Shwmae!

ko-fi

Ydy fy enw i emoose, welcome to my page!

Recent things I've helped work on:

  • DLSSTweaks - allows customizing Nvidia DLSS via INI and a config tool.
  • NvTrueHDR - tool to enable RTX HDR in non-HDR games.
  • MPC-VR RTX - adds Nvidia VideoSuperResolution & VideoHDR support to MPC-HC/MPC-BE video renderer.
  • PrototypeFix - fixes for the games Prototype & Prototype 2 to help them work on modern machines.
  • MGSHDFix - improvements for the MGS Master Collection PC release.

Xbox / Xbox 360

  • xbox-reversing - templates for 010 Editor & parsers for pulling apart various Xbox360 formats such as XEX/STFS/GPD
  • xvdtool - for manipulating the XVD images used by Xbox One
  • Xb2XInput - adds support for Xbox OG controllers to Windows
  • xbox-winfsp - for mounting Xbox/Xbox360-specific file systems natively under Windows
  • idaxex/xex1tool - disassemble X360 XEX executables from almost any point in time (pre-beta Xenon executables onward!)
  • stfschk - for validating the integrity of Xbox360 STFS packages
  • ExCrypt - for interoperability with X360's XeCrypt cryptography suite
  • XbRecUnpack - for fully unpacking Xbox/Xbox360 recoveries/installers
dolphin.mp4

Game Modding

Also helped take some games apart to try making them moddable too:

  • sh2proxy - a mod for Silent Hill 2, bringing fixups for modern machines (outdated - use Silent Hill 2 Enhanced Edition instead!)
  • MBINCompiler - a tool for (de)serializing No Mans Sky data files
  • DOOMExtract - for extracting/repacking DOOM 2016 resources
  • DoomLegacyMod - unlocks nearly all DOOM 2016 console-commands/variables, and even reimplements a few (noclip, infiniteHealth, noTarget...)
  • ElDewrito - a client modification/derestrictor for Halo Online.
  • Improved Lighting Shaders - for Fallout New Vegas, allows extending the per-cell light-limit and helps eliminate lighting issues
  • Automata-LodMod - helps improve graphical quality in NieR Automata & patches in various improvements
  • re4_tweaks - a wrapper DLL that improves the PC RE4 UHD port, bringing fixes & improvements that have been requested for years!

Finally, some of my UE4 mods/tools:

  • DQXIHook - mod for Dragon Quest XI that unlocks the UE4 dev console & allows loose-file loading.
  • DQXIS-SDK - mod for Dragon Quest XI S that allows easier modding through loose-file loading & enabling the dev-console, along with some code/resolution fixes & added game features.
  • DQXIAsset - a tool for (de)serializing / unpacking / decompiling the UE4 DataTables used by DQXIS.
  • Arise-SDK - a mod for Tales of Arise that can improve graphics & help modders via dev-console access/loose-file loading.
  • FFVIIHook - mod for FFVII Remake that unlocks dev-console & allows much easier INI modding.
  • Bloodstained Dialogue & Character Viewer Resolution Fix - Increases render resolution of models during dialogue sequences & menu screens, no more locked 1080p!

Contact

Email: abc (at) cock . li - my replies may get marked as spam by most providers though.

Discord: unfortunately I don't really use Discord much, contact over email is much more preferable!

dlsstweaks's People

Contributors

doktorsleepelss avatar emoose avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dlsstweaks's Issues

Dead Space (2003 remake) working

Just wanted to report I tried the version 0.200.2 in Dead Space (the recently released remake), the things i tested (alternative higher than default quality resolutions) works fine, uses preset D as default for all except ultra performance, which uses F. Did not have to use OverrideApp or OverrideAutoExposure. Using the default nvngx.dll filename with no problem.

It still has the same issues as DLSS had to begin with in this game, that some of the ui that is rendered "in-world" so to say, get blurry.

These objects are ui and signs on doors and other holographically projected objects, these do get less blurry with alternative higher resolutions.
Still, a workaround is needed to make these things less blurry and closer to native on TAA, a known one is setting antialiasing transparency multisampling to 0x00000008 AA_MODE_REPLAY_MODE_ALL and specific negative LOD bias in nvidia profile inspector (-0.5 for playing at default 0.66667 quality for example, around -1.0 for balanced, -1.5 for performance, and maybe -1.8 or something for ultra perf, i have not experimented with a value for this for my own personal higher quality setting, but i assume 0.85 would look better with it set to something like -0.2, and 0.75 or 0.7619 would be ok good with -0.3).

Doing this, however, results in the side effect that the glitch effects and Moiré pattern on these objects and on menues gets stronger (these things have a Moiré pattern and "glitching" to give the effect of an imperfect holographic projection in the air).
Running it in something 0.7619047619 or 0.85 does look almost identical to to native on TAA except for these objects (although their sharpness does improve over the default quality mode) which has been an issue with dlss in this title since the release so it doesn't have anything to do with DLSSTweaks as such.

This is the first time i use github for anything else than downloading software. I hope the informal format of this report is ok.

Edit: ok so now I also tried DLAA, F is the default preset for that as expected. The blurry in-world UI objects are still blurry, not as bad as in the DLSS levels.
Setting it to D however, sharpened things up quite a lot, but then some signs in the game with scrolling text get ghosting on the letters when behind menues (maybe it does a very slight blur or some other transparent overlay on distant objects when menu is up or you view those scrolling signs through transparent objects) i've never noticed this before in the othe dlss settings but it's not something that would be easy to spot. Anyway, such a scenario won't happen that often in game unless you have the menu open and you are looking at such specific details in the world behind you at the same time...

DLAA with D really actually looked great even without any of the trickery in nvidia profile inspector that i mentioned above, it is softer and has any surfaces where lighting or reflections give this "boiling" jitter (this is the same effect as rainy streets in Cyberpunk 2077, which gets significantly improved, (but still occasionally visible) in that game only by DLSS) it smoothes that boiling jitter over which is a big improvement over TAA, performance is basically the same, in a room with 84 fps on TAA native high quality, DLAA with either D or F both gave 83 FPS at the exact same place, so a tiny tiny drop in fps, but D does look better on DLAA here, F just blurs everything too much at least on 2560x1440.

I'll keep adding more info here if as I play around with this and try out the other presets and find anything useful. I might also try and see if using transparency multisampling 0x0000008 or a slight negative LOD bias setting could help, but i don't see why since we're now at native, maybe it just doesn't understand that when dlss is turned on but on the other hand that is exactly when such a thing would be needed to be enabled...

Works in No Man's Sky

Rename it to XInput9_1_0.dll.
I only tested DLSS 3.1.1.
I didn't play it very long, but it appeared to work flawlessly.

Deadlock in ThreadFreezer::ThreadFreezer()

I was diagnosing a startup deadlock in Atomic Heart and discovered the code being used to freeze all threads during hook install deadlocks 9 times out of 10.

I went through hell implementing this logic safely in Special K and the big takeaway from my experience is NOT to use Toolhelp32 snapshots. They are slow as hell to capture and unsafe to walk from within a running process. In truth, that API is meant to be used by a separate debugger process on a suspended process.

NtQuerySystemInformation (SystemProcessInformation, ...) should be used instead.

If you would like, I can provide you with a working implementation written in C.


The only way I was able to get DLSSTweaks working in Atomic Heart (Microsoft Store version, if it matters) was by disabling the SuspendThread (...), Get|SetThreadContext (...) and ResumeThread (...) calls.

I effectively gimped your thread freezing system, but deadlock goes away and hooks are successful despite multiple threads running.

I believe if you throw out the dependency on Toolhelp32 and snapshot using NtQuerySystemInformation instead, you can walk over these threads and safely suspend/resume.


Perhaps an INI option to forgo freezing and thawing threads during hook installation could serve as a temporary solution?

Monster Hunter Rise (1446780) breaks with DLAA

In Monster Hunter Rise (1446780) the screen is black when setting ForceDLAA = true, the UI is working fine (as expected).

everything but the UI is black


On a side note: the game also needs OverrideAppId = true if you want to override the DLSSPresets for Quality to C e.g.

Hogwarts legacy gets stuck at starting warning message

Hogwarts legacy gets stuck at starting warning message or crashes on start with some of the builds of DLSSTeaks, particularly builds after DLSSTweaks 0.123.10.

DLSSTweaks versions tested:

0.123.8 ✅

0.123.9beta4 ✅

0.123.10beta2 ❌ stuck on warning screen
0.123.10beta4 ❌ stuck on warning screen

0.123.11 ❌ stuck on warning screen

0.123.12beta3 ❌ stuck on warning screen
0.123.12beta3a ✅
0.123.12beta4 ❌ crash on start
0.123.12beta4a ❌ crash on start
0.123.12beta4b ❌ stuck on warning screen
0.123.12beta5 ❌ stuck on warning screen

It as been reported by some people that this bug is randomly sidesteped by trying to start the game multiple times. I have not experienced this, the versions that don't work are consisted in their behaviour.

I am not using anuy other software appart from DLSSTweaks.

DLSS version 3.1.1 (v1) from tech power up
Computer specs and relevant software versions:
GPU: Nvidia 2070 Super Driver 528.49
CPU: intel 10980XE
Windows 11 Version 22H2 Build 22621.1265
DLSS version 3.1.1 (v1) from tech power up

Previous discussion on this problem on these threads:
#28 #22

INI reloading

Might be nice if the DLL could monitor the INI for updates and then apply any new preset settings automatically, since there's no way to change preset at runtime with the release DLL.

Would probably need some way of keeping track of the games NVSDK_NGX_Parameter instance, we do hook the nvngx calls that are responsible for creating that, so hopefully can find a way to do it safely.

Sharpness Implementation

Is it possible to add a sharpness value to the .ini? Most of the games I have used DLSS for have no way to adjust its sharpness and end up looking quite blurry with no way to improve it other than using reshade

onscreen indicator ?

I followed the instructions in the ini file to get the reg file to enable the onscreen indicator that shows DLSS working but even after adding it no game I've tested seems to show the indicator, Are there any extra steps ?

EDIT

Nevermind got it to work, The reg file only adds the entry into the registry but doesn't seem to add the correct value, You need to change the value in regedit -->

HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\Global\NGXCore --> ShowDlssIndicator

Then set the value of this to 1024 in decimal, Press ok and close it... now the pertinent info should show onscreen on the lower left.

OverrideDlssHud pattern doesn't work on 3.1.1v2

Seems they changed things around the DLSS HUD drawing code in 3.1.1v2, so now the pattern we use to allow changing it at runtime (via WatchIniUpdates) doesn't work any more, and it falls back to the RegQueryValue hook instead (which only allows changing the hud status once, during startup...)

The pattern there wasn't that great anyway since it only matched 3.1.1, earlier DLLs used almost the same code but with different offsets inside which broke the pattern, was going to try adding a way to search for that changing offset so the same pattern could work on those versions too, but seeing as 3.1.1v2 removed this code entirely now I guess finding a different method would be better.

Atomic Heart issues with latest version

in 0.123.8, it opens normally and frame generation works perfectly. However, when trying the newer version 0.123.11, it gets stuck in the first studio screen and stops the game (even the process gets stuck as well no changelogs).

The new Versions...

Hello,
Thanks for the updates and the great idea.

I actually understood everything that a good alternative for the registry entry was found as an alternative to the dgxi.dll hook. (What worked before with the dgxi.dll) The only thing I don't understand is: When I've run the registry command, which files i need? the dlsstweaks.ini and the newest nvngx.dlss version?
what i have is: dlsstweaks.ini, the newest nvngx.dlss version and the enabled reg file, so iam fine?
The instructions are a bit confusing because it doesn't say whether I need the nvngx.dll or not with a reg file. name it to nvngx.dll - I thought you don't need it with the reg command.

best regards

Metro Exodus Enhanced seems to work fine

Needs OverrideAppId = true to respect AI model.

Works with both the developer DLL and the original 2.1.55 DLL.

I only played it for a few minutes but didn't notice any artifacts.

You must rename dxgi.dll to Xnput1_3.dll for the hook to work.

Crysis 3 Remastered not playing nice

Using version 0.123.8, can't get DLAA to work.

If the dll is named dxgi.dll and ForceDLAA is set to true, DLSS is disabled entirely, resulting in a raw aliased image.
If the dll is named XInput9_1_0, the game silently crashes before it can boot.
All other dll names recommended in the ini won't inject at all. (blank entry in the log file, and the DLSS indicator overlay reads DLSS at Quality)

Suspect this is caused by the game using a DX11/Vulkan hybrid render system. (where it uses DX11 for main rendering but also uses Vulkan to handle ray tracing)

edit: Should probably mention I'm using the 3.1.1.0 DLSS dll. (dev build so I can use the DLSS indicator overlay after activating it in the registry)

Is it possible to override resolution scale? E.g. make DLSS Q render at 80% instead of 67%

I'm not really happy with how big the gap between DLSS Quality (66%) and native (100%) resolution is.

Could it be possible to adjust the scale factors of each DLSS factor with this tool? For example, overriding DLSS Quality to 75% would allow 1080p -> 1440p upscaling instead of 960p -> 1080p like it is right now.

There are very few games where you can freely adjust the internal resolution, such as Control. But I'd love to have this in any DLSS game, especially Cyberpunk.

Ultra Quality setting (test build available)

E: test build can be found below at #22 (comment)

In this recent reddit thread some people seem to be reporting games that allow selecting Ultra Quality: https://www.reddit.com/r/nvidia/comments/11763es/do_we_need_more_dlss_options/

It's a little strange to me though since when I tried forcing the PerfQualityValue parameter to UltraQuality to find what DLSS would set the resolution to, it always returned 0x0 resolution for me - maybe it does get enabled for certain appIds passed to DLSS though?

Some mentioned that it only seemed to show up after updating to DLSS3.1 (eg. this thread, where they also posted a screenshot of Ultra Quality showing an option in game), we know that 3.1 can configure presets per-appId, so maybe ultra quality was also now enabled for some apps too.

If anyone owns one of the games mentioned there (Hogwarts Legacy, RDR2?) and can test with the dev DLSS 3.1 DLL to see what "Ultra Quality" shows as on the overlay it'd be appreciated.


E: oh it's possible that DLSSTweaks itself might be the cause, if the game is detecting the available quality levels by asking DLSS for the resolution of each of them, DLSS by itself would have returned 0x0, but DLSSTweaks with DLSSQualityLevels enabled would pass 77% of screen res:

0.77f, // UNSURE: NVSDK_NGX_PerfQuality_Value_UltraQuality

When I removed UltraQuality I figured it wasn't a big deal to leave that there in case future games do include it (and also left in the code to read value from INI too, just removed it from the INI itself), but if there are current games that this helps expose the setting in maybe it could be worth re-adding back to INI, with a note or something next to it.

Assistance with documenting the use of DLSS Tweaks with Windows games on Linux

DLSS Super Resolution for Windows games works on Linux through translation layers. And DLSS Tweaks works too. But in some cases some extra work is required to get DLSS Tweaks working. And I wanted to help provide documentation on how to do this.

I just haven't done a pull request before, and I'm not even sure where to put the Linux documentation. So I thought I could maybe share the information here and maybe @emoose or someone else could add it to the documentation?


I should start by explaining how Windows games on Linux works, why DLSS Tweaks sometimes doesn't work, and some terminology so if you're not familiar with Windows games on Linux, you can still hopefully understand the documentation.

On Linux, there are a set of translation layers. The most common ones being WINE, DXVK, and VKD3D. WINE handles all the CPU side translations that need to occur to get Windows builtin functions working on Linux. DXVK, VKD3D do the graphics API translations.

This combination of translation layers and other tools are can be bundled together by other people for you to use (E.G. Proton provided by Valve) or you can make your own combinations. And since most/all these translations layers are open source, modifications can be made by different people/companies to suit their needs. And this adds some complexity to the instructions on how to get DLSS Tweaks working on Linux, hence why there are multiple sections explaining how to get DLSS Tweaks working.

Now, why doesn't DLSS Tweaks work out of the box on Linux? Because WINE ignores some dll files unless they are explicitly called by an application. And some of those dll files are the names that DLSS Tweaks dll needs to be renamed too to work. So we need to open winecfg (A WINE configuration tool) and tell WINE to try loading the DLSS Tweaks dll instead of ignoring it. And this fixes the issue.


Terminology that may be useful

  • "Proton" is the name given to a custom build of WINE + DXVK + VKD3D + other stuff made by Valve for use in the "Steam Play" program/initiative. It is distributed through Steam on Linux.

  • "Lutris" is a GUI app that allows for easy management of all this WINE + addons thing for applications that aren't installed through Steam (Lutris exists because it can be cumbersome setting up and configuring a WINE installation for gaming. And Proton can behave a bit weirdly when launched from outside Steam due to certain modifications made by Valve).

  • A "wineprefix" is a folder thatstores all the useful information for the fake Windows environment that WINE uses. Most/all the user configurable stuff for WINE goes in there. You install an app with WINE, it automatically tries installing it to a C drive, which is a folder located inside the wineprefix. That app puts files in the AppData folder, it goes in a AppData folder inside a "user" folder in the wineprefix. You make a Windows registry edit in "WINE", that change gets saved to a file in the wineprefix. You configure which Windows version WINE should report itself as, that setting gets saved to the WINE prefix. I hope you get the idea. A wineprefix holds most/all the user configurable data relevant to your fake Windows environment. Also, you can have multiple wineprefix. For example, Steam's Proton creates a wineprefix for every Windows game installed.

  • "WineTricks" is an GUI application to help do some regular tasks inside a wineprefix.

  • "ProtonTricks" is WineTricks, but with extra features to make it easier to work on games installed through Steam and run with Proton.


Here are the steps for getting DLSS Tweaks working on Linux:

  1. Setup your translation layers, install the game, and setup environment variables to enable DLSS in your DLSS supported game, and test it. (Check a different guide for this, the complexity and exact instructions change depending on certain factors)
  2. Install DLSS Tweaks in the game directory, just like Windows. In some cases this works, in others it doesn't. For example, it doesn't work in Red Dead Redemption 2 where the dll needs to be renamed to XInput9_1_0.dll. If DLSS Tweaks doesn't work, then you will need to consult one of the guides from below.

Steam - Proton

This guide is for games you installed through Steam and are running with Proton.

  1. Install ProtonTricks.
  2. Open the ProtonTricks GUI
  3. Select the game you're having issues with (For me, Red Dead Redemption 2)
  4. Select the option Select the default wineprefix
  5. Select the option Run winecfg
  6. In the window that pops up, go to the Libraries tab.
  7. In the New override for library section select or type in the name of the DLSSTweaks DLL and press Add
  8. In the Existing overrides find the DLL you added, select Edit and ensure it's set to Native then Builtin (This step is probably unnecessary as it seems to be the default for new items)
  9. Finally Apply the changes, close the window and ProtonTricks, and run the game. It should hopefully work.

Here is a short video demonstrating the process:

Using.Protontricks.to.enable.DLSS.Tweak.mp4

Lutris

This is games you installed through Lutris with WINE and are using Lutris to continue maintaining it.

  1. Open Lutris
  2. Select your application.
  3. At the bottom of the Lutris UI, click on the upward arrow beside the WINE glass and select Wine configuration
  4. Do steps 6-9 from the Steam - Proton section.

Here is a short video demonstrating the process:

Using.Lutris.to.enable.DLSS.Tweak.mp4

Standalone WINE - Option 1

This if for if you are using a standalone build of WINE with nothing special to manage it.

  1. Run winecfg in a terminal.
  2. Do steps 6-9 from the Steam - Proton section.

Standalone WINE - Option 2

This if for if you are using a standalone build of WINE with nothing special to manage it.

  1. Install Winetricks.
  2. Open Winetricks.
  3. And do steps 4-9 from the Steam - Proton section.

There's no video since it looks almost identical to the ProtonTricks method due to ProtonTricks just being WineTricks but with extra tools to help with Proton games.

Generic

This is for all other services that use WINE as their backend for getting Windows games running on Linux.

  1. Find out where the wineprefix is for your game.
  2. Run winecfg on it, ensuring you use the WINE binary you use with that prefix to start winecfg.
  3. Do steps 6-9 from the Steam - Proton section.

Note: The order in which I presented each option was in order of most common to least common. This leads to a little bit of a weird layout. For example, Plain WINE - Option 1 should probably be at the top of the list as it's the simplest, every other method would reference it, and every other method is just a different way of getting too winecfg (where Plain WINE - Option 1 just opens winecfg directly). But I put Proton then Lutris at the top because those are way more common than using WINE without some kind of manager (Steam and Lutris are managers)

Note 2: Some guides are missing for other popular options. For example the "Heroic Launcher" (An open source tool that allow the installing and running of games from the Epic Games Store) or Bottles (This appears to be similar to Lutris)

Frame Generation Support

I know it would probably be hard to do but is there a possibility to add frame generation to games that don't support it natively, as it would be massive for any 40 series owners in boosting their framerate.

Enable DLAA only when selecting Ultra Performance mode

Is this possible as an option? It would be nice to have the ability to enable DLAA while still having the other modes available in the in-game options without needing to restart the game. I say ultra performance specifically becuse most people don't use that mode anyway.

I haven't seen any difference in mip map quality when selecting different modes with the DLAA mod enabled.

EDIT: this has implemented with the custom ratios.

Extremely low FPS in cyberpunk with DLAA preset compared to Native without DLSS

Hello I am using a rtx 4080 running Cyberpunk 2077 at native 4k 55-65fps without ray tracing.

Using DLSSTweaks DLAA preset or setting custom to 1 reduces the fps from 55-65 to 30-35 fps, literally halves performance.

Some information:
Max settings without ray tracing.
While using DLSSTweaks maxing out ray tracing only lowers fps from 35fps to 28fps.

If it helps I use autohdr, because cyberpunk HDR implementation is unacceptable.

It works fine in other games only cyberpunk affected.

Activating frame generation only increases fps from 35 to 55fps, while without disstweaks it goes from 60-115fps.

Assetto Corsa Competizione - DLAA enabled

Assetto Corsa Competizione does work with DLAA.
dlsstweaks.ini edited with:
ForceDLAA = true
OverrideAppId = true
DLAA = F (default is C)
Worked together with DLSS 3.1.1 DLL

DLSS 3.1.11 released today

Anything new in this latest dlss version? Is there a page somewhere that details the changes in each version of dlss file?

Works not with Hitman 3 (for me)

Hello,

I tried this mod with Hitman 3. For me, it does not work. I put the files in the main folder. But in the dlsstweaks.log file, it only reads:

[2023-02-23 18:42:25.784] [info] DLSSTweaks v0.123.11, by emoose: DLL wrapper loaded, watching for DLSS library load...

In other games like Ready or not, it works fine. What Did I do wrong? Please help.

Thanks!

Working With Hellblade: Senua's Sacrifice.

Needs to be put in this folder.

C:\Program Files (x86)\Steam\steamapps\common\Hellblade\HellbladeGame\Binaries\Win64

DLL needs to be renamed 'XInput1_3.dll'.

`DLSSTweaks v0.123.8, by emoose: DLL wrapper loaded, watching for DLSS library load...

DLSSTweaks v0.123.8, by emoose: DLL wrapper loaded, watching for DLSS library load...

DLSSTweaks v0.123.8, by emoose: DLL wrapper loaded, watching for DLSS library load...
Applied _nvngx.dll DLL export hooks, waiting for game to call them...
DLSS functions found & parameter hooks applied!
Settings:

  • ForceDLAA: true
  • ForceAutoExposure: true
  • OverrideAppId: true
    `

0.123.11 NOT working whilst 0.123.8 working

For all my games, I have been using 0.123.8. All working great without issue, DLAA+F preset etc.

Updated to 0.123.11 for all my games. Same setup, same ini. However, it just does not work with this version.

  • in the log, for some games it's blank, for other games it can not find the dlss.dll
  • All .ini are the same. Even when I only change the DLSSTweaks .dll but keep the ini's, its not working. Using 0.123.8's dll makes it working again. So its definetly a .dll problem.

What I think is, it just doesn't load the DLSSTweak's DLL into the game. I'm not sure why tho. Whilst its working great with previous version.

Games that was working for 0.123.8 but not working with 0.123.11 now:
-Ready or Not
-Hitman 3
-Red Dead Redemption 2

Tested both 3.1.1 Public and 3.1.1 DEV version DLL

How to change used Preset?

It seems like it doesnt apply when written like:
`
[DLSSPresets]
; Overrides the DLSS preset used for each quality level, set to Default to leave the preset set to whatever game/DLSS decided for it
; Or set to A / B / C / D / F to try forcing that preset instead.
; Presets were added in DLSS 3.1, similar to the old method of swapping out different DLSS DLL versions, now instead you can just set a preset for it

; Unfortunately DLSS might override these presets with ones decided by NVIDIA instead
; Enabling OverrideAppId above might help with those (at least it fixes DL2)
; (recommend testing with the dev DLSS DLL along with ngx_driver_onscreenindicator.reg to make sure the preset is being overridden properly)

; Note that some games could have graphical artefacts when certain DLSS presets are overridden onto them
; There's not much DLSSTweaks can do to help with that unfortunately, hopefully trying a different preset could help

DLAA = F
Quality = F
Balanced = F
Performance = F
UltraPerformance = F
`
Do i need to write the preset name in some other fashion?

FIST does actually work

You can remove this one from the non-working list. There's two exes in this game and I just noticed I put the dlsstweak files in the foler with the wrong exe. For all ue4 games so far, it's never the exe in the main foler. It's usually the other exe with Win64-Shipping.exe in the name in a different folder.

Doom Eternal not working, but...

I did a search and saw someone verified it worked in a post by emoose that was closed a week or 2 ago. I tried the dev dll with OverrideDlssHud enabled, but nothing showed up...

Use both DLSSTweaks and other DLL injection tools (DXVK, SpecialK, etc.)

Recently I have been messing about with things like Reshade, DXVK and SpecialK to tweak games which are not running correctly.

Some recent examples of this is that Assassins Creed Odyssey gains something like 10-20% performance by simply using DXVK on Windows 10 (it is technically meant to be used in Wine on Linux). This got me into some kind of optimization mode, and I wanted to attempt to use at least one or two of the known gaming tweak tools to see what it did in different games.

But as they are all different projects, with different purposes, I have been having a bit of trouble using them in the way I want.

Many of these tools alter the same file, also. The "dxgi.dll" file (I believe this is mostly for DirectX11-12 games). This makes it impossible (to my knowledge) to use even just two tweaks if they both alter that same file.

I stumbled upon the "GShade" project, which looked promising. It combined Reshade with an easy way to also install DXVK, as well as allowing you to keep track of which games have these tweaks locally (since DXVK is literally only a single file, it can get difficult to keep track of which games have the tweak "installed"). But if you haven't read it yet, GShade is essentially dead.

Now there is also this project which also uses the "dxgi.dll" file to allow the use DLAA in games which don't have it by default and it's just getting to be too much...

So what I am simply wondering is if you know of a way to combine DLSSTTweaks with these other projects, or perhaps if there is any tool to help either/both keep track of which games have which tweaks enabled and to combine multiple tweaks (e.g. both DXVK and DLSSTweaks) in the same .dll file (e.g. "dxgi.dll")?

Note: I believe there is a way to use both Reshade and SpecialK without specifically using the "dxgi.dll" file, but for DXVK I do not believe there is such a workaround.

Mount & Blade II: Bannerlord works well

Using dlsstweak's default dxgi.dll, DLSS 3.1.1 dll, and ForceDLAA setting = true, DLAA is working for Bannerlord. Works in singleplayer and any multiplayer mod which does not use BattlEye anti cheat (works fine in cRPG mod). Trying to launch native multiplayer Bannerlord will crash because of BattlEye flagging the dxgi.dll.

Visual quality is great and does not suffer from the same scaling/ghosting problems that current patch Bannerlord has when using dlss.

Issue with Modern Warfare 2019 and Battlefield 5

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?

Quality level scaling overrides (test build available)

E: a test build with this implemented can be found below: #2 (comment)


ForceDLAA works by overriding the resolution DLSS tells the game to use at each quality level - it might be nice if the DLL could also let the user specify the resolution/ratio for each level too.

Not completely sure whether DLSS actually works at any ratio or not though, might have some limits in place that only let it work at the normal resolutions for each quality level, will need to look into it some more.

Which DLSS preset to use...

Is there a list of games that people tested and show what is the best DLSS preset to use in said games? Or is there a way to determine which preset is the best?

Take Shadow of Tomb Raider for example - a game that has particularly bad anti-aliasing implementations. Both TAA and SMAA 4X are blurry. Forced DLAA through DLSSTweaks looks way better. I tested different presets and found that A to D gave crisper picture compared to F (not sure about other potential drawbacks though). F is normally recommended for DLAA but it seems like it's not the case in this game.

Beta versions (0.200.9.0-beta1)

Was brought up how betas are pretty scattered on here right now, mainly because I'm usually posting test/beta builds to try helping with a specific issue someone is having, or to get feedback on a specific feature.

Some might want to keep up to date with the latest builds though so will try and keep this post updated when I post up a new build somewhere too.

Latest:
DLSSTweaks 0.200.9.0-beta1: #132 (comment)

Previous:
DLSSTweaks 0.200.8.2: https://www.nexusmods.com/site/mods/550?tab=files
DLSSTweaks 0.200.8.2-beta1: #102 (comment)
DLSSTweaks 0.200.8.1: https://www.nexusmods.com/site/mods/550?tab=files
DLSSTweaks 0.200.8-beta1: #101 (comment)
ConfigTool 0.200.7.6: #85 (comment)
DLSSTweaks 0.200.7-beta4: #85 (comment)
ConfigTool 0.200.7.5: #85 (comment)
0.200.7-beta3: #88 (comment)
0.200.7-beta2a: #88 (comment)
0.200.7-beta2: #88 (comment)
0.200.7-beta1: #88 (comment)
0.200.6: https://github.com/emoose/DLSSTweaks/releases/tag/0.200.6
0.200.5-beta4: https://github.com/emoose/DLSSTweaks/releases/tag/0.200.5-beta4
0.200.5-beta3: https://github.com/emoose/DLSSTweaks/releases/tag/0.200.5-beta3
0.200.5-beta2: https://github.com/emoose/DLSSTweaks/releases/tag/0.200.5-beta2
0.200.5-beta1: https://github.com/emoose/DLSSTweaks/releases/tag/0.200.5-beta1
0.200.4 release: https://github.com/emoose/DLSSTweaks/releases/tag/0.200.4
0.200.3 release: https://github.com/emoose/DLSSTweaks/releases/tag/0.200.3
0.200.3beta1: #44 (comment)
0.200.2 release: https://github.com/emoose/DLSSTweaks/releases/tag/0.200.2
0.200.2alpha3: #44 (comment)
0.200.2alpha2: #44 (comment)
0.200.2alpha: #33 (comment)
0.200.0alpha: #33 (comment)
12beta5: #22 (comment)
12beta4b: #22 (comment)
12beta4a: #22 (comment)
12beta4: #22 (comment)
12beta3a: #28 (comment)
12beta3: #22 (comment)
12beta2: #22 (comment)
12beta1: #22 (comment)

Dlsstweaks doens't work in MW2 / WZ2

when putting the files to the game folder, after initiating the game, it freezes after the ricochet anti cheat screen and doesn't load the game

Rockstar Games Launcher Red Dead Redemption 2 issue fix idea/Disable DLSS sharpening

Currently vanilla RDR2 uses DLSS version 2.2.10. As far as I know, the DLL hasn't been officially updated a single time ever since it was implemented into the game, in the July 2021 update. Steam users can easily update their DLSS by replacing the DLL in the directory, without any further worry. However, users who own the game on the Rockstar Games Launcher have to constantly worry about the replaced DLL being automatically downgraded by updates, and the game's directory folder having its permissions completely screwed over by said updates. The only way to play the game on RGL with an updated DLSS file is to wait for the game to finish downgrading itself, clicking the "Play" button inside the launcher, and then after a few seconds finally replacing the file in the directory with the updated DLSS DLL, right before the game opens. Keep in mind, the next time you want to play the game again you will have to let the launcher update the game to downgrade the file once again, and do the same process all over again.

So here's my idea. What if DLSSTweaks automatically updated the DLSS DLL to the latest version every time the game was booted up, right before it actually opens, and automatically fixed the directory folder permissions? I feel like this would be the perfect solution for this issue RGL players have been having for months.

Also, completely unrelated to this issue, but an option to disable the DLSS sharpening would be an awesome addition.

Options to enable/disable DLAA while still rendering 100% resolution (or higher)

I am aware this is an odd request. But some games force TAA, notably Hitman 3. I'm wondering if this DLSS workaround can be used to render the image at 100% resolution and just not apply DLAA after. Thus rendering an aliased image at native resolution.

DLAA is still an improvement over TAA, so either way I'm happy with what DLSSTweaks achieves.

Alternate nvngx.dll method used by CyberFSR2 - game compatibility?

Just recently saw that CyberFSR2 / DLSS2FSR uses a different method to hook DLSS functions by wrapping the nvngx.dll instead - I didn't think that was possible since DLSS SDK code had a bunch of signature checking stuff inside, but seems they found a registry edit that can disable that, really wish I saw this earlier 😅

Wrapping nvngx.dll would make installing this a lot easier, and would probably reduce number of hooks we need too (and probably help with some of the hanging issues some people seem to get)
I wonder how compatibility is with that though, it's possible the method they use to disable sig check might have only been added in later DLSS SDK versions, so older games might have issues with it...

Does anyone know of any games that have issues with CyberFSR2? I see some games mentioned on their issues page but not much detail on them, some of them might just be issues with games detecting AMD and disabling DLSS option too.

Maybe can find a way to let this work as both an nvngx.dll wrapper & keep the existing dxgi.dll+DLL-load-watch method, but if the nvngx.dll method is mostly compatible I'd be happy to remove the DLL-watching code.

E: ah found a spreadsheet linked in an issues page there, seems to work across most games under NV cards at least.

Add option to run OTA DLSS update function

DLSS3.1 added a new way of updating OTA, but it requires the game dev to call into a DLSS function to work, so likely won't help any older titles that don't get updated by their developers...

Could probably add an option to make our DLL call into it, but it is mentioned that calling it might take some time to complete while it checks for updates + downloads them, so maybe would need to add some kind of prompt to let user know that updates are being checked/downloaded.

Not entirely sure how much it'd be worth it though, NV might only ever push updates for the AppIDs that are actually signed up for it, maybe worth testing things out in a couple months once they start pushing updates there.

Request: auto exposure setting in dlsstweaks.ini

This would be nice to control because some games have it off by default. I know people like using the dev dll to turn it on for RDR2 becuse hair looks better. I've also noticed turning it on reduces ghosting in some games that have it off like A Plague Tale Requiem.

OverrideDlssHud doesn't work

So I downloaded the latest 3.1.1 dlss file from TechPowerUp, pasted in the game's folder (Modern Warfare 2019 - quite an old game), pasted the dlsstweaks.ini and dxgi.dll also, edited the dlsstweaks.ini (ForceDLAA = true, OverrideDlssHud = 1) and then launched the game, enabled dlss under game's settings, but I saw no indication that the game was running in DLAA mode. If I exit the game then I see a log file named dlsstweaks, but it's empty inside. So is DLAA working? Why does the command line OverrideDlssHud = 1 not seem to do anything?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.