There is an annoying issue where having vsync enabled, at least on AMD, causes buffers to get out of sync or something. Just added a hack for it coz I can't be bothered at this point.
Realistically this is only for doing Reflex -> VK AL, or Reflex -> LatencyFlex but whatever. Also Vulkan AntiLag on Windows requires enabling AntiLag in the control panel for that game so that's fun.
The Witcher 3 has both XeLL and Reflex. Once it had used XeLL, Auto kept
XeLL as the input even after switching to the game's own DLSSG with
Reflex. The game then turned XeLL off, which disabled Reflex in the
driver, and its Reflex calls were dropped. Auto now goes back to Reflex
when the game turns XeLL off.
XeFG input lets a game's own XeSS FG feed any FG output. XeFG output
redirects the game's libxess_fg to OptiScaler's copy (with Override XeFG
Ratio), FSR-FG and DLSSG outputs take over the game's XeFG calls.
Turns on LOW_LATENCY_INPUTS and adds a Reflex output. The FG output now
sets the latency output (XeFG: XeLL, DLSSG: Reflex, FSR-FG: AntiLag 2 on
AMD, Reflex on NVIDIA, XeLL on Intel), FSR-FG with Reflex sends the same
async markers and Reflex Sync as DLSSG, and the input choice is no longer
overwritten.
Slopped. Vendor's upscaler should be at the top. For FFX, the highest version fsr is shown in the main selection and all the other ffx upscalers are left in the separate selection.
Slopped. Blur enabled by default. The custom tab is also enabled by default with some common boxes enabled. The menu is taller by default.
The menu is slowly coming together I'd say. Please do share your feedback on Discord, good or bad.
Slopped. Updates the camera rotation using the absolute latest data. The idea is that the CPU constantly updates a mouse position that the GPU sees, GPU grabs it without sync (which is technically a race condition), uses them to compute the matrices and reprojects using that.
Basically what VR does but this is still not async.
Any config can have a per game value now without having to create special quirks and handling for each one. The values can also be conditional.
We were getting close to the uint64_t limit with our quirks so something had to be done.
A lot of slop, some overkill but sl hooks were already a mess and this makes them slightly cleaner in some areas.
Opti should now survive a game being on the sl denylist and sl plugin unloads.
Heavily slopped. Still open for suggestions, it's not necessarily final. Should give room for any future expansion. If you prefer having some settings on a single page then please take a look at the custom tab.