From 79c6901d120b5f25a2f0ffc9b7a52839cef4fac8 Mon Sep 17 00:00:00 2001 From: FakeMichau <49685661+FakeMichau@users.noreply.github.com> Date: Mon, 11 Aug 2025 12:45:02 +0200 Subject: [PATCH] Workaround for incorrect camera near and far values sent by FSR --- OptiScaler/inputs/NVNGX_DLSS_Dx12.cpp | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/OptiScaler/inputs/NVNGX_DLSS_Dx12.cpp b/OptiScaler/inputs/NVNGX_DLSS_Dx12.cpp index ea537b83..4cf91a50 100644 --- a/OptiScaler/inputs/NVNGX_DLSS_Dx12.cpp +++ b/OptiScaler/inputs/NVNGX_DLSS_Dx12.cpp @@ -1526,22 +1526,29 @@ NVSDK_NGX_API NVSDK_NGX_Result NVSDK_NGX_D3D12_EvaluateFeature(ID3D12GraphicsCom float mvScaleY = 0.0f; { - if (!Config::Instance()->FsrUseFsrInputValues.value_or_default() || - InParameters->Get("FSR.cameraNear", &cameraNear) != NVSDK_NGX_Result_Success) - { - if (deviceContext->feature->DepthInverted()) - cameraFar = Config::Instance()->FsrCameraNear.value_or_default(); - else - cameraNear = Config::Instance()->FsrCameraNear.value_or_default(); - } + float tempCameraNear = 0.0f; + float tempCameraFar = 0.0f; + InParameters->Get("FSR.cameraNear", &tempCameraNear); + InParameters->Get("FSR.cameraFar", &tempCameraFar); if (!Config::Instance()->FsrUseFsrInputValues.value_or_default() || - InParameters->Get("FSR.cameraFar", &cameraFar) != NVSDK_NGX_Result_Success) + (tempCameraNear == 0.0f && tempCameraFar == 0.0f)) { if (deviceContext->feature->DepthInverted()) + { + cameraFar = Config::Instance()->FsrCameraNear.value_or_default(); cameraNear = Config::Instance()->FsrCameraFar.value_or_default(); + } else + { cameraFar = Config::Instance()->FsrCameraFar.value_or_default(); + cameraNear = Config::Instance()->FsrCameraNear.value_or_default(); + } + } + else + { + cameraNear = tempCameraNear; + cameraFar = tempCameraFar; } if (!Config::Instance()->FsrUseFsrInputValues.value_or_default() ||