diff --git a/OptiScaler/backends/IFeature.h b/OptiScaler/backends/IFeature.h index 3ad9f7b0..fc652f5b 100644 --- a/OptiScaler/backends/IFeature.h +++ b/OptiScaler/backends/IFeature.h @@ -22,6 +22,7 @@ protected: bool _hasDepth = false; bool _hasMV = false; bool _hasTM = false; + bool _hasReactiveMask = false; bool _hasExposure = false; bool _hasOutput = false; int _initFlags = 0; @@ -68,6 +69,7 @@ public: bool HasDepth() const { return _hasDepth; } bool HasMV() const { return _hasMV; } bool HasTM() const { return _hasTM; } + bool HasReactiveMask() const { return _hasReactiveMask; } bool HasExposure() const { return _hasExposure; } bool HasOutput() const { return _hasOutput; } int InitFlags() const { return _initFlags; } diff --git a/OptiScaler/backends/IFeature_Dx11wDx12.cpp b/OptiScaler/backends/IFeature_Dx11wDx12.cpp index 6e80ebd8..c1c82d8e 100644 --- a/OptiScaler/backends/IFeature_Dx11wDx12.cpp +++ b/OptiScaler/backends/IFeature_Dx11wDx12.cpp @@ -194,13 +194,13 @@ void IFeature_Dx11wDx12::ReleaseSharedResources() SAFE_RELEASE(dx11Mv.SharedTexture); SAFE_RELEASE(dx11Out.SharedTexture); SAFE_RELEASE(dx11Depth.SharedTexture); - SAFE_RELEASE(dx11Tm.SharedTexture); + SAFE_RELEASE(dx11Reactive.SharedTexture); SAFE_RELEASE(dx11Exp.SharedTexture); SAFE_RELEASE(dx11Color.Dx12Resource); SAFE_RELEASE(dx11Mv.Dx12Resource); SAFE_RELEASE(dx11Out.Dx12Resource); SAFE_RELEASE(dx11Depth.Dx12Resource); - SAFE_RELEASE(dx11Tm.Dx12Resource); + SAFE_RELEASE(dx11Reactive.Dx12Resource); SAFE_RELEASE(dx11Exp.Dx12Resource); ReleaseSyncResources(); @@ -510,7 +510,7 @@ bool IFeature_Dx11wDx12::ProcessDx11Textures(const NVSDK_NGX_Parameter* InParame { spdlog::debug("IFeature_Dx11wDx12::ProcessDx11Textures Bias mask exist.."); - if (CopyTextureFrom11To12(paramMask, &dx11Tm, true, Config::Instance()->DontUseNTShared.value_or(false)) == false) + if (CopyTextureFrom11To12(paramMask, &dx11Reactive, true, Config::Instance()->DontUseNTShared.value_or(false)) == false) return false; } // This is only needed for XeSS @@ -710,12 +710,12 @@ bool IFeature_Dx11wDx12::ProcessDx11Textures(const NVSDK_NGX_Parameter* InParame dx11Exp.Dx12Handle = dx11Exp.Dx11Handle; } - if (!Config::Instance()->DisableReactiveMask.value_or(true) && paramMask && dx11Tm.Dx12Handle != dx11Tm.Dx11Handle) + if (!Config::Instance()->DisableReactiveMask.value_or(true) && paramMask && dx11Reactive.Dx12Handle != dx11Reactive.Dx11Handle) { - if (dx11Tm.Dx12Handle != NULL) - CloseHandle(dx11Tm.Dx12Handle); + if (dx11Reactive.Dx12Handle != NULL) + CloseHandle(dx11Reactive.Dx12Handle); - result = Dx12Device->OpenSharedHandle(dx11Tm.Dx11Handle, IID_PPV_ARGS(&dx11Tm.Dx12Resource)); + result = Dx12Device->OpenSharedHandle(dx11Reactive.Dx11Handle, IID_PPV_ARGS(&dx11Reactive.Dx12Resource)); if (result != S_OK) { @@ -723,7 +723,7 @@ bool IFeature_Dx11wDx12::ProcessDx11Textures(const NVSDK_NGX_Parameter* InParame return false; } - dx11Tm.Dx12Handle = dx11Tm.Dx11Handle; + dx11Reactive.Dx12Handle = dx11Reactive.Dx11Handle; } #pragma endregion diff --git a/OptiScaler/backends/IFeature_Dx11wDx12.h b/OptiScaler/backends/IFeature_Dx11wDx12.h index 80fc299a..deb116b9 100644 --- a/OptiScaler/backends/IFeature_Dx11wDx12.h +++ b/OptiScaler/backends/IFeature_Dx11wDx12.h @@ -45,7 +45,7 @@ protected: D3D11_TEXTURE2D_RESOURCE_C dx11Color = {}; D3D11_TEXTURE2D_RESOURCE_C dx11Mv = {}; D3D11_TEXTURE2D_RESOURCE_C dx11Depth = {}; - D3D11_TEXTURE2D_RESOURCE_C dx11Tm = {}; + D3D11_TEXTURE2D_RESOURCE_C dx11Reactive = {}; D3D11_TEXTURE2D_RESOURCE_C dx11Exp = {}; D3D11_TEXTURE2D_RESOURCE_C dx11Out = {}; diff --git a/OptiScaler/backends/fsr2/FSR2Feature_Dx11.cpp b/OptiScaler/backends/fsr2/FSR2Feature_Dx11.cpp index 54ff3a15..f06c8c3a 100644 --- a/OptiScaler/backends/fsr2/FSR2Feature_Dx11.cpp +++ b/OptiScaler/backends/fsr2/FSR2Feature_Dx11.cpp @@ -383,7 +383,8 @@ bool FSR2FeatureDx11::Evaluate(ID3D11DeviceContext* InContext, NVSDK_NGX_Paramet _hasDepth = params.depth.resource != nullptr; _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; - _hasTM = params.reactive.resource != nullptr; + _hasTM = params.transparencyAndComposition.resource != nullptr; + _hasReactiveMask = params.reactive.resource != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; diff --git a/OptiScaler/backends/fsr2/FSR2Feature_Dx11On12.cpp b/OptiScaler/backends/fsr2/FSR2Feature_Dx11On12.cpp index 910f6c33..571f05ae 100644 --- a/OptiScaler/backends/fsr2/FSR2Feature_Dx11On12.cpp +++ b/OptiScaler/backends/fsr2/FSR2Feature_Dx11On12.cpp @@ -218,7 +218,7 @@ bool FSR2FeatureDx11on12::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_N params.motionVectors = ffxGetResourceDX12(&_context, dx11Mv.Dx12Resource, L"FSR2_Motion", FFX_RESOURCE_STATE_COMPUTE_READ); params.depth = ffxGetResourceDX12(&_context, dx11Depth.Dx12Resource, L"FSR2_Depth", FFX_RESOURCE_STATE_COMPUTE_READ); params.exposure = ffxGetResourceDX12(&_context, dx11Exp.Dx12Resource, L"FSR2_Exp", FFX_RESOURCE_STATE_COMPUTE_READ); - params.reactive = ffxGetResourceDX12(&_context, dx11Tm.Dx12Resource, L"FSR2_Reactive", FFX_RESOURCE_STATE_COMPUTE_READ); + params.reactive = ffxGetResourceDX12(&_context, dx11Reactive.Dx12Resource, L"FSR2_Reactive", FFX_RESOURCE_STATE_COMPUTE_READ); // OutputScaling if (useSS) @@ -251,7 +251,8 @@ bool FSR2FeatureDx11on12::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_N _hasDepth = params.depth.resource != nullptr; _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; - _hasTM = params.reactive.resource != nullptr; + _hasTM = params.transparencyAndComposition.resource != nullptr; + _hasReactiveMask = params.reactive.resource != nullptr; _hasOutput = params.output.resource != nullptr; #pragma endregion diff --git a/OptiScaler/backends/fsr2/FSR2Feature_Dx12.cpp b/OptiScaler/backends/fsr2/FSR2Feature_Dx12.cpp index cad30b5f..3f4fde3c 100644 --- a/OptiScaler/backends/fsr2/FSR2Feature_Dx12.cpp +++ b/OptiScaler/backends/fsr2/FSR2Feature_Dx12.cpp @@ -259,7 +259,8 @@ bool FSR2FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N _hasDepth = params.depth.resource != nullptr; _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; - _hasTM = params.reactive.resource != nullptr; + _hasTM = params.transparencyAndComposition.resource != nullptr; + _hasReactiveMask = params.reactive.resource != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; diff --git a/OptiScaler/backends/fsr2/FSR2Feature_Vk.cpp b/OptiScaler/backends/fsr2/FSR2Feature_Vk.cpp index 9b64b09f..80edc35b 100644 --- a/OptiScaler/backends/fsr2/FSR2Feature_Vk.cpp +++ b/OptiScaler/backends/fsr2/FSR2Feature_Vk.cpp @@ -288,7 +288,8 @@ bool FSR2FeatureVk::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter* I _hasDepth = params.depth.resource != nullptr; _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; - _hasTM = params.reactive.resource != nullptr; + _hasTM = params.transparencyAndComposition.resource != nullptr; + _hasReactiveMask = params.reactive.resource != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; diff --git a/OptiScaler/backends/fsr2_212/FSR2Feature_Dx11On12_212.cpp b/OptiScaler/backends/fsr2_212/FSR2Feature_Dx11On12_212.cpp index 4b86abbe..134711e2 100644 --- a/OptiScaler/backends/fsr2_212/FSR2Feature_Dx11On12_212.cpp +++ b/OptiScaler/backends/fsr2_212/FSR2Feature_Dx11On12_212.cpp @@ -219,7 +219,7 @@ bool FSR2FeatureDx11on12_212::Evaluate(ID3D11DeviceContext* InDeviceContext, NVS params.motionVectors = Fsr212::ffxGetResourceDX12_212(&_context, dx11Mv.Dx12Resource, (wchar_t*)L"FSR2_Motion", Fsr212::FFX_RESOURCE_STATE_COMPUTE_READ); params.depth = Fsr212::ffxGetResourceDX12_212(&_context, dx11Depth.Dx12Resource, (wchar_t*)L"FSR2_Depth", Fsr212::FFX_RESOURCE_STATE_COMPUTE_READ); params.exposure = Fsr212::ffxGetResourceDX12_212(&_context, dx11Exp.Dx12Resource, (wchar_t*)L"FSR2_Exp", Fsr212::FFX_RESOURCE_STATE_COMPUTE_READ); - params.reactive = Fsr212::ffxGetResourceDX12_212(&_context, dx11Tm.Dx12Resource, (wchar_t*)L"FSR2_Reactive", Fsr212::FFX_RESOURCE_STATE_COMPUTE_READ); + params.reactive = Fsr212::ffxGetResourceDX12_212(&_context, dx11Reactive.Dx12Resource, (wchar_t*)L"FSR2_Reactive", Fsr212::FFX_RESOURCE_STATE_COMPUTE_READ); // OutputScaling if (useSS) @@ -248,7 +248,8 @@ bool FSR2FeatureDx11on12_212::Evaluate(ID3D11DeviceContext* InDeviceContext, NVS _hasDepth = params.depth.resource != nullptr; _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; - _hasTM = params.reactive.resource != nullptr; + _hasTM = params.transparencyAndComposition.resource != nullptr; + _hasReactiveMask = params.reactive.resource != nullptr; _hasOutput = params.output.resource != nullptr; #pragma endregion diff --git a/OptiScaler/backends/fsr2_212/FSR2Feature_Dx12_212.cpp b/OptiScaler/backends/fsr2_212/FSR2Feature_Dx12_212.cpp index b9a27d2c..15b4cbf7 100644 --- a/OptiScaler/backends/fsr2_212/FSR2Feature_Dx12_212.cpp +++ b/OptiScaler/backends/fsr2_212/FSR2Feature_Dx12_212.cpp @@ -259,7 +259,8 @@ bool FSR2FeatureDx12_212::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVS _hasDepth = params.depth.resource != nullptr; _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; - _hasTM = params.reactive.resource != nullptr; + _hasTM = params.transparencyAndComposition.resource != nullptr; + _hasReactiveMask = params.reactive.resource != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; diff --git a/OptiScaler/backends/fsr2_212/FSR2Feature_Vk_212.cpp b/OptiScaler/backends/fsr2_212/FSR2Feature_Vk_212.cpp index f5d4139a..7ad8f3e7 100644 --- a/OptiScaler/backends/fsr2_212/FSR2Feature_Vk_212.cpp +++ b/OptiScaler/backends/fsr2_212/FSR2Feature_Vk_212.cpp @@ -283,7 +283,8 @@ bool FSR2FeatureVk212::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter _hasDepth = params.depth.resource != nullptr; _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; - _hasTM = params.reactive.resource != nullptr; + _hasTM = params.transparencyAndComposition.resource != nullptr; + _hasReactiveMask = params.reactive.resource != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; diff --git a/OptiScaler/backends/fsr31/FSR31Feature_Dx11On12.cpp b/OptiScaler/backends/fsr31/FSR31Feature_Dx11On12.cpp index 6fb2d900..187e9262 100644 --- a/OptiScaler/backends/fsr31/FSR31Feature_Dx11On12.cpp +++ b/OptiScaler/backends/fsr31/FSR31Feature_Dx11On12.cpp @@ -259,7 +259,7 @@ bool FSR31FeatureDx11on12::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_ params.motionVectors = ffxApiGetResourceDX12(dx11Mv.Dx12Resource, FFX_API_RESOURCE_STATE_COMPUTE_READ); params.depth = ffxApiGetResourceDX12(dx11Depth.Dx12Resource, FFX_API_RESOURCE_STATE_COMPUTE_READ); params.exposure = ffxApiGetResourceDX12(dx11Exp.Dx12Resource, FFX_API_RESOURCE_STATE_COMPUTE_READ); - params.reactive = ffxApiGetResourceDX12(dx11Tm.Dx12Resource, FFX_API_RESOURCE_STATE_COMPUTE_READ); + params.reactive = ffxApiGetResourceDX12(dx11Reactive.Dx12Resource, FFX_API_RESOURCE_STATE_COMPUTE_READ); // Output Scaling if (useSS) @@ -288,7 +288,8 @@ bool FSR31FeatureDx11on12::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_ _hasDepth = params.depth.resource != nullptr; _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; - _hasTM = params.reactive.resource != nullptr; + _hasTM = params.transparencyAndComposition.resource != nullptr; + _hasReactiveMask = params.reactive.resource != nullptr; _hasOutput = params.output.resource != nullptr; #pragma endregion diff --git a/OptiScaler/backends/fsr31/FSR31Feature_Dx12.cpp b/OptiScaler/backends/fsr31/FSR31Feature_Dx12.cpp index f959721a..2b55a342 100644 --- a/OptiScaler/backends/fsr31/FSR31Feature_Dx12.cpp +++ b/OptiScaler/backends/fsr31/FSR31Feature_Dx12.cpp @@ -300,7 +300,8 @@ bool FSR31FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_ _hasDepth = params.depth.resource != nullptr; _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; - _hasTM = params.reactive.resource != nullptr; + _hasTM = params.transparencyAndComposition.resource != nullptr; + _hasReactiveMask = params.reactive.resource != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; diff --git a/OptiScaler/backends/fsr31/FSR31Feature_Vk.cpp b/OptiScaler/backends/fsr31/FSR31Feature_Vk.cpp index c474d845..d31bcdc6 100644 --- a/OptiScaler/backends/fsr31/FSR31Feature_Vk.cpp +++ b/OptiScaler/backends/fsr31/FSR31Feature_Vk.cpp @@ -377,7 +377,8 @@ bool FSR31FeatureVk::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter* _hasDepth = params.depth.resource != nullptr; _hasMV = params.motionVectors.resource != nullptr; _hasExposure = params.exposure.resource != nullptr; - _hasTM = params.reactive.resource != nullptr; + _hasTM = params.transparencyAndComposition.resource != nullptr; + _hasReactiveMask = params.reactive.resource != nullptr; _hasOutput = params.output.resource != nullptr; float MVScaleX = 1.0f; diff --git a/OptiScaler/backends/xess/XeSSFeature_Dx11.cpp b/OptiScaler/backends/xess/XeSSFeature_Dx11.cpp index f3e2a895..97b02631 100644 --- a/OptiScaler/backends/xess/XeSSFeature_Dx11.cpp +++ b/OptiScaler/backends/xess/XeSSFeature_Dx11.cpp @@ -262,8 +262,8 @@ bool XeSSFeatureDx11::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_NGX_P _hasDepth = params.pDepthTexture != nullptr; params.pExposureScaleTexture = dx11Exp.Dx12Resource; _hasExposure = params.pExposureScaleTexture != nullptr; - params.pResponsivePixelMaskTexture = dx11Tm.Dx12Resource; - _hasTM = params.pResponsivePixelMaskTexture != nullptr; + params.pResponsivePixelMaskTexture = dx11Reactive.Dx12Resource; + _hasReactiveMask = params.pResponsivePixelMaskTexture != nullptr; spdlog::debug("XeSSFeatureDx11::Evaluate Textures -> params complete!"); diff --git a/OptiScaler/backends/xess/XeSSFeature_Dx12.cpp b/OptiScaler/backends/xess/XeSSFeature_Dx12.cpp index 8b41b491..9b2fbc27 100644 --- a/OptiScaler/backends/xess/XeSSFeature_Dx12.cpp +++ b/OptiScaler/backends/xess/XeSSFeature_Dx12.cpp @@ -262,7 +262,7 @@ bool XeSSFeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N _hasOutput = params.pOutputTexture != nullptr; _hasDepth = params.pDepthTexture != nullptr; _hasExposure = params.pExposureScaleTexture != nullptr; - _hasTM = params.pResponsivePixelMaskTexture != nullptr; + _hasReactiveMask = params.pResponsivePixelMaskTexture != nullptr; float MVScaleX = 1.0f; float MVScaleY = 1.0f; diff --git a/OptiScaler/imgui/imgui_common.h b/OptiScaler/imgui/imgui_common.h index 4a728290..94f92ec7 100644 --- a/OptiScaler/imgui/imgui_common.h +++ b/OptiScaler/imgui/imgui_common.h @@ -1534,6 +1534,7 @@ public: } ImGui::TableNextColumn(); + ImGui::BeginDisabled(!Config::Instance()->CurrentFeature->HasReactiveMask()); if (bool rm = Config::Instance()->DisableReactiveMask.value_or(true); ImGui::Checkbox("Disable Reactive Mask", &rm)) { Config::Instance()->DisableReactiveMask = rm; @@ -1544,6 +1545,7 @@ public: Config::Instance()->changeBackend = true; } } + ImGui::EndDisabled(); } ImGui::EndTable();