Projekt lsfg-vk připravil neoficiální port utilitky Lossless Scalings Frame Generation (LSFG) pro platformu Linux, která využívá DXVK a grafické API Vulkan. Kód projektu je napsán v jazyce C++ a je umístěn pod licencí MIT. Vývoj byl proveden externím nadšencem, který pomocí reverzního inženýrství znovu vytvořil funkcionalitu proprietárního LSFG.
Aplikace umožňuje škálování výstupu herních aplikací navržených pro spuštění v samostatném okně, aby je bylo možné zobrazit na celé obrazovce. Utilita může být také potřebná k odstranění rozmazaného výstupu při škálování pomocí integrované grafické subsystémy nebo k obcházení omezení ve hrách, které jsou vázány na pevná rozlišení obrazovky. Kromě toho je možné zvýšit plynulost výstupu a zvýšit snímkovou frekvenci ve hrách, které nejsou určeny pro vysoký FPS, pomocí doplnění dalších mezisnímků vytvořených na základě interpolace sousedních snímků.
K rekonstrukci chybějících detailů a škálování v LSFG mohou být použity jak vlastní originální algoritmy, tak existující technologie na bázi strojového učení, jako je AMD FidelityFX Super Resolution a NVIDIA Image Scaling. Výběr algoritmu závisí na typu herních aplikací. Například pro moderní hry se doporučuje používat vlastní algoritmus LS1 nebo technologii supersampling AMD FSR. Pro starší hry s pixelovou grafikou se navrhují algoritmy Integer Scaling a xBR, a pro hry ve stylu animovaných filmů a anime je k dispozici algoritmus Anime4K. Kromě samotných her může být modifikace výstupu aplikována také na emulátory pro spuštění retro her a her pro konzole.
Škálování a doplňování snímků se provádí za běhu a nevyžaduje změny v hrách. V linuxové variantě se pro doplňování snímků a zasahování do výstupu hry používá připojení zpracovatele ve formě další vrstvy Vulkan, pomocí které se provádí zachycení, provedení a modifikace existujících funkcí Vulkan. Pro použití lsfg-vk stačí nainstalovat knihovnu liblsfg-vk.so a nastavit její parametry prostřednictvím proměnných prostředí.
Originální LSFG je zkompilovaná aplikace pro Windows založená na API D3D11. Aby se funkčnost LSFG mohla replikovat v Linuxu, byla implementace převedena do podoby, která využívá API Vulkan. Pro přenos shaderů byl přidán zpracovatel, který zachycuje volání D3D11 a ukládá shadery na disk, a také parser pro dynamické extrakce shaderů z proveditelných souborů ve formátu PE (Portable Executable). Pro přenos grafického potrubí, které řídí vykonávání shaderů, byly z aplikace vyčleněny komponenty založené na API D3D11 a pomocí DXVK byla zajištěna jejich činnost v Linuxu. Po získání funkční varianty založené na D3D11 a DXVK byl pomocí debuggery RenderDoc získán přesný rozpis volání Vulkan, na jehož základě byla připravena finální verze, která přímo využívá API Vulkan.
Zdroj: opennet.ru
