Projektet lsfg-vk har udviklet en uofficiel port af værktøjet Lossless Scalings Frame Generation (LSFG) til Linux-platformen, der bruger DXVK og grafik-API'en Vulkan. Koden til projektet er skrevet i C++ og frigivet under MIT-licensen. Udviklingen er udført af en uafhængig entusiast, der har genskabt funktionaliteterne fra den proprietære LSFG via reverse engineering af Windows-biblioteker.
Anvendelsen gør det muligt at skalere output fra spilapplikationer, der er designet til at køre i et vindue, for at vise dem i fuldskærms-tilstand. Værktøjet kan også være nødvendigt for at fjerne slørede billeder ved skalering med den almindelige grafiske subsystem eller for at omgå begrænsninger i spil, der er knyttet til faste skærmopløsninger. Derudover er der mulighed for at forbedre glidningen og øge billedfrekvensen i spil, der ikke er designet til høj FPS, ved at indsætte ekstra billeder skabt på baggrund af interpolation af nabo-billeder.
Til at genskabe manglende detaljer og skalering i LSFG kan både egne originale algoritmer og eksisterende teknologier baseret på maskinlæring, såsom AMD FidelityFX Super Resolution og NVIDIA Image Scaling, anvendes. Valget af algoritme afhænger af typen af spilapplikationer. For moderne spil anbefales det at bruge den egenudviklede algoritme LS1 eller teknologien til supersampling AMD FSR. For ældre spil med pixelgrafik tilbydes algoritmerne Integer Scaling og xBR, mens algoritmen Anime4K er tilgængelig for spil i tegneserie- og anime-stil. Udover spil kan output-modifikationen også anvendes til emulatorer til at køre retro-spil og konsol-spil.
Skalering og billedindsættelse foregår on-the-fly og kræver ikke ændringer i spillene. I versionen til Linux bruges et tilslutningshandler i form af et ekstra Vulkan-lag til billedindsættelse og indgriben i spillets output, ved hjælp af hvilket eksisterende Vulkan-funktioner fanges, udføres og modificeres. For at bruge lsfg-vk er det tilstrækkeligt at installere biblioteket liblsfg-vk.so og konfigurere dets parametre via miljøvariable.
Den originale LSFG er en kompilering af en applikation til Windows baseret på D3D11 API. For at genskabe LSFG-funktionaliteten i Linux er implementeringen blevet oversat til en version, der bruger Vulkan API. For at overføre shaderne blev der tilføjet en behandler, der opfanger D3D11 kald og gemmer shaderne på disken samt en parser til dynamisk at udtrække shaderne fra kørende filer i PE (Portable Executable) format. For at overføre den grafiske pipeline, der styrer shaderudførelsen, blev komponenter baseret på D3D11 isoleret fra applikationen, og ved hjælp af DXVK blev deres funktionalitet sikret i Linux. Efter at have fået en fungerende version baseret på D3D11 og DXVK, blev der med debuggeren RenderDoc udarbejdet en præcis layout af Vulkan kald, som lå til grund for den endelige version, der bruger Vulkan API direkte.
Kilde: opennet.ru
