Werbung
Das lange erwartete FidelityFX Super Resolution (FSR) als Performance-Upscaling und offene Alternative zu NVIDIAs Deep Learning Super Sampling (DLSS) startet heute. Wir konnten bereits im Vorfeld einen Blick darauf werfen und haben auch einige Informationen zur technischen Umsetzung. Der Treiber, der FSR zum Start in einigen wenigen Spielen ermöglicht, steht ebenfalls ab sofort zur Verfügung, sodass ein jeder sich ab heute selbst einen Eindruck verschaffen kann.
In weiten Teilen will es AMD anders als sein Konkurrent machen. FSR soll weder in Sachen Hardwareunterstützung, noch in Sachen Softwareunterstützung eine proprietäre Technik sein. Dies bedeutet, dass FSR Teil von GPUOpen ist und daher jeder Entwickler, der Interesse daran hat, sich auch damit auseinandersetzen kann. Weiterhin gibt es grundsätzlich keinerlei Bindung an bestimmte Hardware. Das auch GeForce-Karten FSR unterstützen werden, war sicherlich eine der großen Überraschungen während der initialen Vorstellung. Während man für das DLSS bei NVIDIA also auf die GeForce-RTX-Karten der 20- und 30-Serie festgelegt ist, soll AMDs FSR selbst auf APUs mit integrierter Grafikkarte funktionieren.
Die Motivation hinter FSR ist die gleiche wie bei DLSS: Manche Spiele verlangen nach hohen FPS, die Raytracing-Effekte haben die Leistungsanforderungen ansteigen lassen. Techniken wie DLSS und nun FSR sollen diesen Anforderungen entgegenwirken. Wenn wir allerdings eines aus der ersten Umsetzung von DLSS gelernt haben, dann ist dies, dass die Darstellungsqualität ein wichtiger Faktor bleibt. Immer mehr Effekte in Spiele einzubauen, die dann durch einen schlechten Upscaler wieder verwaschen werden, sollte nicht der richtige Weg sein. Mit DLSS 2.0 hat NVIDIA eine temporale Komponente in der Berechnung hinzugefügt und das DLSS insgesamt auf ein Niveau gebracht, welches im Qualitätsmodus keine signifikante Verschlechterung der Darstellungsqualität mehr zur Folge hat.
Dies möchte auch AMD unterstreichen und zeigt FSR im Quality- und Performance-Mode im Vergleich zu einem Point und Bilinear Upscaler, wie er häufig in Spielen bzw. Engines direkt implementiert ist. AMD will sowohl in der Rekonstruktion der Geometrie, als auch in der Schärfe der Texturen ein hohes Niveau erreichen, welches dem nativen Rendering nahe kommt.
Um das Leistungsplus zu erreichen, reduziert AMD die interne Render-Auflösung, sodass die Hardware bei einer geringeren Auflösung mehr Bilder pro Sekunde berechnen kann. Der fertige Frame wird dann auf die Zielauflösung hochskaliert und mittels der kontrastadaptiven Schärfung in FidelityFX nachgeschärft, sodass so wenige Details wie möglich verloren gehen sollen. Die Reduzierung der Renderauflösung wird auch von NVIDIA für das DLSS angewendet.
Die Tabelle zeigt die verschiedenen Renderauflösungen in den vier Qualitätseinstellungen von FSR für eine Ausgangsauflösung von 3.840 x 2.160 sowie 2.560 x 1.440 Pixel.
2160p | 1440p | |||
Ultra Quality | 2.954 x 1.662 Pixel | 1,3x | 1.970 x 1.108 Pixel | 1,3x |
Quality | 2.560 x 1440 Pixel | 1,5x | 1.706 x 960 Pixel | 1,5x |
Balanced | 2.259 x 1.270 Pixel | 1,7x | 1.506 x 847 Pixel | 1,7x |
Performance | 1.920 x 1.080 Pixel | 2,0x | 1.280 x 720 Pixel | 2,0x |
In den hohen Qualitätsstufen wird die Renderauflösung nur um 30 oder 50 % reduziert. Für den Balanced-Mode schon um immerhin 70 % und im Performance-Mode wird intern nur noch mit der halben Auflösung und damit einem Viertel der Pixel gerechnet. Niedrigere Auflösungen als 1440p könnte AMD unterstützen und tut es auch. Allerdings sieht man das wichtige Anwendungsgebiet eher bei den höheren Auflösungen.
AMD verwendet einen rein spatialen Upscaler, der als Eingabewert eben die in niedriger Auflösung berechneten Frames mit TAA, FXAA und MSAA nimmt. Eine temporale Komponenten wie bei NVIDIAs DLSS gibt es bei FSR nicht. Mit DLSS 2.0 führte NVIDIA eine temporale Komponenten hinzu (bezieht auch vorherige Frames mit in die Berechnung ein), um die ansonsten bei bewegten Objekten entstandenen Artefakte zu reduzieren. Der Algorithmus scannt den Frame nach Rändern und Kanten und erstellt eine hochauflösende Version davon. FSR verwendet keine Image Buffer in der nativen Auflösung. Dies wäre aber eine der Möglichkeiten das FSR zukünftig zu verbessern.
Als shaderbasierte Lösung erhöht FSR nicht die Anforderungen an den Prozessor. Durch den Prozess des Nachschärfens kann es aber dazu kommen, dass die Anforderungen an den Grafikspeicher leicht steigen. Im Vergleich zur nativen Auflösung soll FSR aber immer sparsamer sein.
AMD liefert natürlich auch gleich einige Benchmarks. Diese zeigen das Leistungsplus mittels FSR für die Radeon RX 6900 XT, Radeon RX 6800 XT und Radeon RX 6700 XT.
Aber AMD verweist auch darauf, dass FSR selbst auf älterer Hardware noch funktioniert und daher auch für Besitzer einer Grafikkarten interessant sind, die nicht in den vergangenen 2-3 Jahren zu einem neuen Modell gegriffen haben. Als Beispiel werden Werte einer Radeon RX 580 herangezogen, deren FPS for FSR ebenfalls um 50 bis 80 % ansteigen sollen.
Und auch hier gibt es noch einmal die Demonstration von FSR auf Basis von GeForce-Hardware. In diesem Fall handelt es sich um eine GeForce GTX 1060, deren FPS durch FSR ebenfalls um 50 bis 80 % höher ausfallen sollen. Unterstützt wird FSR durch folgende Hardware:
- Radeon RX 6000 und 6000M Serie
- Radeon RX 5000 und 5000M Serie
- Radeon RX Vega Serie
- Radeon RX 500 Serie
- Radeon RX 480, 470 und 460
- Ryzen 2000 Serie mit integrierte Grafikeinheit
- Ryzen 4000 Serie mit integrierte Grafikeinheit
- Ryzen 5000 Serie mit integrierte Grafikeinheit
- GeForce RTX 30 Serie
- GeForce RTX 20 Serie
- GeForce GTX 10 und 16 Serie
Zum heutigen Start sollen folgende Spiele FSR unterstützen:
- Godfall
- Rift Breaker
- 22nd Century Racing Series
- Anno 1800
- Evil Genius 2 World Domination
- Terminator Resistance
- Kingshunt
Noch folgen sollen Spiele wie:
- Far Cry 6
- Resident Evil Village
- Forspoken
- Myst
- DOTA 2
- Baldurs Gate
- Farming Simulator 22
- Astergos
- Vampire Blood Hunt
AMD arbeitet aber auch mit zahlreichen Entwicklerstudios und Engine-Entwicklern zusammen, um FSR so schnell wie möglich in die breite Masse zu bringen. Dies Auswahl zum Start ist nicht sonderlich groß. Hier bietet NVIDIA inzwischen mit DLSS eine breitere Palette und hat für die kommenden Wochen ebenfalls noch einige neue Spiele in Petto.
Unterschiede zischen FSR und DLSS
Mit FSR verfolgt AMD einen anderen Ansatz als NVIDIA mit DLSS. Während NVIDIA auf eine proprietäre Technik setzt, die auf GeForce-RTX-Karten beschränkt ist, wählt AMD einen offenen Ansatz und unterstützt neben den eigenen Karten auch solche mit NVIDIA-GPU. Aber auch die Umsetzung ist anders: AMD setzt auf einen spatial Upscaler, der keinerlei temporaler Komponenten (wie Bewegungsvektoren auf Basis vorheriger Frames) beinhaltet. Zudem verzichtet AMD auf eine AI-Komponente und setzt stattdessen offenbar auf das FidelityFX Contrast Adaptive Sharpening (CAS), um die Details wiederherzustellen.
Der in niedrigerer Auflösung berechnete Frame wird nach dem Anti-Aliasing und dem Tone Mapping hochskaliert und nachgeschärft. Weitere Post-Processing-Effekte folgen in der Pipeline bis es zur Ausgabe des Frames kommt. AMD verwendet für das gesamte Processing die Shader der Grafikkarten, was auch einer der Gründe ist, warum FSR auch auf Grafikkarten mit NVIDIA-GPU funktioniert – später vielleicht sogar auf solchen mit Intel-GPU. AMD verfolgt mit FSR auch einen eher klassischen Ansatz für das Upscaling, der eine möglichst breite Unterstützung für die Hardware sicherstellen soll. FSR verwendet weder Daten aus den vorherigen Frames, noch wird ein neuronales Netzwerk mit Ausgangsdaten in hoher Auflösung hinzugezogen. Dennoch will AMD eine in etwa vergleichbare Darstellungsqualität bieten können.
DLSS hingegen verwendet mehrere Eingabedaten, um am Ende auf mindestens die gleiche Darstellungsqualität zu kommen – abhängig vom DLSS-Preset natürlich.
Man kann sich das Deep-Learning-Netzwerk für DLSS als Black Box vorstellen, die NVIDIA in den Folien mit dem technischen Begriff für ein solches Netzwerk bezeichnet: Convolutional Autoencoder. Eingangsdaten sind zum einen das von der eigenen Grafikkarte gerenderte Bild (in einer niedrigeren Auflösung als die Zielauflösung) sowie vordefinierte Idealzustände eines gerenderten Bildes. Diese liegen in einem 64x Supersampling (64xAA) vor und wurden auf einem Supercomputer bei NVIDIA berechnet. Dieser erzeugt auch ständig neue Trainingsdaten, sodass NVIDIA das DLSS stetig weiter verbessern kann. Diese Verbesserungen müssen allerdings in einer neuen DLSS-Version in das Spiel eingebaut werden. Die aktuellste Version ist DLSS 2.2, wie sie in Rainbow Six: Siege zum Einsatz kommt. Aus der Differenz des durch die eigene Grafikkarte gerenderten Bildes und dem Idealzustand für das Spiel wird die Ausgabe erstellt. Dieses Inferencing findet auf den Tensor Cores der Ampere-GPUs statt. Für DLSS 1.9 verwendete NVIDIA aber auch noch eine Shader-Version, die auf ähnlich gute Ergebnisse gekommen ist. Man ist bei NVIDIA aber überzeugt davon, dass die bestmögliche Leistung nur mit den Tenor Cores der GeForce-RTX-Karten erreicht werden kann. Da die Trainingsdaten in diesem Falle als 64x Supersampling vorliegen, kann der 2K-Frame mit Upscaling auf UHD sogar besser aussehen, als das nativ berechnete UHD-Frame.
Im Endeffekt ist der DLSS-Algorithmus ein hochspezialisierter (und temporaler) Upsampling-Filter. Das Resultat kann nicht mit einem direkten Rendering auf der nativen Auflösung gleichgesetzt werden, nähert sich diesem abhängig von den Trainingsdaten und den Optimierungen aber stark an. Ab DLSS 2.0 kommt zudem ein temporales Feedback zum Einsatz. Dieses wird als Feedback-Schleife genutzt, um die Bildqualität zu verbessern. Vor allem kleine Objekte, die sich in Bewegung befinden, stellten für das DLSS bisher noch Probleme dar. Das temporale Feedback wurde dies deutlich verbessert.