Joshua Tucker von
Microsoft hat auf seinem
Blog DirectSR angekündigt. Als Teil des
Agility SDK 1.714.0-preview Release können nun Entwickler in gewohnter DirectX Umgebung eine generische Implementierung von Methoden für die Skalierung und das Antialiasing in die Gameengines einbauen.
Durch den offenen Softwareansatz und die nachgewiesene Kompatibilität von
FSR hat es
AMD dabei geschafft die eigene Lösung als den
de facto Standard in DirectSR zu bringen. Per
default wird somit immer
FSR2.2 als Teil von DirectX implementiert. Somit können Spiele auch für Nutzer von Intel oder älteren Nvidia-Karten immer von der Skalierung und dem Antialiasing profitieren.
Today, DirectSR is shipping with built-in support for AMD FidelityFX™ Super Resolution (FSR) 2.2, along with driver level support for both Intel XeSS and NVIDIA DLSS Super Resolution.
Proprietäre Lösungen der GPU-Anbieter, bzw. Independent Hardware Vendor (IHV), können dann durch den Treiber das FSR2.2 ersetzen. Ob künftig dieser Default durch eine höhere FSR-Version ersetzt wird muss sich noch zeigen. Allerdings fügt FSR3.0 lediglich Frame-Generation hinzu, erst mit
FSR3.1 wurden Optimierungen in der Bildqulaität für die interpolierten Frames erreicht. Während Frame-Generation womöglich ausserhalb der Entwicklungsziele von Microsofts DirectX-Team liegt könnten durchaus die Qualitätsverbesserungen mit einfliessen, die auch mit FSR3.1 noch nicht auf KI Hardware angewiesen sind.
Der Blog von
Jarrett Wendt von AMD auf der
GPUopen Webseite erläutert die API und die
Metacommands für proprietäre Treiber-Implementierungen für DirectSR.
DirectSR soll dazu beitragen, die SR-Codepfade unterschiedlicher SR-Varianten wieder zu vereinheitlichen. Darüber hinaus sollen Anwendungen, die mit DirectSR geschrieben wurden, künftig auch KI-basierte Methoden wie Xess oder DLSS unterstützen.
Mit sog.
DirectSR Extensions werden SR-Varianten angesteuert, die von der betreffenden Applikation bzw. dem Spiel nicht nativ eingebunden wurden, so können ML-Coprozessoren genutzt werden. ML-Coprozessoren, wie z. B. Neuronale Processing Units (NPU) sollen so die GPUs entlasten.
Die Spec spricht dabei von der
SR-Engine als vereinfachte Abstraktion einer SR-Pipeline mit fester Funktion. Die SR-Engine hat eine oder mehrere integrierte Vorverarbeitungsstufen, die die Ausführung eines neuronalen Netzmodells und Nachverarbeitungsfilter umfassen können. Aus der Sicht von DirectSR ist die SR-Engine eine
„Black Box“ mit einem genau definierten Satz von Eingaben und Ausgaben. Nicht alle SR-Engines sind dabei gleich und unterscheiden sich in den Eingabeanforderungen und der Ausgabequalität. Mit der Ausgabe können die SR-Engines eine Bildschärfung oder Rauschunterdrückung durchführen, oder dies der Applikation überlassen.
Jarrett Wendt führt aus, dass das Konzept von Warteschlangen anstelle nativer DirectX-Befehlslisten es ermöglicht durch Coprozessoren SR-Engines zu betreiben auch wenn diese selbst keine GPUs sind. Allerdings müssen hierfür die Game-Engines auf eine Frame-Synchronisation explitzit angepasst werden. Die native Implementierung von AMDs FSR in DirectSR erfolgt demgegenüber als eine direkte Integration in die Laufzeitumgebung, mit der die Skalierung Hardware-agnostisch angeboten wird.
Die Entscheidung leigt beim Entwickler den
zusätzlichen Aufwand für die Implementierung von Metacommands aufzunehmen oder es beim Default zu belassen. Sind Metacommands vollständig implementiert kann der Nutzer diejenige SR-Variante nutzen, die sein Treiber individuell anbietet. Eine weitere individuelle Anpassung der Spielesoftware je Hersteller durch den Spieleentwickler soll damit entfallen.
Durch die beiden Blogs belegen Microsoft und AMD die enge Zusammenarbeit in der Weiterentwicklung von DirectX und dem Ziel offene Standards zu schaffen.
DirectSR selbst ist
auf Github dokumentiert und fügt sich so nahtlos, wie auch AMDs
FidelityFX Doku, in die Entwicklungsumgebungen ein.
(update 03.06.24 mit kleinen sprachlichen Korrekturen)