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.26k stars 21 forks source link

Crysis 3 Remastered not playing nice #8

Open ShinChaosBahamut opened 1 year ago

ShinChaosBahamut commented 1 year ago

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)

ShinChaosBahamut commented 1 year ago

Extra note (noticed the "Releases" page was updated to reference Crysis 3 Remastered: ForceAutoExposure did nothing. And it's not that the dll is causing rendering issues so much as it's full-blown stopping DLSS from doing anything.

emoose commented 1 year ago

Another user posted a screenshot where it seemed to start rendering for them but had a lot of issues, does it get this far for you at all?

https://twitter.com/Litt_Mattster/status/1625548957039591424

ShinChaosBahamut commented 1 year ago

That's pretty much what's going on. No DLSS/DLAA, no anti-aliasing of any kind. And no DLSS Indicator overlay either, which means DLSS just isn't being loaded at all when ForceDLAA's set to true.

emoose commented 1 year ago

Ahh right, hmm.

no DLSS Indicator overlay either, which means DLSS just isn't being loaded at all when ForceDLAA's set to true.

I had a similar issue testing debug build of DLSSTweaks on SOTTR, turned out my hook code was failing to return a value properly, didn't matter on release build some reason but game started having issues show up with debug - wonder if maybe that could be affecting Crysis somehow.

The build at https://github.com/emoose/DLSSTweaks/issues/2#issuecomment-1429805042 should have that code fixed, if that still doesn't help maybe try with ForceDLAA = false and change one of the new DLSSQualityRatio values to 1.0 instead, maybe game doesn't like it when ForceDLAA makes all the quality levels the same.

ShinChaosBahamut commented 1 year ago

No dice, enabling DLSSQualityRatio and setting the used value to 1.0 disengages DLSS as well. (and this is regardless of which DLSS dll build I'm using, dev or enduser)

ForceDLAA also doesn't work with the build you linked. Still think its weird "Using DX11 but also using Vulkan to handle ray tracing" bit is at least partly responsible for this.

doktorsleepelss commented 1 year ago

Check if it works with any ratio other than 1. Try 0.95 for example. Mortal Shell is game that refused to work with DLAA or 1, but it does with any other ratio.

ShinChaosBahamut commented 1 year ago

0.95 worked. Not good enough for my literal OCD though. XD

doktorsleepelss commented 1 year ago

0.999 gets me an internal resolution of 2559x1439. Close enough I guess.

doktorsleepelss commented 1 year ago

Actually, try this ghetto workaround. Make only ultra performance mode a ratio of 1. Leave the other modes with their stock ratio. Now start up the game with quality mode already enabled. And when you're in the game playing in a loaded up level with a working DLSS, go to the options and change the mode to ultra performance. Maybe DLAA will stick if you do it this way.

Mortal Shell just plain crashes if I start a game with DLAA already enabled. But if I start the game in quality, and then change it to DLAA (ultra perf with ratio of 1) while already playing, it seems to work fine.

ShinChaosBahamut commented 1 year ago

No dice. Setting DLSS in-game to the mode I set to 1.0 causes DLSS to disengage as well.

Man, game just HATES any and all attempts to convert DLSS into DLAA it seems.

ShinChaosBahamut commented 1 year ago

Tried with version 0.123.10; naming the dll to dxgi, xinput9_1_0, or winmm causes the game to crash before booting, regardless of whether DLAA's being forced or not. Naming the dll to anything else causes it to not try to inject in the first place.

emoose commented 1 year ago

@ShinChaosBahamut hm, could you try the beta2 and beta3 releases from https://github.com/emoose/DLSSTweaks/issues/2#issuecomment-1434093512 & https://github.com/emoose/DLSSTweaks/issues/2#issuecomment-1436107437, and see whether either of those works? Guessing the changes in beta3 could be causing issues, but not really sure.

ShinChaosBahamut commented 1 year ago

Turned out it was something else causing the crash. (took care of that though) Not that it matters as forcing DLAA/setting the mode scaling to 1.0 still results in DLSS disengaging.

Think I'll consider this a wash and just deal with SMAAT2X.