Always try to get a pointer to a reactive mask

This commit is contained in:
FakeMichau
2024-07-16 18:48:52 +02:00
parent a3ab4adeb8
commit 29a232737a
13 changed files with 104 additions and 93 deletions
+7 -7
View File
@@ -500,17 +500,17 @@ bool IFeature_Dx11wDx12::ProcessDx11Textures(const NVSDK_NGX_Parameter* InParame
else
spdlog::debug("IFeature_Dx11wDx12::ProcessDx11Textures AutoExposure enabled!");
ID3D11Resource* paramMask = nullptr;
ID3D11Resource* paramReactiveMask = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramReactiveMask);
if (!Config::Instance()->DisableReactiveMask.value_or(true))
{
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramMask);
if (paramMask)
if (paramReactiveMask)
{
spdlog::debug("IFeature_Dx11wDx12::ProcessDx11Textures Bias mask exist..");
if (CopyTextureFrom11To12(paramMask, &dx11Reactive, true, Config::Instance()->DontUseNTShared.value_or(false)) == false)
if (CopyTextureFrom11To12(paramReactiveMask, &dx11Reactive, true, Config::Instance()->DontUseNTShared.value_or(false)) == false)
return false;
}
// This is only needed for XeSS
@@ -710,7 +710,7 @@ bool IFeature_Dx11wDx12::ProcessDx11Textures(const NVSDK_NGX_Parameter* InParame
dx11Exp.Dx12Handle = dx11Exp.Dx11Handle;
}
if (!Config::Instance()->DisableReactiveMask.value_or(true) && paramMask && dx11Reactive.Dx12Handle != dx11Reactive.Dx11Handle)
if (!Config::Instance()->DisableReactiveMask.value_or(true) && paramReactiveMask && dx11Reactive.Dx12Handle != dx11Reactive.Dx11Handle)
{
if (dx11Reactive.Dx12Handle != NULL)
CloseHandle(dx11Reactive.Dx12Handle);
@@ -359,16 +359,16 @@ bool FSR2FeatureDx11::Evaluate(ID3D11DeviceContext* InContext, NVSDK_NGX_Paramet
else
spdlog::debug("FSR2FeatureDx11::Evaluate AutoExposure enabled!");
ID3D11Resource* paramMask = nullptr;
ID3D11Resource* paramReactiveMask = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramReactiveMask);
if (!Config::Instance()->DisableReactiveMask.value_or(true))
{
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramMask);
if (paramMask)
if (paramReactiveMask)
{
spdlog::debug("FSR2FeatureDx11::Evaluate Bias mask exist..");
params.reactive = ffxGetResourceDX11(&_context, paramMask, (wchar_t*)L"FSR2_Reactive");
params.reactive = ffxGetResourceDX11(&_context, paramReactiveMask, (wchar_t*)L"FSR2_Reactive");
}
else
{
@@ -384,7 +384,7 @@ bool FSR2FeatureDx11::Evaluate(ID3D11DeviceContext* InContext, NVSDK_NGX_Paramet
_hasMV = params.motionVectors.resource != nullptr;
_hasExposure = params.exposure.resource != nullptr;
_hasTM = params.transparencyAndComposition.resource != nullptr;
_hasReactiveMask = params.reactive.resource != nullptr;
_hasReactiveMask = paramReactiveMask != nullptr;
_hasOutput = params.output.resource != nullptr;
float MVScaleX = 1.0f;
@@ -70,13 +70,14 @@ bool FSR2FeatureDx11on12::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_N
}
}
ID3D11Resource* paramReactiveMask = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramReactiveMask);
_hasReactiveMask = paramReactiveMask != nullptr;
if (!Config::Instance()->DisableReactiveMask.has_value())
{
ID3D11Resource* paramRM = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramRM) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramRM);
if (paramRM == nullptr)
if (!paramReactiveMask)
{
spdlog::warn("FSR2FeatureDx11with12::Evaluate Bias mask not exist, enabling DisableReactiveMask!!");
Config::Instance()->DisableReactiveMask = true;
+10 -10
View File
@@ -238,20 +238,20 @@ bool FSR2FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N
else
spdlog::debug("FSR2FeatureDx12::Evaluate AutoExposure enabled!");
ID3D12Resource* paramMask = nullptr;
ID3D12Resource* paramReactiveMask = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramReactiveMask);
if (!Config::Instance()->DisableReactiveMask.value_or(true))
{
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramMask);
if (paramMask)
if (paramReactiveMask)
{
spdlog::debug("FSR2FeatureDx12::Evaluate Bias mask exist..");
if (Config::Instance()->MaskResourceBarrier.has_value())
ResourceBarrier(InCommandList, paramMask, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
ResourceBarrier(InCommandList, paramReactiveMask, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
params.reactive = ffxGetResourceDX12(&_context, paramMask, (wchar_t*)L"FSR2_Reactive", FFX_RESOURCE_STATE_COMPUTE_READ);
params.reactive = ffxGetResourceDX12(&_context, paramReactiveMask, (wchar_t*)L"FSR2_Reactive", FFX_RESOURCE_STATE_COMPUTE_READ);
}
}
@@ -260,7 +260,7 @@ bool FSR2FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N
_hasMV = params.motionVectors.resource != nullptr;
_hasExposure = params.exposure.resource != nullptr;
_hasTM = params.transparencyAndComposition.resource != nullptr;
_hasReactiveMask = params.reactive.resource != nullptr;
_hasReactiveMask = paramReactiveMask != nullptr;
_hasOutput = params.output.resource != nullptr;
float MVScaleX = 1.0f;
@@ -437,8 +437,8 @@ bool FSR2FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE,
(D3D12_RESOURCE_STATES)Config::Instance()->ExposureResourceBarrier.value());
if (paramMask && Config::Instance()->MaskResourceBarrier.has_value())
ResourceBarrier(InCommandList, paramMask,
if (paramReactiveMask && Config::Instance()->MaskResourceBarrier.has_value())
ResourceBarrier(InCommandList, paramReactiveMask,
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE,
(D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value());
+10 -9
View File
@@ -261,19 +261,20 @@ bool FSR2FeatureVk::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter* I
else
spdlog::debug("FSR2FeatureVk::Evaluate AutoExposure enabled!");
void* paramMask = nullptr;
void* paramReactiveMask = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramReactiveMask);
if (!Config::Instance()->DisableReactiveMask.value_or(true))
{
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramMask);
if (paramMask)
if (paramReactiveMask)
{
spdlog::debug("FSR2FeatureVk::Evaluate Bias mask exist..");
params.reactive = ffxGetTextureResourceVK(&_context, ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Image,
((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.ImageView,
((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Width, ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Height,
((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Format, (wchar_t*)L"FSR2_Reactive", FFX_RESOURCE_STATE_COMPUTE_READ);
params.reactive = ffxGetTextureResourceVK(&_context, ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Image,
((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.ImageView,
((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Width, ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Height,
((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Format, (wchar_t*)L"FSR2_Reactive", FFX_RESOURCE_STATE_COMPUTE_READ);
}
else
{
@@ -289,7 +290,7 @@ bool FSR2FeatureVk::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter* I
_hasMV = params.motionVectors.resource != nullptr;
_hasExposure = params.exposure.resource != nullptr;
_hasTM = params.transparencyAndComposition.resource != nullptr;
_hasReactiveMask = params.reactive.resource != nullptr;
_hasReactiveMask = paramReactiveMask != nullptr;
_hasOutput = params.output.resource != nullptr;
float MVScaleX = 1.0f;
@@ -73,13 +73,14 @@ bool FSR2FeatureDx11on12_212::Evaluate(ID3D11DeviceContext* InDeviceContext, NVS
}
}
ID3D11Resource* paramReactiveMask = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramReactiveMask);
_hasReactiveMask = paramReactiveMask != nullptr;
if (!Config::Instance()->DisableReactiveMask.has_value())
{
ID3D11Resource* paramRM = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramRM) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramRM);
if (paramRM == nullptr)
if (!paramReactiveMask)
{
spdlog::warn("FSR2FeatureDx11with12_212::Evaluate Bias mask not exist, enabling DisableReactiveMask!!");
Config::Instance()->DisableReactiveMask = true;
@@ -238,20 +238,20 @@ bool FSR2FeatureDx12_212::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVS
spdlog::debug("FSR2FeatureDx12_212::Evaluate AutoExposure enabled!");
}
ID3D12Resource* paramMask = nullptr;
ID3D12Resource* paramReactiveMask = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramReactiveMask);
if (!Config::Instance()->DisableReactiveMask.value_or(true))
{
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramMask);
if (paramMask)
if (paramReactiveMask)
{
spdlog::debug("FSR2FeatureDx12_212::Evaluate Bias mask exist..");
if (Config::Instance()->MaskResourceBarrier.has_value())
ResourceBarrier(InCommandList, paramMask, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
ResourceBarrier(InCommandList, paramReactiveMask, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
params.reactive = Fsr212::ffxGetResourceDX12_212(&_context, paramMask, (wchar_t*)L"FSR2_Reactive", Fsr212::FFX_RESOURCE_STATE_COMPUTE_READ);
params.reactive = Fsr212::ffxGetResourceDX12_212(&_context, paramReactiveMask, (wchar_t*)L"FSR2_Reactive", Fsr212::FFX_RESOURCE_STATE_COMPUTE_READ);
}
}
@@ -260,7 +260,7 @@ bool FSR2FeatureDx12_212::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVS
_hasMV = params.motionVectors.resource != nullptr;
_hasExposure = params.exposure.resource != nullptr;
_hasTM = params.transparencyAndComposition.resource != nullptr;
_hasReactiveMask = params.reactive.resource != nullptr;
_hasReactiveMask = paramReactiveMask != nullptr;
_hasOutput = params.output.resource != nullptr;
float MVScaleX = 1.0f;
@@ -419,8 +419,8 @@ bool FSR2FeatureDx12_212::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVS
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE,
(D3D12_RESOURCE_STATES)Config::Instance()->ExposureResourceBarrier.value());
if (paramMask && Config::Instance()->MaskResourceBarrier.has_value())
ResourceBarrier(InCommandList, paramMask,
if (paramReactiveMask && Config::Instance()->MaskResourceBarrier.has_value())
ResourceBarrier(InCommandList, paramReactiveMask,
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE,
(D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value());
@@ -256,19 +256,20 @@ bool FSR2FeatureVk212::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter
else
spdlog::debug("FSR2FeatureVk212::Evaluate AutoExposure enabled!");
void* paramMask = nullptr;
void* paramReactiveMask = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramReactiveMask);
if (!Config::Instance()->DisableReactiveMask.value_or(true))
{
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramMask);
if (paramMask)
if (paramReactiveMask)
{
spdlog::debug("FSR2FeatureVk212::Evaluate Bias mask exist..");
params.reactive = Fsr212::ffxGetTextureResourceVK212(&_context, ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Image,
((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.ImageView,
((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Width, ((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Height,
((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Format, (wchar_t*)L"FSR2_Reactive", Fsr212::FFX_RESOURCE_STATE_COMPUTE_READ);
params.reactive = Fsr212::ffxGetTextureResourceVK212(&_context, ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Image,
((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.ImageView,
((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Width, ((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Height,
((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Format, (wchar_t*)L"FSR2_Reactive", Fsr212::FFX_RESOURCE_STATE_COMPUTE_READ);
}
else
{
@@ -284,7 +285,7 @@ bool FSR2FeatureVk212::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter
_hasMV = params.motionVectors.resource != nullptr;
_hasExposure = params.exposure.resource != nullptr;
_hasTM = params.transparencyAndComposition.resource != nullptr;
_hasReactiveMask = params.reactive.resource != nullptr;
_hasReactiveMask = paramReactiveMask != nullptr;
_hasOutput = params.output.resource != nullptr;
float MVScaleX = 1.0f;
@@ -109,13 +109,14 @@ bool FSR31FeatureDx11on12::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_
}
}
ID3D11Resource* paramReactiveMask = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramReactiveMask);
_hasReactiveMask = paramReactiveMask != nullptr;
if (!Config::Instance()->DisableReactiveMask.has_value())
{
ID3D11Resource* paramRM = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramRM) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramRM);
if (paramRM == nullptr)
if (!paramReactiveMask)
{
spdlog::warn("FSR31FeatureDx11with12::Evaluate Bias mask not exist, enabling DisableReactiveMask!!");
Config::Instance()->DisableReactiveMask = true;
+10 -10
View File
@@ -279,20 +279,20 @@ bool FSR31FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_
spdlog::debug("FSR31FeatureDx12::Evaluate AutoExposure enabled!");
}
ID3D12Resource* paramMask = nullptr;
ID3D12Resource* paramReactiveMask = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramReactiveMask);
if (!Config::Instance()->DisableReactiveMask.value_or(true))
{
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramMask);
if (paramMask)
if (paramReactiveMask)
{
spdlog::debug("FSR31FeatureDx12::Evaluate Bias mask exist..");
if (Config::Instance()->MaskResourceBarrier.has_value())
ResourceBarrier(InCommandList, paramMask, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
ResourceBarrier(InCommandList, paramReactiveMask, (D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE);
params.reactive = ffxApiGetResourceDX12(paramMask, FFX_API_RESOURCE_STATE_COMPUTE_READ);
params.reactive = ffxApiGetResourceDX12(paramReactiveMask, FFX_API_RESOURCE_STATE_COMPUTE_READ);
}
}
@@ -301,7 +301,7 @@ bool FSR31FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_
_hasMV = params.motionVectors.resource != nullptr;
_hasExposure = params.exposure.resource != nullptr;
_hasTM = params.transparencyAndComposition.resource != nullptr;
_hasReactiveMask = params.reactive.resource != nullptr;
_hasReactiveMask = paramReactiveMask != nullptr;
_hasOutput = params.output.resource != nullptr;
float MVScaleX = 1.0f;
@@ -463,8 +463,8 @@ bool FSR31FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE,
(D3D12_RESOURCE_STATES)Config::Instance()->ExposureResourceBarrier.value());
if (paramMask && Config::Instance()->MaskResourceBarrier.has_value())
ResourceBarrier(InCommandList, paramMask,
if (paramReactiveMask && Config::Instance()->MaskResourceBarrier.has_value())
ResourceBarrier(InCommandList, paramReactiveMask,
D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE,
(D3D12_RESOURCE_STATES)Config::Instance()->MaskResourceBarrier.value());
@@ -351,17 +351,20 @@ bool FSR31FeatureVk::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter*
else
spdlog::debug("FSR31FeatureVk::Evaluate AutoExposure enabled!");
void* paramMask = nullptr;
void* paramReactiveMask = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramReactiveMask);
if (!Config::Instance()->DisableReactiveMask.value_or(true))
{
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramMask);
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask);
if (paramMask)
if (paramReactiveMask)
{
spdlog::debug("FSR31FeatureVk::Evaluate Bias mask exist..");
params.reactive = ffxApiGetResourceVK(((NVSDK_NGX_Resource_VK*)paramMask)->Resource.ImageViewInfo.Image,
ffxApiGetImageResourceDescriptionVKLocal((NVSDK_NGX_Resource_VK*)paramMask),
params.reactive = ffxApiGetResourceVK(((NVSDK_NGX_Resource_VK*)paramReactiveMask)->Resource.ImageViewInfo.Image,
ffxApiGetImageResourceDescriptionVKLocal((NVSDK_NGX_Resource_VK*)paramReactiveMask),
FFX_API_RESOURCE_STATE_COMPUTE_READ);
}
else
@@ -378,7 +381,7 @@ bool FSR31FeatureVk::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter*
_hasMV = params.motionVectors.resource != nullptr;
_hasExposure = params.exposure.resource != nullptr;
_hasTM = params.transparencyAndComposition.resource != nullptr;
_hasReactiveMask = params.reactive.resource != nullptr;
_hasReactiveMask = paramReactiveMask != nullptr;
_hasOutput = params.output.resource != nullptr;
float MVScaleX = 1.0f;
@@ -81,13 +81,14 @@ bool XeSSFeatureDx11::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_NGX_P
}
}
ID3D11Resource* paramReactiveMask = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramReactiveMask);
_hasReactiveMask = paramReactiveMask != nullptr;
if (!Config::Instance()->DisableReactiveMask.has_value())
{
ID3D11Resource* paramRM = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramRM) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramRM);
if (paramRM == nullptr)
if (!paramReactiveMask)
{
spdlog::warn("XeSSFeatureDx11::Evaluate Bias mask not exist, enabling DisableReactiveMask!!");
Config::Instance()->DisableReactiveMask = true;
@@ -263,7 +264,6 @@ bool XeSSFeatureDx11::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_NGX_P
params.pExposureScaleTexture = dx11Exp.Dx12Resource;
_hasExposure = params.pExposureScaleTexture != nullptr;
params.pResponsivePixelMaskTexture = dx11Reactive.Dx12Resource;
_hasReactiveMask = params.pResponsivePixelMaskTexture != nullptr;
spdlog::debug("XeSSFeatureDx11::Evaluate Textures -> params complete!");
@@ -236,12 +236,15 @@ bool XeSSFeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N
else
spdlog::debug("XeSSFeatureDx12::Evaluate AutoExposure enabled!");
ID3D12Resource* paramReactiveMask = nullptr;
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &paramReactiveMask) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&paramReactiveMask);
if (!Config::Instance()->DisableReactiveMask.value_or(true))
{
if (InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, &params.pResponsivePixelMaskTexture) != NVSDK_NGX_Result_Success)
InParameters->Get(NVSDK_NGX_Parameter_DLSS_Input_Bias_Current_Color_Mask, (void**)&params.pResponsivePixelMaskTexture);
params.pResponsivePixelMaskTexture = paramReactiveMask;
if (params.pResponsivePixelMaskTexture)
if (paramReactiveMask)
{
spdlog::debug("XeSSFeatureDx12::Evaluate Bias mask exist..");
@@ -262,7 +265,7 @@ bool XeSSFeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_N
_hasOutput = params.pOutputTexture != nullptr;
_hasDepth = params.pDepthTexture != nullptr;
_hasExposure = params.pExposureScaleTexture != nullptr;
_hasReactiveMask = params.pResponsivePixelMaskTexture != nullptr;
_hasReactiveMask = paramReactiveMask != nullptr;
float MVScaleX = 1.0f;
float MVScaleY = 1.0f;