mirror of
https://github.com/optiscaler/OptiScaler.git
synced 2026-09-27 15:56:48 +00:00
fix for Dx11 UE engine issues
This commit is contained in:
@@ -76,7 +76,8 @@ bool FSR2FeatureDx11::CopyTexture(ID3D11Resource* InResource, D3D11_TEXTURE2D_RE
|
||||
OutTextureRes->usingOriginal = false;
|
||||
ASSIGN_DESC(OutTextureRes->Desc, desc);
|
||||
|
||||
desc.BindFlags = bindFlags;
|
||||
if (bindFlags != 9999)
|
||||
desc.BindFlags = bindFlags;
|
||||
|
||||
result = Device->CreateTexture2D(&desc, nullptr, &OutTextureRes->Texture);
|
||||
|
||||
@@ -287,8 +288,27 @@ bool FSR2FeatureDx11::Evaluate(ID3D11DeviceContext* InContext, NVSDK_NGX_Paramet
|
||||
if (!RCAS->IsInit())
|
||||
Config::Instance()->RcasEnabled = false;
|
||||
|
||||
FfxFsr2DispatchDescription params{};
|
||||
ID3D11ShaderResourceView* restoreSRVs[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
|
||||
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
|
||||
|
||||
ID3D11SamplerState* restoreSamplerStates[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
|
||||
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
|
||||
|
||||
ID3D11Buffer* restoreCBVs[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
|
||||
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
|
||||
|
||||
ID3D11UnorderedAccessView* restoreUAVs[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
|
||||
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
|
||||
|
||||
for (size_t i = 0; i < 16; i++)
|
||||
{
|
||||
InContext->CSGetShaderResources(i, 1, &restoreSRVs[i]);
|
||||
InContext->CSGetSamplers(i, 1, &restoreSamplerStates[i]);
|
||||
InContext->CSGetConstantBuffers(i, 1, &restoreCBVs[i]);
|
||||
InContext->CSGetUnorderedAccessViews(i, 1, &restoreUAVs[i]);
|
||||
}
|
||||
|
||||
FfxFsr2DispatchDescription params{};
|
||||
params.commandList = InContext;
|
||||
|
||||
InParameters->Get(NVSDK_NGX_Parameter_Jitter_Offset_X, ¶ms.jitterOffset.x);
|
||||
@@ -306,7 +326,7 @@ bool FSR2FeatureDx11::Evaluate(ID3D11DeviceContext* InContext, NVSDK_NGX_Paramet
|
||||
|
||||
if (Config::Instance()->OverrideSharpness.value_or(false))
|
||||
_sharpness = Config::Instance()->Sharpness.value_or(0.3);
|
||||
else
|
||||
else
|
||||
_sharpness = GetSharpness(InParameters);
|
||||
|
||||
if (Config::Instance()->RcasEnabled.value_or(false))
|
||||
@@ -380,11 +400,13 @@ bool FSR2FeatureDx11::Evaluate(ID3D11DeviceContext* InContext, NVSDK_NGX_Paramet
|
||||
LOG_ERROR("MotionVectors not exist!!");
|
||||
return false;
|
||||
}
|
||||
auto outIndex = _frameCount % 2;
|
||||
|
||||
ID3D11Resource* paramOutput;
|
||||
if (InParameters->Get(NVSDK_NGX_Parameter_Output, ¶mOutput) != NVSDK_NGX_Result_Success)
|
||||
InParameters->Get(NVSDK_NGX_Parameter_Output, (void**)¶mOutput);
|
||||
|
||||
|
||||
if (paramOutput)
|
||||
{
|
||||
LOG_DEBUG("Output exist..");
|
||||
@@ -608,6 +630,14 @@ bool FSR2FeatureDx11::Evaluate(ID3D11DeviceContext* InContext, NVSDK_NGX_Paramet
|
||||
}
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < 16; i++)
|
||||
{
|
||||
InContext->CSSetShaderResources(i, 1, &restoreSRVs[i]);
|
||||
InContext->CSSetSamplers(i, 1, &restoreSamplerStates[i]);
|
||||
InContext->CSSetConstantBuffers(i, 1, &restoreCBVs[i]);
|
||||
InContext->CSSetUnorderedAccessViews(i, 1, &restoreUAVs[i], 0);
|
||||
}
|
||||
|
||||
_frameCount++;
|
||||
|
||||
return true;
|
||||
|
||||
@@ -101,7 +101,8 @@ bool FSR31FeatureDx11::CopyTexture(ID3D11Resource* InResource, D3D11_TEXTURE2D_R
|
||||
OutTextureRes->usingOriginal = false;
|
||||
ASSIGN_DESC(OutTextureRes->Desc, desc);
|
||||
|
||||
desc.BindFlags = bindFlags;
|
||||
if (bindFlags != 9999)
|
||||
desc.BindFlags = bindFlags;
|
||||
|
||||
result = Device->CreateTexture2D(&desc, nullptr, &OutTextureRes->Texture);
|
||||
|
||||
@@ -141,6 +142,26 @@ bool FSR31FeatureDx11::Evaluate(ID3D11DeviceContext* DeviceContext, NVSDK_NGX_Pa
|
||||
if (!OutputScaler->IsInit())
|
||||
Config::Instance()->OutputScalingEnabled = false;
|
||||
|
||||
ID3D11ShaderResourceView* restoreSRVs[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
|
||||
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
|
||||
|
||||
ID3D11SamplerState* restoreSamplerStates[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
|
||||
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
|
||||
|
||||
ID3D11Buffer* restoreCBVs[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
|
||||
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
|
||||
|
||||
ID3D11UnorderedAccessView* restoreUAVs[16] = { nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr,
|
||||
nullptr, nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr ,nullptr };
|
||||
|
||||
for (size_t i = 0; i < 16; i++)
|
||||
{
|
||||
DeviceContext->CSGetShaderResources(i, 1, &restoreSRVs[i]);
|
||||
DeviceContext->CSGetSamplers(i, 1, &restoreSamplerStates[i]);
|
||||
DeviceContext->CSGetConstantBuffers(i, 1, &restoreCBVs[i]);
|
||||
DeviceContext->CSGetUnorderedAccessViews(i, 1, &restoreUAVs[i]);
|
||||
}
|
||||
|
||||
Fsr31::FfxFsr3DispatchUpscaleDescription params{};
|
||||
|
||||
if (Config::Instance()->FsrDebugView.value_or(false))
|
||||
@@ -491,6 +512,14 @@ bool FSR31FeatureDx11::Evaluate(ID3D11DeviceContext* DeviceContext, NVSDK_NGX_Pa
|
||||
}
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < 16; i++)
|
||||
{
|
||||
DeviceContext->CSSetShaderResources(i, 1, &restoreSRVs[i]);
|
||||
DeviceContext->CSSetSamplers(i, 1, &restoreSamplerStates[i]);
|
||||
DeviceContext->CSSetConstantBuffers(i, 1, &restoreCBVs[i]);
|
||||
DeviceContext->CSSetUnorderedAccessViews(i, 1, &restoreUAVs[i], 0);
|
||||
}
|
||||
|
||||
_frameCount++;
|
||||
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user