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.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DLSS external config / tweakables (without DLSSTweaks)

emoose opened this issue · comments

These have to be configured before running the game/app, and changing during runtime won't have any effect until a relaunch (though DLSSTweaks can change some of these during runtime for you fine)

I'm not sure how complete this is, just the ones I know of, if anyone finds any other tweakables please let us know!

Registry

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\Global\NGXCore

  • ShowDlssIndicator (DWORD): controls DLSS HUD overlay, 0 will disable, 1 will enable for dev DLSS DLL, 1024 (0x400 in hex) will enable for normal game DLLs (can be changed during runtime with DLSSTweaks OverrideDlssHud setting)
  • ShowDlssWeights (DWORD): unknown use
  • NgxCubinDisableResourceCache (DWORD): unknown use
  • DLSSG_IndicatorText (DWORD): checked by dlssg 3.7, unknown use (dlssg uses the ShowDlssIndicator value to show indicator already, unsure what other indicator this might enable)

Misc things which can be enabled via the registry files in DLSS github repo:

  • EnableLogPathOverride
  • LogPath
  • LogLevel
  • EnableConsoleLogging

NvProfile / DRS

3.1.11+ started reading some useful settings from DRS (eg. allowing preset/scale to be overridden), but settings must be added to the main global/base profile to work.

Code was added in 3.6.0+ to also read per-game values too, but that code seems to have a bug that stops it working if the game profile was created in NVCP (bottom part of #129 (comment) post)

(TL;DR: they only provide the game EXE filename to NVAPI, instead of the full file path as NVAPI docs recommend - any games added through NVCP will require full path for NVAPI to find them, so this currently won't locate NVCP-added profiles properly...)

The DLSSTweaksConfig.exe tool can let you configure most of these as you like, if you extract the tool to its own folder without any dlsstweaks.ini present it can act as a simple tool to let you tweak them, & also preview what the resulting resolution will be.

Alternately they can also be changed with Nvidia Profile Inspector if you provide a CustomSettingsNames.xml that includes them, I've posted my own XML to https://www.nexusmods.com/site/mods/781?tab=files (optional files section)

Known setting IDs:

Snippet ID Name Type Info
DLSS 0x10E41DF3 NGX_DLSS_OVERRIDE_RENDER_PRESET_SELECTION DWORD 0 - 6 which goes to disabled/preset A/B/C/D etc
DLSS 0x10E41DF4 FORCE_DLAA Boolean overrides all DLSS quality levels to scale 1.0
DLSS 0x10E41DF5 "scaling ratio from DRS" Float valid range 0.33333333f to 1.0f, overrides all DLSS quality levels to the given scale
DLSSG 0x10E41DF6 NGX_DLSSG_PRIVATE_FLAGS DWORD flags, 0x1 = DISABLE_SCENE_CHANGE_DETECTION, 0x2 = ENABLE_MENU_THRESHOLD_OVERRIDE
DLSSD 0x10E41DF7 NGX_DLSS_RR_OVERRIDE_RENDER_PRESET_SELECTION DWORD DLSS preset to use when DLSSD is overriding DLSS
All 0x10AFB76A "Fast UAV clear" DWORD flags (1 / 2 / 4)
All 0x10AFB76B Log path? string logging related, might be log filename
DLSS 0x10AFB76C OVERRIDE_PERF_TO_9X Boolean seems to just change Performance to work as UltraPerf instead
DLSSG 0x104596A1 NGX_DLSSG_FULLSCREEN_MENU_DETECTION Boolean
DLSSG 0x104596A2 NGX_DLSSG_FULLSCREEN_MENU_DETECTION_COVERAGE_ID Float Requires ENABLE_MENU_THRESHOLD_OVERRIDE flag
DLSSG 0x104596A3 NGX_DLSSG_FULLSCREEN_MENU_DETECTION_ALPHA_ID Float Requires ENABLE_MENU_THRESHOLD_OVERRIDE flag

INI files

C:\ProgramData\NVIDIA\NGX\models\nvngx_config.txt

The registry/DRS settings above are mostly all handled by the nvngx_dlss/g/d file included with games, but the NV drivers nvngx.dll file also reads from the above config file too.

The way games load DLSS is by loading nvngx.dll & requesting nvngx.dll to load in DLSS for them - nvngx then usually loads in the nvngx_dlss.dll from the games folder.

However if the nvngx_config.txt is massaged properly you can force nvngx.dll to load in your own version of nvngx_dlssX.dll instead of the one included with game, letting you setup a global DLSS file for most (all?) games to use - #137 goes into this some more, a script to handle setting it up is also linked there.

This has been used in the past by NV to OTA upgrade the DLSS for some games like CP2077, as mentioned at https://www.reddit.com/r/nvidia/comments/qv8j0c/megathread_from_nvidia_dlss_23_to_nvidia_image/hl2z083/

(sadly this OTA mechanism has been left unused since late 2021 or so, since around the public DLSS github release... posted some more about it on guru3d: https://forums.guru3d.com/threads/.439761/page-142#post-6221425)