Put extra upscaler dlls in the "custom" folder inside the OptiScaler folder,
one folder per upscaler. The folder name is the name shown in the menu:
custom\<name>\ffx\<dll> upscaler using FFX api (e.g. another amd_fidelityfx_upscaler_dx12.dll)
custom\<name>\dlss\<dll> upscaler using DLSS api
- Each folder gets its own entry in the DX12 upscaler list.
- The dll can have any name. If a folder holds more than one dll, the
standard name (amd_fidelityfx_upscaler_dx12.dll or nvngx.dll) is used.
Slopped.
- Dynamic MFG skips isolated hitches: a frame 2.5x longer than the
average is skipped, a third in a row counts as a load change. At a
cap the measured waits don't explain (the game's own XeLL or AntiLag
2 sleep, a driver cap) it tries one step less now and then, at least
15 s after the last change.
- Dynamic MFG keeps its count while the game is in the background and
starts over once it is back in front.
- Dynamic MFG moves out of XeFG_Dx12 into XeFG_DynamicMFG. XeFG_Dx12
passes the wait it measured and applies the result.
- XeFG leaves the swapchain to the game when the game's own FSR Frame
Generation creates it (it crashed in Modern Warfare 4).
- With the AntiLag 2 output, each XeFG present gets its frame type from
its position in the batch: XeFG presents the real frame last.
hkslSetFeatureLoaded was attached only when o_slSetFeatureLoaded was
set, but nothing resolved it from sl.interposer, so the hook never went
in. With the DLSSG input slInit leaves DLSS-G out of featuresToLoad, and a
game that loads DLSS-G at device setup (Doom: The Dark Ages) got
eErrorFeatureFailedToLoad back and greyed out its frame generation
option. Resolve it with the other DLSS-G entry points and clear it if
the hooks fail to attach.
Optional appearance settings for the FPS overlay; with the defaults it looks
as before.
- Positions: Top Center, Bottom Center and Custom (X/Y in % of the screen).
- Rows: order with up/down arrows, row spacing, compact labels.
- Text: font from the Windows fonts folder or a file, font size, letter
spacing, label and value size, shadow or outline with strength and color.
- Colors: labels, values, graph and background, when not using the theme.
- Panel: background alpha, corner rounding (also for the menu), graph height,
scale from 0.5 to 3.0.
- Update interval: FPS, frame time and upscaler time averaged over it so they
can be read (default every frame).
- Presets and a settings code to copy, paste and share.
Fixes in the overlay drawing:
- Digits of the values take the widest digit's width, so numbers no longer
shift with fonts whose digits differ in width.
- Text, shadows and outlines on whole pixels; the outline is a filled ring
of opaque copies instead of 8 offset translucent ones.
- A corner that touches two screen edges is no longer rounded.
New FpsOverlayShowRatio option (ini + "Upscale Ratio" checkbox in the
FPS Overlay settings). When enabled, the overlay shows the current
render -> output resolution and upscale ratio, read every frame so
dynamic resolution changes are visible in real time.
"Just FPS" mode shows only the compact ratio (e.g. "60.0 | 2.00x").
Size the menu's per-buffer arrays and the blur's descriptor slots for 16 back buffers, the DXGI maximum, refuse larger chains in CreateRenderTargetDx12 and skip frames with an out-of-range back buffer index.