Prosjektet lsfg-vk har utviklet en uoffisiell port av verktøyet Lossless Scalings Frame Generation (LSFG) for Linux-plattformen, som bruker DXVK og grafisk API Vulkan. Koden til prosjektet er skrevet i C++ og er tilgjengelig under MIT-lisensen. Utviklingen er utført av en uavhengig entusiast som har gjenskapt funksjonaliteten til den proprietære LSFG gjennom omvendt ingeniering av Windows-biblioteker.
Applikasjonen lar deg skalere utgangen fra spillverktøy som er designet for å kjøre i et eget vindu, for å vise dem i fullskjermmodus. Verktøyet kan også være nødvendig for å fjerne uskarphet i utgangen ved skalering med den innebygde grafikkunderstøttelsen, eller for å omgå begrensningene i spill som er låst til faste skjermoppløsninger. I tillegg er det mulig å øke jevnheten i utgangen og øke bildefrekvensen i spill som ikke er designet for høy FPS, ved å sette inn ekstra mellomliggende bilder som er laget på grunnlag av interpolering av nabobilder.
For å gjenskape manglende detaljer og skalere i LSFG kan både egne originale algoritmer og eksisterende teknologier basert på maskinlæring brukes, som AMD FidelityFX Super Resolution og NVIDIA Image Scaling. Valget av algoritme avhenger av typen spillapplikasjoner. For moderne spill anbefales det å bruke den originale LS1-algoritmen eller AMD FSR supersampling-teknologi. For eldre spill med pikselgrafikk foreslås algoritmene Integer Scaling og xBR, mens Anime4K-algoritmen er tilgjengelig for spill i tegnefilm- og anime-stil. I tillegg til spill kan modifikasjonen av utgangen også brukes på emulatorer for å kjøre retro-spill og spill for konsoller.
Skalering og innsetting av bilder skjer på farten og krever ingen endringer i spillene. I Linux-versjonen brukes en tilkobling til en behandler i form av et ekstra Vulkan-lag for å sette inn bilder og gripe inn i spillutgangen, ved hjelp av dette lagets mellomliggende funksjoner for å føring, utføre og endre eksisterende Vulkan-funksjoner. For å bruke lsfg-vk er det tilstrekkelig å installere biblioteket liblsfg-vk.so og konfigurere parametrene gjennom miljøvariabler.
Den originale LSFG er en kompilert applikasjon for Windows basert på D3D11 API. For å gjenskape funksjonaliteten til LSFG i Linux ble implementeringen oversatt til en representasjon som bruker Vulkan API. For å overføre shaderne ble det lagt til en behandler som fanger opp D3D11-kall og lagrer shaderne på disk, samt en parser for dynamisk trekking av shaders fra kjørbare filer i PE (Portable Executable) format. For å overføre den grafiske pipelinen som styrer utførelsen av shaderne, ble komponentene basert på D3D11 API utpekt, og med DXVK ble deres drift i Linux muliggjort. Etter å ha fått en fungerende versjon basert på D3D11 og DXVK, ble det gjennom debuggeren RenderDoc oppnådd en nøyaktig oppsett av Vulkan-kall, som dannet grunnlaget for den endelige varianten som direkte bruker Vulkan API.
Kilde: opennet.ru
