From f2e658bae96f3e31f52cce101508a66efb84b866 Mon Sep 17 00:00:00 2001 From: marat569 <marat569@gmail.com> Date: Sat, 26 Oct 2024 16:08:00 -0400 Subject: [PATCH] [YS10] Clamp frostbite to AP1 - Fix NaNs on 0,0,0 --- src/games/ys10/addon.cpp | 16 ++++++++++++++++ src/games/ys10/tonemapper.hlsl | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/games/ys10/addon.cpp b/src/games/ys10/addon.cpp index 2c806b41..ab578ada 100644 --- a/src/games/ys10/addon.cpp +++ b/src/games/ys10/addon.cpp @@ -176,6 +176,22 @@ BOOL APIENTRY DllMain(HMODULE h_module, DWORD fdw_reason, LPVOID lpv_reserved) { // .new_format = reshade::api::format::r16g16b16a16_float, // }); + // R11G11B10 + // renodx::mods::swapchain::swap_chain_upgrade_targets.push_back({.old_format = reshade::api::format::r11g11b10_float, + // .new_format = reshade::api::format::r16g16b16a16_float, + // .ignore_size = true, + // .view_upgrades = { + // {{reshade::api::resource_usage::shader_resource, + // reshade::api::format::r11g11b10_float}, + // reshade::api::format::r16g16b16a16_float}, + // {{reshade::api::resource_usage::unordered_access, + // reshade::api::format::r11g11b10_float}, + // reshade::api::format::r16g16b16a16_float}, + // {{reshade::api::resource_usage::render_target, + // reshade::api::format::r11g11b10_float}, + // reshade::api::format::r16g16b16a16_float}, + // }}); + break; case DLL_PROCESS_DETACH: reshade::unregister_addon(h_module); diff --git a/src/games/ys10/tonemapper.hlsl b/src/games/ys10/tonemapper.hlsl index 38355ab1..1bcbb42f 100644 --- a/src/games/ys10/tonemapper.hlsl +++ b/src/games/ys10/tonemapper.hlsl @@ -4,7 +4,6 @@ #include "./DICE.hlsl" #include "./shared.h" - float3 applyUserTonemap(float3 untonemapped) { float3 outputColor; @@ -45,6 +44,8 @@ float3 applyUserTonemap(float3 untonemapped) { } else if (injectedData.toneMapType == 4.f) { // Frostbite float frostbitePeak = injectedData.toneMapPeakNits / injectedData.toneMapGameNits; outputColor = renodx::tonemap::frostbite::BT709(outputColor, frostbitePeak); + + outputColor = renodx::color::bt709::clamp::AP1(outputColor); // Clamp frostbite to AP1 to avoid invalid colors } if (injectedData.toneMapType != 0) { // UserColorGrading, post-tonemap