Werbung
In Kooperation mit NVIDIA
Eine der neuen Funktionen der GeForce-RTX-Serie, von der Spieler besonders profitieren sollen, ist das Deep Learning Super Sampling oder kurz DLSS. Entwickelt wurde DLSS, um die Bildausgabe mit einer möglichst hohen Auflösung zu ermöglichen, dies aber nicht mit roher Rechenleistung der Shader, sondern über einen kleinen Umweg.
Dazu muss man wissen, dass moderne Gaming-Engines die Frames in der GPU rendern, die Ausgabe nach zahlreichen Shading-Prozessen aber nicht einfach so erfolgt, sondern häufig noch einige Post-Processing-Operationen durchgeführt werden, die beispielsweise die durch das Rendering entstandenen Kanten glätten sollen. Häufig kommt dabei ein Temporal Anti-Aliasing (TAA) zum Einsatz, weil TAA das beste Ergebnis erzeugt. Dabei handelt es sich um einen Shader-basierenden Algorithmus, der zwei aufeinanderfolgende Frames mithilfe von Bewegungsvektoren miteinander vergleicht. Aufgrund der Tatsache, dass hier mindest zwei aufeinanderfolgende Frames miteinander verglichen werden, können Änderungen innerhalb dieser Frames aber auch zu Störungen in der Darstellung führen.
Es gibt auch noch andere Anti-Aliasing-Algorithmen, wie das Fast Approximate Anti-Aliasing (FXAA) oder das Multi-Frame Sampled Anti-Aliasing (MSAA), die allesamt ihre Vor- und Nachteile haben – nicht nur hinsichtlich der Darstellungsqualität, sondern auch im Einfluss auf die Leistung, denn MSAA und TAA knabbern gehörig an der Leistung einer Grafikkarte.
Hier kommt nun das Deep Learning Super Sampling ins Spiel. Bereits seit geraumer Zeit ist NVIDIA im Bereich Deep Learning, Machine Learning und Artificial Intelligence aktiv – zunächst eingeschränkt auf das Datacenter- und den Cloud-Einsatz. DLSS ist erstmals eine Umsetzung, die für Spieler interessant ist. Um das DLSS anbieten zu können, hat NVIDIA auf einem eigenen Supercomputer bereits ein Deep-Learning-Netzwerk trainiert. Diesem werden die Spiele zugeführt, darauf Frames aus den verschiedenen Spielszenen erstellt und anhand derer das Netzwerk immer weiter ausgebaut. Inzwischen ist es aber nicht mehr notwendig DLSS auf ein spezielles Spiel hin zu optimieren. NVIDIA hat sein neuronales Netzwerk so weit optimiert, dass es auf jegliche Spiele anwendbar ist. Entsprechend ist DLSS auch schon Bestandteil der Unreal Engine und von Unity – kann von den Entwicklern relativ einfach umgesetzt werden.
Was sich hinter DLSS verbirgt: Über einen sogenannten Temporal Stable Convolutional Autoencoder wird dazu die Rechenleistung von 500 Milliarden FP16-Operationen pro Sekunde verwendet und daraus 64 Samples, also fertig gerenderte Frames, erstellt. Diese werden als “ideale Darstellung” herangezogen und mittels eines 64x Supersampling (64xAA) weiter optimiert. Ein 64-fach Anti-Aliasing wäre auf einem Desktop-PC undenkbar und würde selbst für einen Frame viel zu lange dauern. Daher setzt NVIDIA hier auch den eigenen Supercomputer ein. Anstatt jeden Pixel einmal durch den Shader zu schicken, geschieht dies 64-mal und stets mit einem leichten Offset.
Die vorliegenden Ergebnisse einer idealen Darstellung werden in Form des trainierten Netzwerks auf dem System mit GeForce-RTX-Grafikkarte hinterlegt. Der Vergleich findet über die ausgegebenen Frames der Grafikkarte über das NGX-Framework und mithilfe der Tensor Cores statt. Die Grafikkarte berechnet die Frames also mit einer geringeren Darstellungsauflösung und wendet darauf das trainierte Netzwerk mit der gewünschten Zielauflösung an. Ein Spiel, welches mit 3.840 x 2.160 Pixeln ausgegeben werden soll, wird also mit beispielsweise 2.560 x 1.440 Pixeln berechnet und dann mit einem Ziel abgeglichen, welches 3.840 x 2.160 Pixeln entspricht. Die letztendliche Auflösung beträgt also 3.840 x 2.160 Pixel, die Grafikkarte muss aber nur in 2.560 x 1.440 Pixeln rendern, was sie natürlich mit deutlich mehr Bildern pro Sekunde tun kann. Im letzten Schritt findet ein Abgleich durch das Deep-Learning-Netzwerk mit der gewünschten Zielauflösung statt – der Frame wird komplett neu zusammengesetzt.
In den vergangenen Monaten hat NVIDIA das DLSS stark weiterentwickelt. Die stetige Weiterentwicklung machte dabei mit Version 2.0 einen extremen Satz nach vorne und umfasst seither auch eine temporale Komponente, was Objekte in Bewegung besser abbildet. Das neuronale Netzwerk also auf bereits vorher gerenderte Frames zurückgreifen. Dadurch bleiben noch mehr Details erhalten, es gibt weniger Artefakte und eine deutliche Weiterentwicklung in der Wiederherstellung. Dies ermöglicht vor allem in niedrigeren Auflösungen (1080p und 1440p) eine finale Zusammensetzung des neuen Frames aus mehreren Quell-Bildern und eine Detailqualität, die sonst nur für höhere Auflösungen erreicht wird. Auf ein Anti Aliasing wird im nativen Rendering verzichtet und das DLSS übernimmt auch dies.
Mit DLAA (Deep Learning Anti-Aliasing) kommt nun noch ein AI-unterstütztes Anti Aliasing (Kantenglättung) hinzu, welches auf die Upscaling-Komponente verzichtet – also nur die Anti-Aliasing-Komponenten von DLSS verwendet. Spiele, die nicht besonders herausfordernd sind und daher auf das Leistungsplus verzichten können, sollen durch DLAA einen deutlichen Zugewinn in der Darstellungsqualität erhalten.
In Kooperation mit NVIDIA