Deze week onthulde Nvidia de eerste drie videokaarten in de GeForce RTX 40-serie. Naast een geheel nieuwe Ada Lovelace-architectuur krijgen deze nieuwe kaarten een nieuwe feature mee: DLSS 3. Anders dan de huidige versies van DLSS, die alleen functioneren als upscaler, moet versie 3 framerates ophogen door 'gewone' frames af te wisselen met frames die door AI worden gegenereerd. Hoe werkt dat precies?
Recap: hoe werkt opschalen met DLSS?
DLSS is op zichzelf niets nieuws; Nvidia introduceerde de eerste versie al in 2019 met zijn Turing-architectuur. DLSS is in zijn huidige vorm een temporal upscaler. De techniek rendert daarmee frames op een lagere resolutie en combineert informatie uit huidige en voorgaande frames om deze op te schalen naar een hogere resolutie. Nvidia spreekt bijvoorbeeld over het opschalen van 1080p-frames naar 4k. Dat moet hogere framerates opleveren zonder dat de beeldkwaliteit te veel achteruitgaat. Tweakers schreef al eerder een uitgebreid achtergrondartikel over de werking van opschaaltechnieken. Daarin wordt DLSS besproken, naast de techniek achter AMD FSR 2.0 en Intel XeSS. Hieronder een korte recap.
DLSS zit, net als veel andere technieken voor temporal upscaling, relatief vroeg in de gpu-pipeline. Allereerst vinden de render- en rasterizationstappen plaats, waarin de gpu het frame al grotendeels berekent. DLSS gebeurt direct daarna en staat daarmee aan het begin van de postprocessingpipeline. Nvidia verzamelt voor DLSS verschillende inputs van de engine.
Allereerst is er natuurlijk een gerenderde afbeelding op een lagere resolutie nodig, die uiteindelijk wordt opgeschaald naar een hogere resolutie. Die frames moeten gejitterd worden, wat wil zeggen dat de pixels in beeld met ieder frame héél subtiel worden verschoven. Dat maakt het mogelijk om meer informatie per pixel te verzamelen, ook als er geen beweging in beeld is.
DLSS verzamelt daarnaast motionvectoren, waarmee wordt bijgehouden hoe een pixel van frame tot frame over het scherm beweegt. Dit wordt vervolgens gecombineerd met informatie over de diepte van een frame. De informatie uit de motionvectoren en dieptebuffers wordt bijvoorbeeld gebruikt om de randen van bewegende objecten en geometrie te corrigeren, om zo ghosting en andere visuele artefacten te beperken. Op basis van deze inputs wordt vervolgens een frame op lage resolutie gerenderd, bijvoorbeeld 1920x1080 pixels.
Vervolgens moet het daadwerkelijke opschalen nog plaatsvinden. Dat doet Nvidia met een neuraal netwerk dat het de Convolutional Autoencoder noemt. Nvidia heeft dat AI-netwerk specifiek getraind voor het opschalen van afbeeldingen. Tijdens dat trainingsproces wordt een 1080p-frame gerenderd zoals hierboven uitgelegd, waarna het neurale netwerk de afbeelding probeert op te schalen naar 4k. De resultaten daarvan worden vervolgens vergeleken met een vooraf gemaakte 16k-render van hetzelfde frame. Informatie uit deze vergelijking wordt daarna teruggevoerd naar het deeplearningalgoritme, waarna het proces zich herhaalt. Zo leert de Convolutional Autoencoder hoe hij een frame zo realistisch mogelijk moet opschalen.
DLSS 3 krijgt Frame Generation voor RTX 40-kaarten
Het hierboven geschetste opschaaldeel van DLSS blijft uiteraard onderdeel van versie 3. Nvidia vertelt aan Tweakers dat dit opschaalalgoritme met de release van DLSS 3 niet verder is geüpdatet. Het bedrijf zegt wel dat dit aspect van DLSS 3 ook zal werken op bestaande RTX-videokaarten, ook uit de RTX 20- en 30-series. Toekomstige verbeteringen aan DLSS-upscaling moeten ook gelden voor die oudere RTX-kaarten, bevestigt Nvidia tegenover Tweakers.
De volgende versie van DLSS voegt ook een compleet nieuw aspect toe, door Nvidia DLSS Frame Generation genoemd. Zoals de naam doet vermoeden, introduceert Nvidia hiermee een algoritme dat geheel nieuwe frames 'genereert'. De hiervoor genoemde opschaalstap doet dat niet, maar genereert alleen nieuwe pixels om de resolutie van bestaande frames te verhogen. Deze functie maakt gebruikt van een verbeterde Optical Flow Accelerator, een stuk silicon in de Ada Lovelace-gpu's. Daarmee werkt Frame Generation alleen met de RTX 40-serie.
Voorgaande RTX-gpu's hebben ook een Optical Flow Accelerator, maar die is volgens Nvidia niet krachtig genoeg om Frame Generation met voldoende kwaliteit uit te voeren, hoewel het bedrijf tegenover journalisten ook niet uitsluit dat die functie ooit zal werken op oudere RTX-gpu's.
Verder wordt Nvidia Reflex een verplicht onderdeel van DLSS 3. Deze functie moet leiden tot lagere latency en bestaat al langer; Reflex wordt ondersteund door de GeForce GTX 900-serie en nieuwer. We gaan straks verder in op de werking van Reflex. Eerst bespreken we Frame Generation.
Hoe werkt DLSS Frame Generation?
Om te beginnen een rectificatie. Bij de aankondiging van DLSS 3 ontstond wat verwarring over de werking van DLSS Frame Generation met AI, waarvan de werking op twee manieren geïnterpreteerd kon worden. Nvidia antwoordde op vragen van Tweakers dat Frame Generation geen interpolatie is, maar 'toekomstige' frames genereert.
Dit klopt echter niet. In een GTC-ontwikkelaarskeynote van Nvidia meldt het bedrijf dat DLSS Frame Generation twee frames analyseert en daar een extra AI-frame tussenin 'plakt'. "Het DLSS Frame Generation-algoritme accepteert twee gerenderde frames van de game-engine of 3d-renderer en genereert een nieuw frame dat soepel tussen beide overgaat", aldus het bedrijf. In een nieuwe reactie aan Tweakers vertelt Nvidia ook dat DLSS 3 toch geen toekomstige frames genereert, maar dat het in plaats daarvan een tussentijdse frame creëert op basis van de huidige en vorige frame.
DLSS 3 gebruikt hiervoor volgens Nvidia vier inputs. Het gebruikt uiteraard de huidige en voorgaande frames en de eerdergenoemde inputs uit de game-engine, zoals dieptebuffers en motionvectoren. De voornaamste toevoeging aan DLSS 3 is een optical flow field. De Optical Flow Accelerator die in de RTX 40-gpu zit, analyseert de twee geselecteerde frames om de optische flow daartussen te berekenen.
Een dergelijk flowfield legt de richting en snelheid vast waarmee pixels van frame 1 naar frame 2 bewegen. Dit soort informatie wordt op pixelniveau vastgelegd en gebeurt parallel met andere taken, zoals raytracing. Daarbij wordt voornamelijk de beweging van 'effecten' als particles, reflecties, schaduwen en belichting meegenomen. Dat soort informatie over effecten zit niet in de motionvectoren die game-engines leveren.
De 'gewone' motionvectoren uit de engine worden overigens ook gebruikt door DLSS 3. Dat soort vectoren zijn dan vooral bedoeld om de beweging van geometrie en objecten van frame naar frame te volgen. Beweging van lichtinval en andere effecten kan dus niet afdoende gevolgd worden met motionvectoren. Nvidia geeft hiervoor een voorbeeld van een motorrijder in Cyberpunk 2077. De 'optical flow field' legt vast dat de schaduw van de motor op ongeveer dezelfde plek op het scherm blijft tussen twee frames, maar dat de rest van de schaduwen in de scène wél beweegt. Met alleen motionvectoren en zonder flowfields zou de schaduw van de motorbestuurder 'stotteren', claimt Nvidia.
In de volgende stap worden de motionvectoren en optical flow gecombineerd. Het Frame Generation-algoritme bepaalt voor iedere pixel hoe de informatie van de motionvectoren, de flowfields en de sequentiële gameframes gebruikt moet worden. Zo maakt het algoritme een 'schatting' van de beweging tussen frame 1 en 2, om daartussenin een soort frame 1,5 te plaatsen voor een soepelere overgang. In een voorbeeld van Nvidia is te zien hoe met een combinatie van motionvectoren en optical flow een frame wordt gecreëerd dat beweging van de omgeving en schaduwen correct schat en daarbij rekening houdt met niet-bewegende schaduwen, zoals die van de motorrijder.
:strip_exif()/i/2005361116.jpeg?f=imagenormal)
In de praktijk worden door AI gegenereerde frames altijd weergegeven tussen traditionele frames in, zegt Nvidia. De gpu rendert eerst een gewoon frame, dat al dan niet is opgeschaald met DLSS Super Resolution, en volgt dat op met een nieuw AI-frame, waarna weer een gewoon frame wordt getoond. Op deze manier moet Frame Generation ook hogere framerates opleveren in games die cpu-gebonden zijn, claimt Nvidia. Dat is mogelijk doordat de AI-frames niet verwerkt hoeven te worden door de cpu of gpu, maar gecreëerd worden door de losse Tensor-cores en Optical Flow Accelerator.
De techniek moet op deze manier in staat zijn om de framerate ongeveer te verdubbelen, zonder gebruik van upscaling. Als Frame Generation wordt gecombineerd met DLSS Super Resolution-upscaling, kan DLSS 3 volgens Nvidia zeven van de acht pixels met AI genereren, wat tot verdere framerateverbeteringen moet leiden.
Gebruikers kunnen er overigens ook voor kiezen om alleen Frame Generation te gebruiken, zonder dat de gewone frames worden opgeschaald, bevestigt Nvidia in een briefing met journalisten. Opvallend genoeg is Frame Generation óók geen verplicht onderdeel van DLSS 3; gebruikers kunnen ervoor kiezen om dit aspect uit te zetten. Nvidia verwacht dat DLSS 3-games toggles krijgen om DLSS Super Resolution en Frame Generation onafhankelijk van elkaar in en uit te schakelen.
Nvidia Reflex voor lagere latency
Wel een verplicht onderdeel van DLSS 3 wordt Nvidia Reflex. Dat is een techniek die Nvidia al introduceerde met zijn GTX 900-serie en die bedoeld is om latency bij het renderen van games te verlagen. Dat mag ook wel. Aangezien DLSS Frame Generation nieuwe frames tussen twee bestaande frames 'plakt', loopt de pipeline altijd achter op het recentst gerenderde frame, wat leidt tot extra latency en inputlag.
Reflex is volgens Nvidia opgebouwd volgens het principe van just-in-time rendering. Traditioneel zet een cpu rendertaken klaar in een renderqueue, waarna de gpu deze wegwerkt. Dat kan volgens Nvidia de systeemlatency verlagen: de vertraging tussen een muisinput en het moment waarop de bijbehorende actie op het scherm wordt getoond. Met Reflex wordt de timing van de cpu afgestemd op de snelheid van de gpu. Zo levert de processor pas rendertaken op het moment dat de videokaart deze daadwerkelijk kan uitvoeren. Dit gebrek aan 'wachtrij' moet de systeemlatency en inputlag beperken.
Volgens Nvidia is de latency van DLSS 3 dankzij Reflex iets lager dan bij DLSS 2 zonder Reflex, ondanks de inherente vertraging van een frame bij gebruik van Frame Generation. Of dat in de praktijk waar is, zal moeten blijken uit onafhankelijke tests.
Tot slot
De werking van en het idee achter DLSS zijn dus duidelijk, maar de belangrijkste vraag staat nog open: hoe zal DLSS 3 in de praktijk presteren? Met Frame Generation lijkt Nvidia een interpolatieachtige aanpak te kiezen voor het genereren van extra frames, maar dan geavanceerder en ondersteund door een neuraal netwerk. De kwaliteit van die extra frames moet natuurlijk nog blijken. Deze aanpak gaat bovendien gepaard met extra latency en het is de vraag in hoeverre Reflex dat kan opvangen.
Binnenkort zullen we meer weten. DLSS 3 verschijnt namelijk op 12 oktober, samen met de release van de GeForce RTX 4090. Er zijn 35 games bekend die zeker ondersteuning voor de nieuwe versie krijgen. Daaronder vallen titels als Cyberpunk 2077, F1 22, Hitman 3, Microsoft Flight Simulator, Spider-Man Remastered, Stalker 2 en The Witcher 3: Wild Hunt. Tegelijk zegt Nvidia dat de upgrade vanaf DLSS 2, waarvoor ruim 200 games ondersteuning hebben, relatief simpel moet zijn voor ontwikkelaars. Vermoedelijk zal dat aantal dan ook snel oplopen, zeker omdat populaire game-engines als Unity en Unreal Engine 4 en 5 plug-ins krijgen voor de nieuwe techniek.