mirror of
https://github.com/optiscaler/OptiScaler.git
synced 2026-08-26 16:17:01 +00:00
Merge branch 'v0.9' of https://github.com/optiscaler/OptiScaler into v0.9
This commit is contained in:
+99
-96
@@ -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
|
||||
|
||||
@@ -8,6 +8,149 @@
|
||||
|
||||
#include <magic_enum.hpp>
|
||||
|
||||
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<FT_Dx12>("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<FT_Dx12>("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)
|
||||
{
|
||||
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
|
||||
@@ -882,11 +1025,59 @@ 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(format));
|
||||
|
||||
if (uiFormatGroup == -1 || scFormatGroup == -1 || 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;
|
||||
}
|
||||
else
|
||||
{
|
||||
fResource->validity = FG_ResourceValidity::UntilPresent;
|
||||
}
|
||||
}
|
||||
|
||||
_noUi[fIndex] = false;
|
||||
}
|
||||
else if (type == FG_ResourceType::Distortion)
|
||||
_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(format));
|
||||
|
||||
if (hudlessFormatGroup == -1 || scFormatGroup == -1 || 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;
|
||||
}
|
||||
else
|
||||
{
|
||||
fResource->validity = FG_ResourceValidity::UntilPresent;
|
||||
}
|
||||
}
|
||||
|
||||
_noHudless[fIndex] = false;
|
||||
}
|
||||
|
||||
// For FSR FG we always copy ValidNow
|
||||
if (fResource->validity == FG_ResourceValidity::ValidButMakeCopy)
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
#include <proxies/FfxApi_Proxy.h>
|
||||
|
||||
#include <shaders/format_transfer/FT_Dx12.h>
|
||||
|
||||
#include <dx12/ffx_api_dx12.h>
|
||||
#include <ffx_framegeneration.h>
|
||||
|
||||
@@ -18,6 +20,9 @@ class FSRFG_Dx12 : public virtual IFGFeature_Dx12
|
||||
uint32_t _maxRenderWidth = 0;
|
||||
uint32_t _maxRenderHeight = 0;
|
||||
|
||||
std::unique_ptr<FT_Dx12> _hudlessTransfer[BUFFER_COUNT];
|
||||
std::unique_ptr<FT_Dx12> _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;
|
||||
|
||||
@@ -924,7 +924,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)
|
||||
{
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <spoofing/Dxgi_Spoofing.h>
|
||||
#include <wrapped/wrapped_swapchain.h>
|
||||
|
||||
#include <magic_enum.hpp>
|
||||
#include <detours/detours.h>
|
||||
|
||||
// #define DETAILED_SC_LOGS
|
||||
@@ -187,6 +188,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())
|
||||
{
|
||||
@@ -331,6 +348,10 @@ HRESULT DxgiFactoryHooks::CreateSwapChain(IDXGIFactory* realFactory, IUnknown* p
|
||||
(size_t) pDevice);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_ERROR("CreateSwapChain failed: {:X}", (UINT) result);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -554,6 +575,10 @@ HRESULT DxgiFactoryHooks::CreateSwapChainForHwnd(IDXGIFactory2* realFactory, IUn
|
||||
|
||||
State::Instance().currentWrappedSwapchain = *ppSwapChain;
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_ERROR("CreateSwapChainForHwnd failed: {:X}", (UINT) result);
|
||||
}
|
||||
}
|
||||
|
||||
if (firstCall)
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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, God of War (2018)
|
||||
QUIRK_ENTRY("witcher3.exe", GameQuirk::DisableDxgiSpoofing),
|
||||
QUIRK_ENTRY("alanwake2.exe", GameQuirk::DisableDxgiSpoofing),
|
||||
QUIRK_ENTRY("crysis3remastered.exe", GameQuirk::DisableDxgiSpoofing),
|
||||
@@ -189,6 +189,8 @@ 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),
|
||||
QUIRK_ENTRY("gow.exe", GameQuirk::DisableDxgiSpoofing),
|
||||
|
||||
// FSR2 only, no spoof needed
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user