Skip to content

Latest commit

 

History

History
69 lines (54 loc) · 3.94 KB

File metadata and controls

69 lines (54 loc) · 3.94 KB

Frame generation

WinNative can interpolate extra frames between the ones your game actually renders. Interpolation runs on the Android side, inside WinNative's own Vulkan compositor rather than inside the Wine container, so it works with any graphics API Wine can drive — DXVK, WineD3D or native Vulkan alike.

There are two engines, both in the FG tab of the session drawer. Pick one — they are mutually exclusive, because the compositor drives a single interpolator per frame, and each keeps its own settings so switching between them does not disturb the other.

Engine Needs Character
Lossless Scaling (LSFG) Your own copy of Lossless Scaling on Steam The 25-shader chain from Lossless Scaling, ported to Vulkan
OpenFlow Nothing — ships with the APK Dense Inverse Search optical flow, fully open source

Lossless Scaling (LSFG)

You must own Lossless Scaling on Steam. Its shaders are not redistributable, so nothing ships with the APK. WinNative reads them out of your own copy of Lossless.dll, translates them from DXBC to SPIR-V once, and caches the result in app storage. The DLL is parsed as data and never executed.

Setup: sign in to Steam, install Lossless Scaling, then open Container Settings → Frame Generation. WinNative finds the DLL automatically from your Steam library; if it can't, use Select Lossless.dll… to point at it. The LSFG half of the FG tab stays disabled until the shaders import successfully.

OpenFlow

Nothing to buy, nothing to import. OpenFlow is a complete open-source Dense Inverse Search frame generator built into WinNative — sixteen compute shaders that ship with the APK — so it works on a fresh install with no Steam account and no Lossless.dll. Turn it on in the FG tab and it runs.

Controls

Control Engine What it does
Generate Frames Both Master toggle
Multiplier LSFG 2× / 3× / 4× — generated frames per rendered frame
Adaptive Target LSFG Aim for a specific output rate (60/90/120/144/165) instead of a fixed multiplier
Flow Scale LSFG 25–100%, resolution of the optical-flow pyramid; lower is cheaper and softer
Resolution Scale OpenFlow Fast / Balance / Quality — 180 / 252 / 360 pixels on the frame's shorter side
Target FPS OpenFlow Max refresh rate, or a specific one (60/90/120/144/165)
Show flow OpenFlow Debug view: renders the estimated motion field instead of the frame
FPS Limiter Both Caps the game's own frame rate, from 15 fps upward

OpenFlow states its Resolution Scale in pixels rather than as a percentage on purpose: a fixed pixel budget costs the same on a 720p container and a 1440p one, whereas the same percentage would cost four times as much on the larger container without telling the search anything more about the motion. Lower is cheaper; higher tracks small or fast-moving detail better.

What to expect

Frame generation costs one extra frame of input latency — interpolating between two frames means holding the newer one back. It also needs spare display refresh: generated frames occupy vblanks, so WinNative sizes the multiplier against your panel's refresh rate and the game's actual frame rate, and will hand back generated frames rather than take real ones from the game. A game already running near your panel's refresh rate has nothing to gain. Pairing a multiplier with an FPS limiter that divides the refresh rate evenly (120 Hz with a 60 fps cap at 2×, or 40 at 3×) gives the most even pacing.

Credits

Both engines are other people's work. The LSFG chain derives from Camille LaVey's Vulkan port in the Eden Emulator Project, which derives from PancakeTAS's lsfg-vk; the OpenFlow engine was contributed by qwertypower of DEVAR Entertainment LLC. See CREDITS.md for the full attribution, including which source files came from where.