Fix output scaling for FSR3.1

This commit is contained in:
cdozdil
2026-02-13 02:10:17 +03:00
parent 338ba2c011
commit 2daa430989
5 changed files with 30 additions and 20 deletions
@@ -467,8 +467,9 @@ bool FSR31FeatureDx11::Evaluate(ID3D11DeviceContext* DeviceContext, NVSDK_NGX_Pa
if (InParameters->Get("FSR.upscaleSize.width", &params.upscaleSize.width) == NVSDK_NGX_Result_Success &&
Config::Instance()->OutputScalingEnabled.value_or_default())
{
params.upscaleSize.width *=
static_cast<uint32_t>(Config::Instance()->OutputScalingMultiplier.value_or_default());
auto originalWidth = static_cast<float>(params.upscaleSize.width);
params.upscaleSize.width =
static_cast<uint32_t>(originalWidth * Config::Instance()->OutputScalingMultiplier.value_or_default());
}
else if (params.upscaleSize.width == 0)
{
@@ -478,8 +479,9 @@ bool FSR31FeatureDx11::Evaluate(ID3D11DeviceContext* DeviceContext, NVSDK_NGX_Pa
if (InParameters->Get("FSR.upscaleSize.height", &params.upscaleSize.height) == NVSDK_NGX_Result_Success &&
Config::Instance()->OutputScalingEnabled.value_or_default())
{
params.upscaleSize.height *=
static_cast<uint32_t>(Config::Instance()->OutputScalingMultiplier.value_or_default());
auto originalHeight = static_cast<float>(params.upscaleSize.height);
params.upscaleSize.height =
static_cast<uint32_t>(originalHeight * Config::Instance()->OutputScalingMultiplier.value_or_default());
}
else if (params.upscaleSize.height == 0)
{
@@ -428,8 +428,9 @@ bool FSR31FeatureDx11on12::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_
if (InParameters->Get("FSR.upscaleSize.width", &params.upscaleSize.width) == NVSDK_NGX_Result_Success &&
Config::Instance()->OutputScalingEnabled.value_or_default())
{
params.upscaleSize.width *=
static_cast<uint32_t>(Config::Instance()->OutputScalingMultiplier.value_or_default());
auto originalWidth = static_cast<float>(params.upscaleSize.width);
params.upscaleSize.width =
static_cast<uint32_t>(originalWidth * Config::Instance()->OutputScalingMultiplier.value_or_default());
}
else if (params.upscaleSize.width == 0)
{
@@ -439,8 +440,9 @@ bool FSR31FeatureDx11on12::Evaluate(ID3D11DeviceContext* InDeviceContext, NVSDK_
if (InParameters->Get("FSR.upscaleSize.height", &params.upscaleSize.height) == NVSDK_NGX_Result_Success &&
Config::Instance()->OutputScalingEnabled.value_or_default())
{
params.upscaleSize.height *=
static_cast<uint32_t>(Config::Instance()->OutputScalingMultiplier.value_or_default());
auto originalHeight = static_cast<float>(params.upscaleSize.height);
params.upscaleSize.height =
static_cast<uint32_t>(originalHeight * Config::Instance()->OutputScalingMultiplier.value_or_default());
}
else if (params.upscaleSize.height == 0)
{
@@ -508,8 +508,9 @@ bool FSR31FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_
if (InParameters->Get("FSR.upscaleSize.width", &params.upscaleSize.width) == NVSDK_NGX_Result_Success &&
Config::Instance()->OutputScalingEnabled.value_or_default())
{
params.upscaleSize.width *=
static_cast<uint32_t>(Config::Instance()->OutputScalingMultiplier.value_or_default());
auto originalWidth = static_cast<float>(params.upscaleSize.width);
params.upscaleSize.width =
static_cast<uint32_t>(originalWidth * Config::Instance()->OutputScalingMultiplier.value_or_default());
}
else if (params.upscaleSize.width == 0)
{
@@ -519,8 +520,9 @@ bool FSR31FeatureDx12::Evaluate(ID3D12GraphicsCommandList* InCommandList, NVSDK_
if (InParameters->Get("FSR.upscaleSize.height", &params.upscaleSize.height) == NVSDK_NGX_Result_Success &&
Config::Instance()->OutputScalingEnabled.value_or_default())
{
params.upscaleSize.height *=
static_cast<uint32_t>(Config::Instance()->OutputScalingMultiplier.value_or_default());
auto originalHeight = static_cast<float>(params.upscaleSize.height);
params.upscaleSize.height =
static_cast<uint32_t>(originalHeight * Config::Instance()->OutputScalingMultiplier.value_or_default());
}
else if (params.upscaleSize.height == 0)
{
@@ -744,8 +744,9 @@ bool FSR31FeatureVk::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter*
if (InParameters->Get("FSR.upscaleSize.width", &params.upscaleSize.width) == NVSDK_NGX_Result_Success &&
Config::Instance()->OutputScalingEnabled.value_or_default())
{
params.upscaleSize.width *=
static_cast<uint32_t>(Config::Instance()->OutputScalingMultiplier.value_or_default());
auto originalWidth = static_cast<float>(params.upscaleSize.width);
params.upscaleSize.width =
static_cast<uint32_t>(originalWidth * Config::Instance()->OutputScalingMultiplier.value_or_default());
}
else if (params.upscaleSize.width == 0)
{
@@ -755,8 +756,9 @@ bool FSR31FeatureVk::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Parameter*
if (InParameters->Get("FSR.upscaleSize.height", &params.upscaleSize.height) == NVSDK_NGX_Result_Success &&
Config::Instance()->OutputScalingEnabled.value_or_default())
{
params.upscaleSize.height *=
static_cast<uint32_t>(Config::Instance()->OutputScalingMultiplier.value_or_default());
auto originalHeight = static_cast<float>(params.upscaleSize.height);
params.upscaleSize.height =
static_cast<uint32_t>(originalHeight * Config::Instance()->OutputScalingMultiplier.value_or_default());
}
else if (params.upscaleSize.height == 0)
{
@@ -419,8 +419,9 @@ bool FSR31FeatureVkOn12::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Paramet
if (InParameters->Get("FSR.upscaleSize.width", &params.upscaleSize.width) == NVSDK_NGX_Result_Success &&
Config::Instance()->OutputScalingEnabled.value_or_default())
{
params.upscaleSize.width *=
static_cast<uint32_t>(Config::Instance()->OutputScalingMultiplier.value_or_default());
auto originalWidth = static_cast<float>(params.upscaleSize.width);
params.upscaleSize.width =
static_cast<uint32_t>(originalWidth * Config::Instance()->OutputScalingMultiplier.value_or_default());
}
else if (params.upscaleSize.width == 0)
{
@@ -430,8 +431,9 @@ bool FSR31FeatureVkOn12::Evaluate(VkCommandBuffer InCmdBuffer, NVSDK_NGX_Paramet
if (InParameters->Get("FSR.upscaleSize.height", &params.upscaleSize.height) == NVSDK_NGX_Result_Success &&
Config::Instance()->OutputScalingEnabled.value_or_default())
{
params.upscaleSize.height *=
static_cast<uint32_t>(Config::Instance()->OutputScalingMultiplier.value_or_default());
auto originalHeight = static_cast<float>(params.upscaleSize.height);
params.upscaleSize.height =
static_cast<uint32_t>(originalHeight * Config::Instance()->OutputScalingMultiplier.value_or_default());
}
else if (params.upscaleSize.height == 0)
{