beeradmoore / dlss-swapper

GNU General Public License v3.0
1.62k stars 58 forks source link

[Feature request] DLSSTweaker Support #132

Open Battler624 opened 1 year ago

Battler624 commented 1 year ago

If possible I want DLSS.Swapper to include features of DLSSTweaks for easier modifications.

so that it updates the DLSS and puts a DLSSTweaks config next to it that you can modify within DLSS Swapper.

beeradmoore commented 8 months ago

Hey @Battler624 , sorry for the late reply. I don't use DLSSTweaks, can you give me more info in what config it'd place and why?

Rool-IO commented 8 months ago

An easy and viable solution would be to have DLSS Swapper look for dlsstweaks.ini files in installed game folders and read their dll override settings so it can display the version with an asterisk or something next to it to indicate the dll files aren't swapped but pointed to by DLSSTweaks (currently it can override DLSS SR and FG dlls, I don't think RR is supported yet).

Apart from allowing direct editing of the dlsstweaks.ini files for DLSS "swapping" (=pointing), any more than that sounds out of the scope of DLSS Swapper.

Though a nice QoL addition would be DLSS Swapper allowing to launch the corresponding game's installed DLSSTweaksConfig.exe.

beeradmoore commented 8 months ago

Does DLSSTweaks replace the DLSS DLL with a file that then points to DLSS DLL located elsewhere? Is that what you mean by points? Eg. swapping that with DLSS Swapper will stop your DLSSTweaks from working?

Detection and editing should be possible. Will need the new game settings layout which 1.1 will bring.

Rool-IO commented 8 months ago

Almost (it's not a DLSS DLL) Kind of (yes) Definitely not (since it's not a dll DLSS Swapper can swap)

Though I'd recommend you to check DLSSTweaks Github page for actually precise information on how it works and better yet, try it out on your own if you must. That's certainly better than me with approximate answers since all I really understand about it is it will "tell" a game to use other DLSS DLL(s) by hooking into the game (using its own DLL to do that but it can have a bunch of names) and pointing the game to what it'll assume to be the file it expects.

Given dlsstweaks.ini contains the full path of the DLSS DLL(s) to use, DLSS Swapper could read that, then fetch version numbers and so on.

Ideally, together with the above basic idea, DLSS Swapper could also act as a local "repo" for DLSS DLLs to be "pointed" to by DLSSTweaks (though those would need to not be zipped) making downloading, swapping/pointing, testing, reverting far more user friendly and quicker : New DLSS version, download it, click a game, choose "swap" or "override", if override then edit dlsstweaks.ini and save, use a dedicated clickable asterisk/mark/logo/button/whatever to open DLSSTweaksconfig.exe etc.

All this from DLSS Swapper, no need to use a file explorer even once. Happy DLSS Swappers !

Looking forward to that game settings layout, sounds interesting.

Battler624 commented 8 months ago

Rool-IO pretty much said everything I can say about this.

The whole idea is DLSSTweaks allows forcing DLAA in games that support DLSS (Even if they dont allow DLAA) and OfCourse you can switch DLSS presets which isn't as intriguing.

Rool-IO commented 8 months ago

Reading back the asterisk idea, it feels quite uninspired. I think the obvious and clearest way of adding an interactive indication is :

The only potential problem I can think of is DLSS Swapper not reflecting manual changes users could do by only interacting with DLSS Tweaks on its own unless clicking Refresh but it's not so different from the current caveat of manually swapping DLLs or games being updated (files verified/overwritten) and DLSS Swapper still reflecting any found version as a Swap (even by clicking Refresh) but it has no way of knowing it's not anymore.

Users need the habit of Resetting DLLs before updating games to avoid mismatches and potentially wrong version Resets afterwards but that's yet another topic.

Rool-IO commented 5 months ago

To add some QoL, hovering on the "Tweaks" button could (should ?) display current dll override paths set in the dlsstweaks.ini in a little explorer-like overlay as a handy quick glance at a useful informative detail on current config.

Super Resolution => "path" [Overriding/Not Overriding] Frame Generation => "path" |Overriding/Not Overriding]

User friendly, instantly legible and I would guess easy to implement :)

OT: Thinking of the eventual dlss swapper support of FG which dlsstweaks has already, I'm hoping both will end up supporting RR too even if it's only for a handful of games for now, both softs in tandem with full support would be a perfect QoL pair..

OT2: Have you read the FSR 3.1 announcements ? The launch of dedicated API and a DLL based update path opens the door to DLSS Swapper becoming DLL Swapper if you know what I mean ;) and are even remotely interested in supporting FSR's too, of course.

beeradmoore commented 5 months ago

Leaving this here as a note, via @alexismarret in #211

It would be great to be able to select a DLSS preset (A, B, C...) for a given DLSS version

beeradmoore commented 5 months ago

@Rool-IO , that may be possible it just all depends on how much integration with DLSSTweaks can be shoved in here before it becomes problematic. eg. I wouldn't want DLSS Swapper functionality to start failing because DLSSTweaks was updated and now is incompatible.

If it's just displaying the contents of dlsstweaks.ini on hover (assuming it's not a lot of data) is that enough or is it better to read the ini and display key info?

Rool-IO commented 5 months ago

@beeradmoore , It shouldn't be problematic unless Emoose changes how the ini is structured but it hasn't yet changed for the key infos afaik. The DLSS preset support could be integrated without the risks of updates breaking it, per-dll version sounds like a headache though - but would be great if you can figure out how to implement that.

There's a lot of commented lines in the ini so unfortunately DLSS Swapper would need to search for the two dll override lines which are "nvngx_dlss = path" and "nvngx_dlssg = path".

Rool-IO commented 5 months ago

https://github.com/emoose/DLSSTweaks/issues/137#issue-2230226349 DLSSTweaks or not, I believe this would be of interest to you for DLSS Swapper ;)

beeradmoore commented 5 months ago

Very interesting, thanks for sharing. NVIDIA have said for a long time that they will use DLSS that they distribute and update it on a per game basis (see #81) but I've never seen it actually do it. Maybe they are finally starting to do it.

If they do I doubt they will keep a whitelist updated for every version for every game. Even their auto game settings tool thing is broken for a bunch of games (shows settings that don't exist, doesn't show new settings that have been added, etc). Which means I wonder what happens if CP2077 comes with (hypothetical) DLSS 3.4, NVIDIA overrides it to 3.5, can DLSS Swapper still swap in 3.7.