From d91e0a7fe82e6b8e8a668754918651400f3c3536 Mon Sep 17 00:00:00 2001 From: cdozdil Date: Tue, 28 Oct 2025 20:46:31 +0300 Subject: [PATCH 1/8] Added xtra logging --- OptiScaler/hooks/DxgiFactory_Hooks.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/OptiScaler/hooks/DxgiFactory_Hooks.cpp b/OptiScaler/hooks/DxgiFactory_Hooks.cpp index 9b28e80d..de34cea2 100644 --- a/OptiScaler/hooks/DxgiFactory_Hooks.cpp +++ b/OptiScaler/hooks/DxgiFactory_Hooks.cpp @@ -5,6 +5,7 @@ #include #include +#include #include void DxgiFactoryHooks::CheckAdapter(IUnknown* unkAdapter) @@ -181,6 +182,22 @@ HRESULT DxgiFactoryHooks::CreateSwapChain(IDXGIFactory* realFactory, IUnknown* p pDesc->BufferDesc.Width, pDesc->BufferDesc.Height, (UINT) pDesc->BufferDesc.Format, pDesc->BufferCount, pDesc->Flags, (SIZE_T) pDesc->OutputWindow, pDesc->Windowed, _skipFGSwapChainCreation); + LOG_DEBUG("pDesc->BufferCount: {}", pDesc->BufferCount); + LOG_DEBUG("pDesc->BufferDesc.Width: {}", pDesc->BufferDesc.Width); + LOG_DEBUG("pDesc->BufferDesc.Format: {}", magic_enum::enum_name(pDesc->BufferDesc.Format)); + LOG_DEBUG("pDesc->BufferDesc.Height: {}", pDesc->BufferDesc.Height); + LOG_DEBUG("pDesc->BufferDesc.RefreshRate.Denominator: {}", pDesc->BufferDesc.RefreshRate.Denominator); + LOG_DEBUG("pDesc->BufferDesc.RefreshRate.Numerator: {}", pDesc->BufferDesc.RefreshRate.Numerator); + LOG_DEBUG("pDesc->BufferDesc.Scaling: {}", magic_enum::enum_name(pDesc->BufferDesc.Scaling)); + LOG_DEBUG("pDesc->BufferDesc.ScanlineOrdering: {}", magic_enum::enum_name(pDesc->BufferDesc.ScanlineOrdering)); + LOG_DEBUG("pDesc->Windowed: {}", pDesc->Windowed); + LOG_DEBUG("pDesc->SampleDesc.Count: {}", pDesc->SampleDesc.Count); + LOG_DEBUG("pDesc->SampleDesc.Quality: {}", pDesc->SampleDesc.Quality); + LOG_DEBUG("pDesc->BufferUsage: {}", (UINT) pDesc->BufferUsage); + LOG_DEBUG("pDesc->Flags: {}", pDesc->Flags); + LOG_DEBUG("pDesc->OutputWindow: {:X}", (UINT64) pDesc->OutputWindow); + LOG_DEBUG("pDesc->SwapEffect: {}", magic_enum::enum_name(pDesc->SwapEffect)); + if (State::Instance().activeFgOutput == FGOutput::XeFG && Config::Instance()->FGXeFGForceBorderless.value_or_default()) { @@ -307,6 +324,10 @@ HRESULT DxgiFactoryHooks::CreateSwapChain(IDXGIFactory* realFactory, IUnknown* p (size_t) pDevice); } } + else + { + LOG_ERROR("CreateSwapChain failed: {:X}", (UINT) result); + } return result; } @@ -508,6 +529,10 @@ HRESULT DxgiFactoryHooks::CreateSwapChainForHwnd(IDXGIFactory2* realFactory, IUn State::Instance().currentWrappedSwapchain = *ppSwapChain; } + else + { + LOG_ERROR("CreateSwapChainForHwnd failed: {:X}", (UINT) result); + } } if (firstCall) From 4fcc61de7330f67d33e9ab78a32c86f3afd0d13d Mon Sep 17 00:00:00 2001 From: cdozdil Date: Wed, 29 Oct 2025 01:30:56 +0300 Subject: [PATCH 2/8] Added hudless and UI format checks to prevent crashes --- OptiScaler/framegen/ffx/FSRFG_Dx12.cpp | 92 ++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/OptiScaler/framegen/ffx/FSRFG_Dx12.cpp b/OptiScaler/framegen/ffx/FSRFG_Dx12.cpp index 4476dac4..dfb75382 100644 --- a/OptiScaler/framegen/ffx/FSRFG_Dx12.cpp +++ b/OptiScaler/framegen/ffx/FSRFG_Dx12.cpp @@ -8,6 +8,64 @@ #include +int GetFormatPrecisionGroup(FfxApiSurfaceFormat format) +{ + switch (format) + { + case FFX_API_SURFACE_FORMAT_R32G32B32A32_TYPELESS: + case FFX_API_SURFACE_FORMAT_R32G32B32A32_FLOAT: + case FFX_API_SURFACE_FORMAT_R32G32B32_FLOAT: + return 0; + + case FFX_API_SURFACE_FORMAT_R16G16B16A16_TYPELESS: + case FFX_API_SURFACE_FORMAT_R16G16B16A16_FLOAT: + return 1; + + case FFX_API_SURFACE_FORMAT_R8G8B8A8_TYPELESS: + case FFX_API_SURFACE_FORMAT_R8G8B8A8_UNORM: + case FFX_API_SURFACE_FORMAT_B8G8R8A8_TYPELESS: + case FFX_API_SURFACE_FORMAT_B8G8R8A8_UNORM: + return 2; + + case FFX_API_SURFACE_FORMAT_R8G8B8A8_SNORM: + return 3; + + case FFX_API_SURFACE_FORMAT_R8G8B8A8_SRGB: + case FFX_API_SURFACE_FORMAT_B8G8R8A8_SRGB: + return 4; + + case FFX_API_SURFACE_FORMAT_R11G11B10_FLOAT: + return 5; + + case FFX_API_SURFACE_FORMAT_R10G10B10A2_TYPELESS: + case FFX_API_SURFACE_FORMAT_R10G10B10A2_UNORM: + return 6; + + case FFX_API_SURFACE_FORMAT_R9G9B9E5_SHAREDEXP: + return 7; + + // we don't accept the following formats + case FFX_API_SURFACE_FORMAT_R32G32B32A32_UINT: + case FFX_API_SURFACE_FORMAT_R32G32_FLOAT: + case FFX_API_SURFACE_FORMAT_R8_UINT: + case FFX_API_SURFACE_FORMAT_R32_UINT: + case FFX_API_SURFACE_FORMAT_R16G16_UINT: + case FFX_API_SURFACE_FORMAT_R16G16_SINT: + case FFX_API_SURFACE_FORMAT_R16G16_FLOAT: + case FFX_API_SURFACE_FORMAT_R16_FLOAT: + case FFX_API_SURFACE_FORMAT_R16_UINT: + case FFX_API_SURFACE_FORMAT_R16_UNORM: + case FFX_API_SURFACE_FORMAT_R16_SNORM: + case FFX_API_SURFACE_FORMAT_R8_UNORM: + case FFX_API_SURFACE_FORMAT_R8G8_UNORM: + case FFX_API_SURFACE_FORMAT_R8G8_UINT: + case FFX_API_SURFACE_FORMAT_R32_FLOAT: + case FFX_API_SURFACE_FORMAT_UNKNOWN: + default: + return -1; + } +} + typedef struct FfxSwapchainFramePacingTuning { float safetyMarginInMs; // in Millisecond. Default is 0.1ms @@ -876,11 +934,45 @@ void FSRFG_Dx12::SetResource(Dx12Resource* inputResource) } if (type == FG_ResourceType::UIColor) + { + auto uiFormatGroup = GetFormatPrecisionGroup( + (FfxApiSurfaceFormat) ffxApiGetSurfaceFormatDX12(fResource->GetResource()->GetDesc().Format)); + auto scFormatGroup = GetFormatPrecisionGroup( + (FfxApiSurfaceFormat) ffxApiGetSurfaceFormatDX12(State::Instance().currentSwapchainDesc.BufferDesc.Format)); + + if (uiFormatGroup == -1 || scFormatGroup == -1 || uiFormatGroup != scFormatGroup) + { + LOG_WARN("Skipping UI resource due to format mismatch! UI: {}, swapchain: {}", uiFormatGroup, + scFormatGroup); + + _frameResources[fIndex][type] = {}; + + return; + } + _noUi[fIndex] = false; + } else if (type == FG_ResourceType::Distortion) _noDistortionField[fIndex] = false; else if (type == FG_ResourceType::HudlessColor) + { + auto hudlessFormatGroup = GetFormatPrecisionGroup( + (FfxApiSurfaceFormat) ffxApiGetSurfaceFormatDX12(fResource->GetResource()->GetDesc().Format)); + auto scFormatGroup = GetFormatPrecisionGroup( + (FfxApiSurfaceFormat) ffxApiGetSurfaceFormatDX12(State::Instance().currentSwapchainDesc.BufferDesc.Format)); + + if (hudlessFormatGroup == -1 || scFormatGroup == -1 || hudlessFormatGroup != scFormatGroup) + { + LOG_WARN("Skipping hudless resource due to format mismatch! hudless: {}, swapchain: {}", hudlessFormatGroup, + scFormatGroup); + + _frameResources[fIndex][type] = {}; + + return; + } + _noHudless[fIndex] = false; + } // For FSR FG we always copy ValidNow if (fResource->validity == FG_ResourceValidity::ValidButMakeCopy) From b2fdb58e340cf32fcd958f42e7f445723abd17b0 Mon Sep 17 00:00:00 2001 From: cdozdil Date: Wed, 29 Oct 2025 01:31:10 +0300 Subject: [PATCH 3/8] Added more logs --- OptiScaler/inputs/FG/FfxApi_Dx12_FG.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/OptiScaler/inputs/FG/FfxApi_Dx12_FG.cpp b/OptiScaler/inputs/FG/FfxApi_Dx12_FG.cpp index 74a519b0..805d1f4a 100644 --- a/OptiScaler/inputs/FG/FfxApi_Dx12_FG.cpp +++ b/OptiScaler/inputs/FG/FfxApi_Dx12_FG.cpp @@ -1049,6 +1049,10 @@ void ffxPresentCallback() fg->SetResource(&hudless); } } + else + { + LOG_ERROR("Present callback failed: {:X}", (UINT) result); + } currentBuffer->Release(); @@ -1132,6 +1136,10 @@ void ffxPresentCallback() fg->SetResource(&hudless); } } + else + { + LOG_ERROR("Frame Generation callback failed: {:X}", (UINT) result); + } currentBuffer->Release(); From 8a88984e0a416dc1a5cfd41bae2db78b9f310013 Mon Sep 17 00:00:00 2001 From: cdozdil Date: Wed, 29 Oct 2025 01:33:02 +0300 Subject: [PATCH 4/8] Added D3D12 device check --- OptiScaler/framegen/xefg/XeFG_Dx12.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OptiScaler/framegen/xefg/XeFG_Dx12.cpp b/OptiScaler/framegen/xefg/XeFG_Dx12.cpp index c3d413d1..13e2a578 100644 --- a/OptiScaler/framegen/xefg/XeFG_Dx12.cpp +++ b/OptiScaler/framegen/xefg/XeFG_Dx12.cpp @@ -911,7 +911,8 @@ void XeFG_Dx12::SetResource(Dx12Resource* inputResource) FlipResource(fResource); } - if (type == FG_ResourceType::Depth && !Config::Instance()->FGXeFGDepthInverted.value_or_default()) + if (_device != nullptr && type == FG_ResourceType::Depth && + !Config::Instance()->FGXeFGDepthInverted.value_or_default()) { if (_depthInvert.get() == nullptr) { From 29f43dc304c011c7f99ca89e6edc68bd2228f736 Mon Sep 17 00:00:00 2001 From: cdozdil Date: Wed, 29 Oct 2025 16:07:39 +0300 Subject: [PATCH 5/8] Integrated format transfer shader to FSR-FG for hudless and UI resources --- OptiScaler/framegen/ffx/FSRFG_Dx12.cpp | 127 ++++++++++++++++++++++--- OptiScaler/framegen/ffx/FSRFG_Dx12.h | 9 ++ 2 files changed, 122 insertions(+), 14 deletions(-) diff --git a/OptiScaler/framegen/ffx/FSRFG_Dx12.cpp b/OptiScaler/framegen/ffx/FSRFG_Dx12.cpp index dfb75382..9dea4e06 100644 --- a/OptiScaler/framegen/ffx/FSRFG_Dx12.cpp +++ b/OptiScaler/framegen/ffx/FSRFG_Dx12.cpp @@ -8,6 +8,91 @@ #include +static inline void ResourceBarrier(ID3D12GraphicsCommandList* InCommandList, ID3D12Resource* InResource, + D3D12_RESOURCE_STATES InBeforeState, D3D12_RESOURCE_STATES InAfterState) +{ + if (InBeforeState == InAfterState) + return; + + D3D12_RESOURCE_BARRIER barrier = {}; + barrier.Type = D3D12_RESOURCE_BARRIER_TYPE_TRANSITION; + barrier.Transition.pResource = InResource; + barrier.Transition.StateBefore = InBeforeState; + barrier.Transition.StateAfter = InAfterState; + barrier.Transition.Subresource = D3D12_RESOURCE_BARRIER_ALL_SUBRESOURCES; + InCommandList->ResourceBarrier(1, &barrier); +} + +bool FSRFG_Dx12::HudlessFormatTransfer(int index, ID3D12Device* device, ID3D12GraphicsCommandList* cmdList, + DXGI_FORMAT targetFormat, Dx12Resource* resource) +{ + if (_hudlessTransfer[index].get() == nullptr || !_hudlessTransfer[index].get()->IsFormatCompatible(targetFormat)) + { + LOG_DEBUG("Format change, recreate the FormatTransfer"); + + if (_hudlessTransfer[index].get() != nullptr) + _hudlessTransfer[index].reset(); + + _hudlessTransfer[index] = std::make_unique("FormatTransfer", device, targetFormat); + + return false; + } + + if (_hudlessTransfer[index].get() != nullptr && + _hudlessTransfer[index].get()->CreateBufferResource(device, resource->GetResource(), + D3D12_RESOURCE_STATE_UNORDERED_ACCESS)) + { + ResourceBarrier(cmdList, resource->GetResource(), resource->state, + D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE); + + _hudlessTransfer[index].get()->Dispatch(device, cmdList, resource->GetResource(), + _hudlessTransfer[index].get()->Buffer()); + + ResourceBarrier(cmdList, resource->GetResource(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE, + resource->state); + + resource->copy = _hudlessTransfer[index].get()->Buffer(); + return true; + } + + return false; +} + +bool FSRFG_Dx12::UIFormatTransfer(int index, ID3D12Device* device, ID3D12GraphicsCommandList* cmdList, + DXGI_FORMAT targetFormat, Dx12Resource* resource) +{ + if (_uiTransfer[index].get() == nullptr || !_uiTransfer[index].get()->IsFormatCompatible(targetFormat)) + { + LOG_DEBUG("Format change, recreate the FormatTransfer"); + + if (_uiTransfer[index].get() != nullptr) + _uiTransfer[index].reset(); + + _uiTransfer[index] = std::make_unique("FormatTransfer", device, targetFormat); + + return false; + } + + if (_uiTransfer[index].get() != nullptr && + _uiTransfer[index].get()->CreateBufferResource(device, resource->GetResource(), + D3D12_RESOURCE_STATE_UNORDERED_ACCESS)) + { + ResourceBarrier(cmdList, resource->GetResource(), resource->state, + D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE); + + _uiTransfer[index].get()->Dispatch(device, cmdList, resource->GetResource(), + _uiTransfer[index].get()->Buffer()); + + ResourceBarrier(cmdList, resource->GetResource(), D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE, + resource->state); + + resource->copy = _uiTransfer[index].get()->Buffer(); + return true; + } + + return false; +} + int GetFormatPrecisionGroup(FfxApiSurfaceFormat format) { switch (format) @@ -935,19 +1020,26 @@ void FSRFG_Dx12::SetResource(Dx12Resource* inputResource) if (type == FG_ResourceType::UIColor) { + auto format = State::Instance().currentSwapchainDesc.BufferDesc.Format; + auto uiFormatGroup = GetFormatPrecisionGroup( (FfxApiSurfaceFormat) ffxApiGetSurfaceFormatDX12(fResource->GetResource()->GetDesc().Format)); - auto scFormatGroup = GetFormatPrecisionGroup( - (FfxApiSurfaceFormat) ffxApiGetSurfaceFormatDX12(State::Instance().currentSwapchainDesc.BufferDesc.Format)); + auto scFormatGroup = GetFormatPrecisionGroup((FfxApiSurfaceFormat) ffxApiGetSurfaceFormatDX12(format)); if (uiFormatGroup == -1 || scFormatGroup == -1 || uiFormatGroup != scFormatGroup) { - LOG_WARN("Skipping UI resource due to format mismatch! UI: {}, swapchain: {}", uiFormatGroup, - scFormatGroup); + if (!UIFormatTransfer(fIndex, _device, GetUICommandList(fIndex), format, fResource)) + { + LOG_WARN("Skipping UI resource due to format mismatch! UI: {}, swapchain: {}", uiFormatGroup, + scFormatGroup); - _frameResources[fIndex][type] = {}; - - return; + _frameResources[fIndex][type] = {}; + return; + } + else + { + fResource->validity = FG_ResourceValidity::UntilPresent; + } } _noUi[fIndex] = false; @@ -956,19 +1048,26 @@ void FSRFG_Dx12::SetResource(Dx12Resource* inputResource) _noDistortionField[fIndex] = false; else if (type == FG_ResourceType::HudlessColor) { + auto format = State::Instance().currentSwapchainDesc.BufferDesc.Format; + auto hudlessFormatGroup = GetFormatPrecisionGroup( (FfxApiSurfaceFormat) ffxApiGetSurfaceFormatDX12(fResource->GetResource()->GetDesc().Format)); - auto scFormatGroup = GetFormatPrecisionGroup( - (FfxApiSurfaceFormat) ffxApiGetSurfaceFormatDX12(State::Instance().currentSwapchainDesc.BufferDesc.Format)); + auto scFormatGroup = GetFormatPrecisionGroup((FfxApiSurfaceFormat) ffxApiGetSurfaceFormatDX12(format)); if (hudlessFormatGroup == -1 || scFormatGroup == -1 || hudlessFormatGroup != scFormatGroup) { - LOG_WARN("Skipping hudless resource due to format mismatch! hudless: {}, swapchain: {}", hudlessFormatGroup, - scFormatGroup); + if (!HudlessFormatTransfer(fIndex, _device, GetUICommandList(fIndex), format, fResource)) + { + LOG_WARN("Skipping hudless resource due to format mismatch! hudless: {}, swapchain: {}", + hudlessFormatGroup, scFormatGroup); - _frameResources[fIndex][type] = {}; - - return; + _frameResources[fIndex][type] = {}; + return; + } + else + { + fResource->validity = FG_ResourceValidity::UntilPresent; + } } _noHudless[fIndex] = false; diff --git a/OptiScaler/framegen/ffx/FSRFG_Dx12.h b/OptiScaler/framegen/ffx/FSRFG_Dx12.h index 230c7ce5..7823e27c 100644 --- a/OptiScaler/framegen/ffx/FSRFG_Dx12.h +++ b/OptiScaler/framegen/ffx/FSRFG_Dx12.h @@ -4,6 +4,8 @@ #include +#include + #include #include @@ -18,6 +20,9 @@ class FSRFG_Dx12 : public virtual IFGFeature_Dx12 uint32_t _maxRenderWidth = 0; uint32_t _maxRenderHeight = 0; + std::unique_ptr _hudlessTransfer[BUFFER_COUNT]; + std::unique_ptr _uiTransfer[BUFFER_COUNT]; + ID3D12GraphicsCommandList* _fgCommandList[BUFFER_COUNT] {}; ID3D12CommandAllocator* _fgCommandAllocator[BUFFER_COUNT] {}; @@ -53,6 +58,10 @@ class FSRFG_Dx12 : public virtual IFGFeature_Dx12 bool ExecuteCommandList(int index); bool Dispatch(); void ConfigureFramePaceTuning(); + bool HudlessFormatTransfer(int index, ID3D12Device* device, ID3D12GraphicsCommandList* cmdList, + DXGI_FORMAT targetFormat, Dx12Resource* resource); + bool UIFormatTransfer(int index, ID3D12Device* device, ID3D12GraphicsCommandList* cmdList, DXGI_FORMAT targetFormat, + Dx12Resource* resource); protected: void ReleaseObjects() override final; From 69e6d6e86855e190be99b107fb4cf3ac6845f215 Mon Sep 17 00:00:00 2001 From: TheRazerMD Date: Thu, 30 Oct 2025 11:55:18 +0100 Subject: [PATCH 6/8] Added Dead Space quirk * DisableDxgiSpoofing --- OptiScaler/misc/Quirks.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OptiScaler/misc/Quirks.h b/OptiScaler/misc/Quirks.h index 921dcbd0..4ad77ecd 100644 --- a/OptiScaler/misc/Quirks.h +++ b/OptiScaler/misc/Quirks.h @@ -163,7 +163,7 @@ static const QuirkEntry quirkTable[] = { // Collection, Warhammer 40,000: Darktide, Dying Light 2 Stay Human, Dying Light: The Beast, Observer: System Redux, // Sackboy: A Big Adventure, Hellblade: Senua's Sacrifice, Pumpkin Jack, Metro Exodus Enhanced Edition, Rise of the // Ronin, DYNASTY WARRIORS: ORIGINS, Crysis Remastered, Crysis 2 Remastered, Mortal Shell, Sekiro: Shadows Die - // Twice (for SekiroTSR mod), The Medium, NINJA GAIDEN 4 (+ WinGDK) + // Twice (for SekiroTSR mod), The Medium, NINJA GAIDEN 4 (+ WinGDK), Dead Space Remake QUIRK_ENTRY("witcher3.exe", GameQuirk::DisableDxgiSpoofing), QUIRK_ENTRY("alanwake2.exe", GameQuirk::DisableDxgiSpoofing), QUIRK_ENTRY("crysis3remastered.exe", GameQuirk::DisableDxgiSpoofing), @@ -189,6 +189,7 @@ static const QuirkEntry quirkTable[] = { QUIRK_ENTRY_UE(medium, GameQuirk::DisableDxgiSpoofing), QUIRK_ENTRY("ninjagaiden4-steam.exe", GameQuirk::DisableDxgiSpoofing), QUIRK_ENTRY("ninjagaiden4-wingdk.exe", GameQuirk::DisableDxgiSpoofing), // NG4 WinGDK + QUIRK_ENTRY("dead space.exe", GameQuirk::DisableDxgiSpoofing), // FSR2 only, no spoof needed // From cab1dfc51b1bc261de876df6710a0118b1adf7ee Mon Sep 17 00:00:00 2001 From: TheRazerMD Date: Thu, 30 Oct 2025 15:50:34 +0100 Subject: [PATCH 7/8] Added God of War (2018) quirk * DisableDxgiSpoofing --- OptiScaler/misc/Quirks.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OptiScaler/misc/Quirks.h b/OptiScaler/misc/Quirks.h index 4ad77ecd..a9c44ba9 100644 --- a/OptiScaler/misc/Quirks.h +++ b/OptiScaler/misc/Quirks.h @@ -163,7 +163,7 @@ static const QuirkEntry quirkTable[] = { // Collection, Warhammer 40,000: Darktide, Dying Light 2 Stay Human, Dying Light: The Beast, Observer: System Redux, // Sackboy: A Big Adventure, Hellblade: Senua's Sacrifice, Pumpkin Jack, Metro Exodus Enhanced Edition, Rise of the // Ronin, DYNASTY WARRIORS: ORIGINS, Crysis Remastered, Crysis 2 Remastered, Mortal Shell, Sekiro: Shadows Die - // Twice (for SekiroTSR mod), The Medium, NINJA GAIDEN 4 (+ WinGDK), Dead Space Remake + // Twice (for SekiroTSR mod), The Medium, NINJA GAIDEN 4 (+ WinGDK), Dead Space Remake, God of War (2018) QUIRK_ENTRY("witcher3.exe", GameQuirk::DisableDxgiSpoofing), QUIRK_ENTRY("alanwake2.exe", GameQuirk::DisableDxgiSpoofing), QUIRK_ENTRY("crysis3remastered.exe", GameQuirk::DisableDxgiSpoofing), @@ -190,6 +190,7 @@ static const QuirkEntry quirkTable[] = { QUIRK_ENTRY("ninjagaiden4-steam.exe", GameQuirk::DisableDxgiSpoofing), QUIRK_ENTRY("ninjagaiden4-wingdk.exe", GameQuirk::DisableDxgiSpoofing), // NG4 WinGDK QUIRK_ENTRY("dead space.exe", GameQuirk::DisableDxgiSpoofing), + QUIRK_ENTRY("gow.exe", GameQuirk::DisableDxgiSpoofing), // FSR2 only, no spoof needed // From 65dd3ff987c40af38dece19aa28286d16f84b5c7 Mon Sep 17 00:00:00 2001 From: TheRazerMD Date: Thu, 30 Oct 2025 17:36:18 +0100 Subject: [PATCH 8/8] Some INI changes * Default Log value is now Debug * Various aesthetic changes --- OptiScaler.ini | 195 +++++++++++++++++++++++++------------------------ 1 file changed, 99 insertions(+), 96 deletions(-) diff --git a/OptiScaler.ini b/OptiScaler.ini index 0a40fca9..2b265ebc 100644 --- a/OptiScaler.ini +++ b/OptiScaler.ini @@ -1,15 +1,15 @@ ; ------------------------------------------------------- [Upscalers] ; ------------------------------------------------------- -; Select upscaler for Dx11 games +; Select Upscaler for Dx11 games ; fsr22 (native DX11), fsr31 (native DX11), xess (native DX11, Arc only), xess_12 (dx11on12), fsr21_12 (dx11on12), fsr22_12 (dx11on12), fsr31_12 (dx11on12, FSR4), dlss - Default (auto) is fsr22 Dx11Upscaler=auto -; Select upscaler for Dx12 games +; Select Upscaler for Dx12 games ; xess, fsr21, fsr22, fsr31 (also for FSR4), dlss - Default (auto) is xess Dx12Upscaler=auto -; Select upscaler for Vulkan games +; Select Upscaler for Vulkan games ; fsr21, fsr22, fsr31, xess, dlss - Default (auto) is fsr21 VulkanUpscaler=auto @@ -18,17 +18,17 @@ VulkanUpscaler=auto ; ------------------------------------------------------- [FrameGen] ; ------------------------------------------------------- -; Enables frame generation +; Enables Frame Generation ; true or false - Default (auto) is false Enabled=auto ; Selected FG Input/Source -; nukems - Limited to FSR 3 FG. Requires DLSSG in the game. Supports hudless out of the box. Uses streamline swapchain for pacing. -; fsrfg - Can be used with any FG Output. Supports hudless out of the box. -; dlssg - Can be used with any FG Output. Supports hudless out of the box. Limited to games that use Streamline v2 and DLSSG +; dlssg - Can be used with any FG Output. Supports Hudless out of the box. Limited to games that use Streamline v2 and DLSSG +; nukems - Limited to FSR 3 FG. Requires DLSSG in the game. Supports Hudless out of the box. Uses Streamline swapchain for pacing. +; fsrfg - Can be used with any FG Output. Supports Hudless out of the box. ; upscaler - Upscaler must be enabled. Can be used with any FG Output, but might be imperfect with some. To prevent UI glitching, Hudfix is required -; fsrfg30 - Can be used with any FG Output. Supports hudless out of the box. -; nofg, upscaler, fsrfg, dlssg, nukems - Default (auto) is nofg +; fsrfg30 - Can be used with any FG Output. Supports Hudless out of the box. +; nofg, dlssg, nukems, fsrfg, upscaler, fsrfg30 - Default (auto) is nofg FGInput=auto ; Selected FG Output @@ -38,7 +38,7 @@ FGInput=auto ; nofg, fsrfg, xefg, nukems - Default (auto) is nofg FGOutput=auto -; Enables frame generation debug view +; Enables Frame Generation Debug View ; true or false - Default (auto) is false DebugView=auto @@ -50,7 +50,7 @@ DrawUIOverFG=auto ; true or false - Default (auto) is true UIPremultipliedAlpha=auto -; Control hudless, even if FG source provides one +; Control Hudless, even if FG source provides one ; true or false - Default (auto) is false DisableHudless=auto @@ -67,19 +67,19 @@ SkipReset=auto ; ------------------------------------------------------- [FSRFG] ; ------------------------------------------------------- -; Enables FSR3.1 frame generation tear lines +; Enables FSR3.1 Frame Generation Tear Lines ; true or false - Default (auto) is false DebugTearLines=auto -; Enables FSR3.1 frame generation interpolation skip lines +; Enables FSR3.1 Frame Generation interpolation skip lines ; true or false - Default (auto) is false DebugResetLines=auto -; Enables FSR3.1 frame generation pacing lines +; Enables FSR3.1 Frame Generation pacing lines ; true or false - Default (auto) is false DebugPacingLines=auto -; Enables async FSR3.1 frame generation +; Enables async FSR3.1 Frame Generation ; true or false - Default (auto) is false AllowAsync=auto @@ -162,11 +162,11 @@ JitteredMV=auto ; true or false - Default (auto) is false HighResMV=auto -; Enables XeFG frame generation debug squares +; Enables XeFG debug squares ; true or false - Default (auto) is false DebugView=auto -; Forces borderless mode instead of exclusive fullscreen +; Forces Borderless mode instead of Exclusive Fullscreen ; It might cause stability issues on mode changes ; or IQ issues when exclusive fullscreen mode is ; smaller than diplay resolution @@ -201,7 +201,7 @@ ModifySCIndex=auto [OptiFG] ; ------------------------------------------------------- -; Enables HUD fix FSR3.1 frame generation +; Enables HUD fix FSR3.1 Frame Generation ; Might cause crashes, specially with Async ; true or false - Default (auto) is false HUDFix=auto @@ -352,11 +352,11 @@ UseFsr3Inputs=auto ; true or false - Default (auto) is false Fsr3Pattern=auto -; OptiScaler will hook FidelityFX (amd_fidelityfx_dx12.dll) Api Inputs +; OptiScaler will hook FidelityFX (amd_fidelityfx_dx12.dll) API Inputs ; true or false - Default (auto) is true EnableFfxInputs=auto -; OptiScaler will use FidelityFX Api Inputs +; OptiScaler will use FidelityFX API Inputs ; true or false - Default (auto) is true UseFfxInputs=auto @@ -369,8 +369,8 @@ EnableHotSwapping=auto ; ------------------------------------------------------- [Framerate] ; ------------------------------------------------------- -; Frame rate limit that uses Reflex therefore the game has to support Reflex and have it enabled -; AMD users can use fakenvapi to get this feature working +; Frame rate limit that uses Reflex, therefore the game has to support Reflex and have it enabled +; AMD users can use Fakenvapi to get this feature working ; float - Default (auto) is 0.0 (disabled) FramerateLimit=auto @@ -387,7 +387,8 @@ BuildPipelines=auto ; true or false - Default (auto) is false CreateHeaps=auto -;Select XeSS network model +; Select XeSS network model +; Currently doesn't seem to do anything ; 0 = KPSS | 1 = Splat | 2 = Model 3 | 3 = Model 4 | 4 = Model 5 | 5 = Model 6 ; Default (auto) is 0 NetworkModel=auto @@ -411,7 +412,7 @@ Dx11LibraryPath=auto ; 0.0 to 180.0 - Default (auto) is 60.0 VerticalFov=auto -; If vertical fov is not defined will be used to calculate vertical fov +; If Vertical FOV is not defined will be used to calculate Vertical FOV ; 0.0 to 180.0 - Default (auto) is off HorizontalFov=auto @@ -423,43 +424,43 @@ CameraNear=auto ; 0.0 to max float value - Default (auto) is 10000.0 CameraFar=auto -; Enables usage of camera values (near, far, fov) +; Enables usage of camera values (near, far, FOV) ; received from FSR2/3 or FFX inputs ; true or false - Default (auto) is true UseFsrInputValues=auto -; Enables debug view for FSR3.X upscaler +; Enables Debug View for FSR3.X upscaler ; true or false - Default (auto) is false DebugView=auto -; Selects upscaler backend for FSR3.X -; 0 = FSR 3.1.2 | 1 = FSR 2.3.2 -; 0 or 1 (for now) - Default (auto) is 0 +; Selects upscaler backend for FSR3.X/4 +; 0 = FSR 4.0.2 | 1 = FSR 3.1.5 | 2 = FSR 2.3.4 +; Depending on GPU - Default (auto) is 0 - FSR4 for RDNA4, FSR3 for the rest UpscalerIndex=auto -; Sets velocity factor for FSR3.1.1 and above +; Sets Velocity Factor for FSR3.1.1 and above ; Value of 0.0f can improve temporal stability of bright pixels. ; 0.0 to 1.0 - Default (auto) is 1.0 VelocityFactor=auto -; Sets reactiveness scale for FSR3.1.4 and above +; Sets Reactiveness Scale for FSR3.1.4 and above ; Meant for development purpose to test if writing a larger value to reactive mask, reduces ghosting ; 0.0 to infinite - Default (auto) is 1.0 ReactiveScale=auto -; Sets shading scale for FSR3.1.4 and above +; Sets Shading Scale for FSR3.1.4 and above ; Increasing this scales fsr3.1 computed shading change value at read to have higher reactiveness. ; 0.0 to infinite - Default (auto) is 1.0 ShadingScale=auto -; Sets accumulation added per frame for FSR3.1.4 and above +; Sets Accumulation added per frame for FSR3.1.4 and above ; Corresponds to amount of accumulation added per frame at pixel coordinate where disocclusion occurred or when reactive mask value is > 0.0f. ; Decreasing this and drawing the ghosting object (IE no mv) to reactive mask with value close to 1.0f can decrease temporal ghosting. ; Decreasing this value could result in more thin feature pixels flickering. ; 0.0 to 1.0 - Default (auto) is 0.333 AccAddPerFrame=auto -; Sets minimum disocclusion accumulation for FSR3.1.4 and above +; Sets Minimum Disocclusion Accumulation for FSR3.1.4 and above ; Increasing this value may reduce white pixel temporal flickering around swaying thin objects that are disoccluding one another often. ; Too high value may increase ghosting. A sufficiently negative value means for pixel coordinate at frame N that is disoccluded, ; add fAccumulationAddedPerFrame starting at frame N+2. @@ -476,24 +477,24 @@ UseReactiveMaskForTransparency=auto DlssReactiveMaskBias=auto ; Enables updating of FSR3.X to FSR4 -; true or false - Default (auto) is depends on GPU +; true or false - Default (auto) depends on GPU - true for RDNA4 Fsr4Update=auto ; Select FSR4 model to use -; 0 = model used for FSR AA/Quality, 5 = model used for FSR Ultra Performance +; 0 = For FSR Native AA, 1 = Ultra Quality/Quality, 2 = Balanced, 3 = Performance, 4 = DRS, 5 = Ultra Performance ; From 0 to 5 - Default (auto) is game's default Fsr4Model=auto -; Enable FSR4 debug view visualization +; Enable FSR4 Debug View visualization ; Might consume more VRAM ; true or false - Default (auto) is false Fsr4EnableDebugView=auto -; Enable FSR4 watermark +; Enable FSR4 Watermark ; true or false - Default (auto) is false Fsr4EnableWatermark=auto -; Indicates input color resource uses non-linear color space +; Indicates input color resource uses Non-Linear color space ; Might improve IQ of FSR4 ; true or false - Default (auto) is false FsrNonLinearColorSpace=auto @@ -510,7 +511,7 @@ FsrNonLinearPQ=auto ; Updates the DirectX 12 Agility SDK ; Enabling the use of FSR4 on Windows 10 in older titles like Cyberpunk 2077 -; You MUST copy D3D12_OptiScaler folder next to games exe! +; You MUST copy D3D12_OptiScaler folder next to game's exe! ; true or false - Default (auto) is false FsrAgilitySDKUpgrade=auto @@ -546,7 +547,7 @@ FeaturePath=auto ; Override path of nvngx_dlss.dll ; Example - D:\Downloads\OptiScaler\nvngx_dlss.dll -; Default (auto) is means override disabled +; Default (auto) means override disabled NVNGX_DLSS_Path=auto ; Set this to true to enable custom render preset overrides @@ -554,7 +555,7 @@ NVNGX_DLSS_Path=auto RenderPresetOverride=auto ; Render presets for quality settings -; Depends on DLSS version but most recent order is +; Depends on DLSS version, but most recent order is ; 0 = Default | 1 = A | 2 = B | 3 = C | 4 = D | 5 = E | 6 = F | 7 = G ; 8 = H | 9 = I | 10 = J | 11 = K | 12 = L | 13 = M | 14 = N | 15 = O ; Default (auto) is 0 @@ -576,7 +577,7 @@ UseGenericAppIdWithDlss=auto [Nukems] ; ------------------------------------------------------- ; Fix broken visuals in some games (mostly non-UE) on AMD GPUs under Windows -; Can cause stutters so best to use only when necessary +; Can cause stutters, so best to use only when necessary and mentioned ; true or false - Default (auto) is false MakeDepthCopy=auto @@ -585,7 +586,7 @@ MakeDepthCopy=auto ; ------------------------------------------------------- [Menu] ; ------------------------------------------------------- -; Enables new overlay ImGui menus +; Enables new Overlay ImGui menus ; without this option OptiScaler will disable all FG features ; true or false - Default (auto) is when OptiScaler is nvngx.dll false otherwise true OverlayMenu=auto @@ -596,16 +597,17 @@ Scale=auto ; Shortcut key for opening menu ; For all keycode values you can check this address +; Match Description with key Value ; https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes -; Integer value - Default (auto) is 0x2D -> VK_INSERT, previous default key VK_HOME is 0x24 +; Integer value - Default (auto) is 0x2D -> VK_INSERT/Insert key, previous default key VK_HOME/Home key is 0x24 ; -1 -> No shortcut key ShortcutKey=auto -; Extends scaling ratio limits to 0.1 - 6.0 +; Extends Scaling Ratio limits to 0.1 - 6.0 ; true or false - Default (auto) is false ExtendedLimits=auto -; Use high quality font for menu +; Use High Quality Font for Menu ; Might use more VRAM ; If you see a black overlay or experience menu related crashes with Vulkan, try disabling ; true or false - Default (auto) is true @@ -617,11 +619,11 @@ UseHQFont=auto ; Default (auto) is Hack-Regular bundled with OptiScaler TTFFontPath=auto -; Disables startup splash message +; Disables Startup Splash message ; true or false - Default (auto) is false DisableSplash=auto -; Enables Fps overlay +; Enables FPS overlay ; true or false - Default (auto) is false ShowFps=auto @@ -629,36 +631,36 @@ ShowFps=auto ; 0.5 to 2.0 - Default (auto) is using the same scale as menu FpsScale=auto -; Fps overlay position +; FPS overlay position ; 0 = Top Left | 1 = Top Right | 2 = Bottom Left | 3 Bottom Right ; 0 to 3 - Default (auto) is 0 FpsOverlayPos=auto -; Fps overlay type +; FPS overlay type ; 0 = Just FPS | 1 = Simple | 2 = Detailed | 3 = Detailed + Graph | 4 Full | 5 Full + Graph | 6 Reflex timings ; 0 to 6 - Default (auto) is 0 FpsOverlayType=auto -; Shortcut key for fps overlay -; Integer value - Default (auto) is 0x21 -> VK_PRIOR +; Shortcut key for FPS overlay +; Integer value - Default (auto) is 0x21 -> VK_PRIOR/Page up key ; -1 -> No shortcut key FpsShortcutKey=auto -; Shortcut key for fps overlay type cycle -; Integer value - Default (auto) is 0x22 -> VK_NEXT +; Shortcut key for FPS overlay type cycle +; Integer value - Default (auto) is 0x22 -> VK_NEXT/Page down key ; -1 -> No shortcut key FpsCycleShortcutKey=auto -; Enables Horizontal Fps overlay layout +; Enables Horizontal FPS overlay layout ; true or false - Default (auto) is false FpsOverlayHorizontal=auto -; Fps Overlay background alpha +; FPS Overlay background alpha ; 0.0 to 1.0 - Default (auto) is 0.4 FpsOverlayAlpha=auto -; Shortcut key for enable/disable FG -; Integer value - Default (auto) is 0x23 -> VK_END +; Shortcut key for FG enabled/disabled +; Integer value - Default (auto) is 0x23 -> VK_END/End key ; -1 -> No shortcut key FGShortcutKey=auto @@ -667,21 +669,21 @@ FGShortcutKey=auto ; ------------------------------------------------------- [Spoofing] ; ------------------------------------------------------- -; VerdorId to spoof +; VendorID to spoof ; 0x10de = Nvidia | 0x8086 = Intel | 0x1002 = AMD ; Integer value - Default (auto) is 0x10de SpoofedVendorId=auto -; DeviceId to spoof +; DeviceID to spoof ; 0x2684 = 4090 | 0x56A0 = A770 | 0x7550 9070 XT ; Integer value - Default (auto) is 0x2684 (4090) SpoofedDeviceId=auto -; Target VerdorId to be spoofed +; Target VendorID to be spoofed ; Integer value - Default (auto) is all TargetVendorId=auto -; Target DeviceId to be spoofed +; Target DeviceID to be spoofed ; Default (auto) is all TargetDeviceId=auto @@ -690,13 +692,13 @@ TargetDeviceId=auto ; Default (auto) is NVIDIA GeForce RTX 4090 SpoofedGPUName=auto -; Enables GPU spoofing for Streamline even if Dxgi spoofing is disabled for the rest of the game -; Usually allows for using fakenvapi without spoofing the whole game, and sometimes DLSS/DLSSG +; Enables GPU spoofing for Streamline, even if Dxgi spoofing is disabled for the rest of the game +; Usually allows for using Fakenvapi without spoofing the whole game, and sometimes DLSS/DLSSG ; true or false - Default (auto) is true StreamlineSpoofing=auto ; Enables Nvidia GPU spoofing for DXGI -; true or false - Default (auto) is true +; true or false - Default (auto) is true for AMD/Intel, false for Nvidia Dxgi=auto ; Enables wrapping of DxgiFactory instead of hooking @@ -705,7 +707,7 @@ Dxgi=auto DxgiFactoryWrapping=auto ; Skips DXGI GPU spoofing when caller method in the list (example: slInit|slGetPluginFunction|nvapi_QueryInterface) -; Be careful this will disable spoofing for rest of the calls also does not work on Linux +; Be careful this will disable spoofing for rest of the calls, also does not work on Linux ; method names seperated with pipe "|" - Default (auto) is disabled DxgiBlacklist=auto @@ -725,8 +727,8 @@ VulkanExtensionSpoofing=auto ; Spoofed amount in GBs - Default (auto) is disabled VulkanVRAM=auto -; Enables spoofing of hardware accelerated gpu scheduling -; Required for nukem's mod, lets RTX40xx series users use DLSSG without HAGS enabled +; Enables spoofing of Hardware Accelerated GPU Scheduling +; Required for Nukem's mod, also lets RTX40xx series users use DLSSG without HAGS enabled ; true or false - Default (auto) is false, unless DLSSG mod is enabled SpoofHAGS=auto @@ -748,13 +750,13 @@ UEIntelAtomics=auto ; Default is .\plugins Path=auto -; OptiScaler loads *.asi files in plugins folder +; Lets OptiScaler load *.asi files in plugins folder ; true or false - Default (auto) is false LoadAsiPlugins=auto ; Loads SpecialK64.dll from game's exe folder ; Please put a SpecialK.dxgi file next to SpecialK64.dll -; to set SpecialK's working mode otherwise it will not be activated +; to set SpecialK's working mode, otherwise it will not be activated ; BECAUSE OF STABILITY ISSUES, WILL NOT BE LOADED WHEN OPTIFG IS ENABLED ; true or false - Default (auto) is false LoadSpecialK=auto @@ -821,11 +823,11 @@ UseNtdllHooks=auto ; ------------------------------------------------------- [Sharpness] ; ------------------------------------------------------- -; Override DLSS sharpness paramater with fixed shapness value +; Override DLSS Sharpness parameter with fixed Sharpness value ; true or false - Default (auto) is false OverrideSharpness=auto -; Strength of sharpening, +; Strength of Sharpening, ; value range between 0.0 and 1.0 (while using upper limit is RCAS 1.3) - Default (auto) is 0.3 Sharpness=auto @@ -834,11 +836,11 @@ Sharpness=auto ; ------------------------------------------------------- [OutputScaling] ; ------------------------------------------------------- -; Enable output scaling option for Dx12 and Dx11 with Dx12 backends +; Enable Output Scaling option for Dx12 and Dx11 with Dx12 backends ; true or false - Default (auto) is false Enabled=auto -; Output scaling ratio +; Output Scaling ratio ; 0.5 - 3.0 - Default (auto) is 1.5 Multiplier=auto @@ -860,7 +862,7 @@ Downscaler=auto ; true or false - Default (auto) is false Enabled=auto -; Enable motion sharpness +; Enable Motion Sharpness ; true or false - Default (auto) is false MotionSharpnessEnabled=auto @@ -868,7 +870,7 @@ MotionSharpnessEnabled=auto ; value range between -1.3 and 1.3 - Default (auto) is 0.4 MotionSharpness=auto -; How much a pixel should move before motion sharpness applied +; How much a pixel should move before Motion Sharpness applied ; 0.0 - 100.0 - Default (auto) is 0.0 MotionThreshold=auto @@ -877,7 +879,7 @@ MotionThreshold=auto ; 0.0 - 100.0 - Default (auto) is 10.0 MotionScaleLimit=auto -; Enable debug highlighting for motion sharpening +; Enable Debug Highlighting for Motion Sharpening ; Reddish hue for added greenish for reduced sharpness ; true or false - Default (auto) is false MotionSharpnessDebug=auto @@ -904,7 +906,7 @@ LogFile=auto ; Verbosity level of file logs ; 0 = Trace / 1 = Debug / 2 = Info / 3 = Warning / 4 = Error -; Default (auto) is 2 = Info +; Default (auto) is 1 = Debug LogLevel=auto ; Log to console (Log level is always 2 (Info) for performance reasons) @@ -945,7 +947,7 @@ LogAsyncThreads=auto [InitFlags] ; ------------------------------------------------------- ; Force add ENABLE_AUTOEXPOSURE to init flags -; Some Unreal Engine games needs this, fixes colors specially in dark areas +; Some Unreal Engine games need this, fixes colors specially in dark areas ; true or false - Default (auto) is DLSS value AutoExposure=auto @@ -974,11 +976,11 @@ DisableReactiveMask=auto ; ------------------------------------------------------- [UpscaleRatio] ; ------------------------------------------------------- -; Set this to true to enable the internal resolution override +; Set this to true to enable the internal Resolution Override ; true or false - Default (auto) is false UpscaleRatioOverrideEnabled=auto -; Set the forced upscale ratio value +; Set the forced Upscale Ratio value ; Default (auto) is 1.3 UpscaleRatioOverrideValue=auto @@ -987,11 +989,11 @@ UpscaleRatioOverrideValue=auto ; ------------------------------------------------------- [QualityOverrides] ; ------------------------------------------------------- -; Set this to true to enable custom quality mode overrides +; Set this to true to enable Custom quality mode overrides ; true or false - Default (auto) is false QualityRatioOverrideEnabled=auto -; Set custom upscaling ratio for each quality mode +; Set Custom Upscaling Ratio for each quality mode ; ; Default (auto) values: ; DLAA : 1.0 @@ -1012,11 +1014,11 @@ QualityRatioUltraPerformance=auto ; ------------------------------------------------------- [DRS] ; ------------------------------------------------------- -; Set this to true to enable limiting DRS min resolution to rendering resolution +; Set this to true to enable limiting DRS min resolution to Rendering resolution ; true or false - Default (auto) is false DrsMinOverrideEnabled=auto -; Set this to true to enable limiting DRS max resolution to rendering resolution +; Set this to true to enable limiting DRS max resolution to Rendering resolution ; true or false - Default (auto) is false DrsMaxOverrideEnabled=auto @@ -1061,15 +1063,15 @@ SyncInterval=auto ; ------------------------------------------------------- [Anisotropy] ; ------------------------------------------------------- -; Override max anisotropy for textures +; Override max Anisotropy/Anisotropic Filtering for textures ; 2, 4, 8, 16 - Default (auto) is disabled AnisotropyOverride=auto -; Change comparison filters to anisotropic ones +; Change comparison filters to Anisotropic ones ; true or false - Default (auto) is true ModifyComparison=auto -; Change min/max filters to anisotropic ones +; Change min/max filters to Anisotropic ones ; true or false - Default (auto) is true ModifyMinMax=auto @@ -1083,11 +1085,11 @@ SkipPointFilter=auto ; ------------------------------------------------------- [Mipmap] ; ------------------------------------------------------- -; Override value for mipmap lod bias +; Override value for Mipmap LOD bias ; -15.0 - 15.0 - Default (auto) is disabled MipmapBiasOverride=auto -; Use a fixed value for lod bias +; Use a fixed value for LOD bias ; true or false - Default (auto) is false MipmapBiasFixedOverride=auto @@ -1095,7 +1097,7 @@ MipmapBiasFixedOverride=auto ; true or false - Default (auto) is false MipmapBiasScaleOverride=auto -; Override all textures lod bias (normally only overriding < 0 values) +; Override all textures LOD bias (normally only overriding < 0 values) ; true or false - Default (auto) is false MipmapBiasOverrideAll=auto @@ -1110,14 +1112,15 @@ MipmapBiasOverrideAll=auto CheckForUpdate=auto ; Enables blocking of Steam and Epic overlays +; Also blocks Steam Input ; true or false - Default (auto) is false DisableOverlays=auto -; OptiScaler will try to force high performance GPU +; OptiScaler will try to force High Performance GPU ; true or false - Default (auto) is false PreferDedicatedGpu=auto -; OptiScaler will report only first high performance gpu +; OptiScaler will report only first High Performance GPU ; true or false - Default (auto) is false PreferFirstDedicatedGpu=auto @@ -1138,7 +1141,7 @@ RestoreComputeSignature=auto ; true or false - Default (auto) is false RestoreGraphicSignature=auto -; Use precompiled shaders for RCAS, Output Scaling ans Mask Bias +; Use precompiled shaders for RCAS, Output Scaling and Mask Bias ; true or false - Default (auto) is true UsePrecompiledShaders=auto @@ -1146,7 +1149,7 @@ UsePrecompiledShaders=auto ; For UE engine games on AMD, set it to 4 (D3D12_RESOURCE_STATE_RENDER_TARGET) ColorResourceBarrier=auto ; For UE engine games on AMD, set it to 8 (D3D12_RESOURCE_STATE_UNORDERED_ACCESS) -MotionVectorResourceBarrier=auto +MotionVectorResourceBarrier=auto DepthResourceBarrier=auto ColorMaskResourceBarrier=auto ExposureResourceBarrier=auto