Das Projekt lsfg-vk hat einen inoffiziellen Port des Tools Lossless Scalings Frame Generation (LSFG) fĂŒr die Linux-Plattform erstellt, der DXVK und die Grafik-API Vulkan nutzt. Der Code des Projekts ist in C++ geschrieben und unter der MIT-Lizenz veröffentlicht. Die Entwicklung wurde von einem unabhĂ€ngigen Enthusiasten durchgefĂŒhrt, der die FunktionalitĂ€t des proprietĂ€ren LSFG durch Reverse Engineering von Windows-Bibliotheken nachgebildet hat.
Die Anwendung ermöglicht es, die Ausgabe von Spielen, die fĂŒr den Betrieb in einem separaten Fenster ausgelegt sind, fĂŒr die Darstellung im Vollbildmodus zu skalieren. Das Tool kann auch erforderlich sein, um unscharfe Ausgaben bei der Skalierung mit der Standard-GrafikunterstĂŒtzung zu vermeiden oder um EinschrĂ€nkungen in Spielen zu umgehen, die auf feste Bildschirmauflösungen festgelegt sind. DarĂŒber hinaus besteht die Möglichkeit, die FlĂŒssigkeit der Ausgabe zu verbessern und die Bildrate in Spielen, die nicht fĂŒr hohe FPS ausgelegt sind, zu erhöhen, indem zusĂ€tzliche Zwischenbilder eingefĂŒgt werden, die auf der Interpolation benachbarter Bilder basieren.
Zur Rekonstruktion fehlender Details und zur Skalierung in LSFG können sowohl eigene originale Algorithmen als auch bestehende Technologien auf Basis von Maschinenlernen, wie AMD FidelityFX Super Resolution und NVIDIA Image Scaling, verwendet werden. Die Auswahl des Algorithmus hĂ€ngt von der Art der Spiele ab. FĂŒr moderne Spiele wird empfohlen, den eigenen Algorithmus LS1 oder die supersampling-Technologie AMD FSR zu verwenden. FĂŒr Ă€ltere Spiele mit Pixelgrafik werden die Algorithmen Integer Scaling und xBR angeboten, wĂ€hrend fĂŒr Spiele im Cartoon- und Anime-Stil der Algorithmus Anime4K verfĂŒgbar ist. Neben den Spielen kann die Ausgabe-Modifikation auch fĂŒr Emulatoren zur AusfĂŒhrung von Retro-Spielen und Konsolenspielen angewendet werden.
Die Skalierung und das EinfĂŒgen von Bildern erfolgt in Echtzeit und erfordert keine Ănderungen an den Spielen. In der Linux-Version erfolgt das EinfĂŒgen von Bildern und die Eingliederung in die Spieleausgabe durch das HinzufĂŒgen eines Prozessors in Form einer zusĂ€tzlichen Vulkan-Schicht, mit Hilfe derer bestehende Vulkan-Funktionen abgefangen, ausgefĂŒhrt und modifiziert werden. Um lsfg-vk zu verwenden, muss die Bibliothek liblsfg-vk.so installiert und ihre Parameter ĂŒber Umgebungsvariablen konfiguriert werden.
Die originale LSFG ist eine kompillierte Anwendung fĂŒr Windows, die auf der D3D11-API basiert. FĂŒr die Umsetzung der FunktionalitĂ€t von LSFG auf Linux wurde die Implementierung in eine Darstellung ĂŒbertragen, die die Vulkan-API nutzt. Um Shader zu ĂŒbertragen, wurde ein Handler hinzugefĂŒgt, der die D3D11-Aufrufe abfĂ€ngt und die Shader auf die Festplatte speichert, sowie ein Parser zum dynamischen Extrahieren der Shader aus ausfĂŒhrbaren Dateien im PE-Format (Portable Executable). FĂŒr den Transfer des Grafik-Pipelines, der die AusfĂŒhrung der Shader steuert, wurden Komponenten auf Basis der D3D11-API aus der Anwendung extrahiert und deren FunktionalitĂ€t unter Linux durch DXVK sichergestellt. Nachdem eine funktionsfĂ€hige Version auf Basis von D3D11 und DXVK erstellt wurde, wurden mit Hilfe des Debuggers RenderDoc prĂ€zise Vulkan-Aufruf-Layouts erhalten, auf deren Grundlage die endgĂŒltige Version erstellt wurde, die direkt die Vulkan-API verwendet.
Quelle: opennet.ru
