Skip to content

Commit 1d2fddb

Browse files
Filoppiemoose
authored andcommitted
Add support for force the "IsHDR" flag on, to aid with game mods that add HDR support into games (e.g. RenoDX/Luma mods)
1 parent a2f36f6 commit 1d2fddb

File tree

5 files changed

+28
-2
lines changed

5 files changed

+28
-2
lines changed

ConfigTool/Main.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ struct IniChange
9292

9393
static string[] BooleanKeys = new[] { "GlobalForceDLAA", "ForceDLAA", "DisableDevWatermark", "VerboseLogging", "Enable", "DisableIniMonitoring", "OverrideAppId", "EnableNvidiaSigOverride", "DynamicResolutionOverride" };
9494

95-
static string[] OverrideKeys = new[] { "OverrideAutoExposure", "OverrideAlphaUpscaling", "OverrideDlssHud" };
95+
static string[] OverrideKeys = new[] { "OverrideAutoExposure", "OverrideAlphaUpscaling", "OverrideDlssHud", "OverrideHDR" };
9696
static string[] OverrideValues = new[] { "Default", "Force disable", "Force enable" }; // 0, -1, 1
9797

9898
string DlssTweaksDll = "";

dlsstweaks.ini

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,15 @@ OverrideSharpening = Default
7575
; (if overlay doesn't seem to draw try setting this to 2 instead to make it use a slightly different method)
7676
OverrideDlssHud = 0
7777

78+
; OverrideHDR: allows forcing DLSS to run in HDR linear space
79+
; This is usually already set up by the game with the correct value:
80+
; SDR mode would expect buffers with sRGB encoded colors (values beyond a 0-1 range might or might not be preserved if present),
81+
; while HDR mode expects linear sRGB/Rec.709 colors with an unlimited range.
82+
; In case a game with DLSS was modded to add HDR support for example, this could help in making DLSS compatible with it,
83+
; in case the game run DLSS in SDR mode after post processing.
84+
; Set to 0 to leave it at default, 1 to force enable, or -1 to force disable
85+
OverrideHDR = 0
86+
7887
; DisableDevWatermark: removes the on-screen watermark shown when using dev DLL
7988
; Can also remove watermark on certain versions of DLSSG/FrameGeneration
8089
; Only useful if you're using a dev version of DLSS, most won't need this

src/DLSSTweaks.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ struct UserSettings
8787
bool overrideSharpeningForceDisable = false;
8888
bool overrideAppId = false;
8989
int overrideDlssHud = 0;
90+
int overrideHDR = 0;
9091
bool disableDevWatermark = false;
9192
bool verboseLogging = false;
9293
std::unordered_map<std::string, std::filesystem::path> dllPathOverrides;

src/UserSettings.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ void UserSettings::print_to_log()
1818
spdlog::info(" - OverrideSharpening: {}", *overrideSharpening);
1919
spdlog::info(" - OverrideAppId: {}", overrideAppId ? "true" : "false");
2020
spdlog::info(" - OverrideDlssHud: {}", overrideDlssHud == 0 ? "default" : (overrideDlssHud > 0 ? "enable" : "disable"));
21+
spdlog::info(" - OverrideHDR: {}", overrideHDR == 0 ? "default" : (overrideHDR > 0 ? "enable" : "disable"));
2122
spdlog::info(" - DisableDevWatermark: {}", disableDevWatermark ? "true" : "false");
2223
spdlog::info(" - ResolutionOffset: {}", resolutionOffset);
2324
spdlog::info(" - DynamicResolutionOverride: {}", dynamicResolutionOverride ? "true" : "false");
@@ -114,6 +115,7 @@ bool UserSettings::read(const std::filesystem::path& iniPath, int numInisRead)
114115
forceDLAA = ini.Get<bool>("DLSS", "ForceDLAA", std::move(forceDLAA));
115116
overrideAutoExposure = ini.Get<int>("DLSS", "OverrideAutoExposure", std::move(overrideAutoExposure));
116117
overrideAlphaUpscaling = ini.Get<int>("DLSS", "OverrideAlphaUpscaling", std::move(overrideAlphaUpscaling));
118+
overrideHDR = ini.Get<int>("DLSS", "OverrideHDR", std::move(overrideHDR));
117119

118120
std::string sharpeningString = utility::ini_get_string_safe(ini, "DLSS", "OverrideSharpening", std::move(overrideSharpeningString));
119121
if (!sharpeningString.length() || !_stricmp(sharpeningString.c_str(), "default") ||

src/module_hooks/nvngx.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ void __cdecl NVSDK_NGX_Parameter_SetI(NVSDK_NGX_Parameter* InParameter, const ch
223223
dlss.featureCreateFlags = InValue;
224224
spdlog::debug("NVSDK_NGX_Parameter_SetI: FeatureCreateFlags = 0x{:X}", dlss.featureCreateFlags);
225225
if (dlss.featureCreateFlags & NVSDK_NGX_DLSS_Feature_Flags_IsHDR)
226-
spdlog::debug("NVSDK_NGX_Parameter_SetI: - NVSDK_NGX_DLSS_Feature_Flags_IsHDR");
226+
spdlog::debug("NVSDK_NGX_Parameter_SetI: - NVSDK_NGX_DLSS_Feature_Flags_IsHDR (use \"OverrideHDR = 1\" to force enable)");
227227
if (dlss.featureCreateFlags & NVSDK_NGX_DLSS_Feature_Flags_MVLowRes)
228228
spdlog::debug("NVSDK_NGX_Parameter_SetI: - NVSDK_NGX_DLSS_Feature_Flags_MVLowRes");
229229
if (dlss.featureCreateFlags & NVSDK_NGX_DLSS_Feature_Flags_MVJittered)
@@ -241,6 +241,20 @@ void __cdecl NVSDK_NGX_Parameter_SetI(NVSDK_NGX_Parameter* InParameter, const ch
241241
if (auto remainder = dlss.featureCreateFlags & ~((lastKnownFlag << 1) - 1))
242242
spdlog::debug("NVSDK_NGX_Parameter_SetI: - unknown flags: 0x{:X}", remainder);
243243

244+
if (settings.overrideHDR != 0)
245+
{
246+
if (settings.overrideHDR >= 1) // force HDR
247+
{
248+
spdlog::debug("OverrideHDR: force enabling flag NVSDK_NGX_DLSS_Feature_Flags_IsHDR");
249+
InValue |= NVSDK_NGX_DLSS_Feature_Flags_IsHDR;
250+
}
251+
else if (settings.overrideHDR < 0) // force disable HDR
252+
{
253+
spdlog::debug("OverrideHDR: force disabling flag NVSDK_NGX_DLSS_Feature_Flags_IsHDR");
254+
InValue = InValue & ~NVSDK_NGX_DLSS_Feature_Flags_IsHDR;
255+
}
256+
}
257+
244258
if (settings.overrideAutoExposure != 0)
245259
{
246260
if (settings.overrideAutoExposure >= 1) // force auto-exposure

0 commit comments

Comments
 (0)