De overgang naar Cloud Gaming: Fotorealisme in video games schaalbaar maken voor een groot aantal gebruikers

Jente
Vandersanden

Beeld gerenderd met ons voorgestelde algoritme.

Figuur 1: Een beeld gegenereerd door ons voorgestelde algoritme.

Cloud gaming is een service waarbij een centrale provider infrastructuur aanbiedt voor gaming. Naast het hosten van je game-bibliotheek, staat de cloud ook in om de beelden, die normaal door je console of computer thuis worden gegenereerd, te berekenen. Dit laat toe om als gebruiker de game on-demand te spelen op eender welk toestel, zolang je maar beschikt over een internetverbinding. Je kan het vergelijken met Netflix, maar dan voor videospellen. Alhoewel het concept achter cloud gaming aantrekkelijk is, roept het de interessante vraag op waarom dit fenomeen nog niet is doorgebroken. Sterker nog, Google Stadia, de cloud gaming service van Google, heeft eerder dit jaar haar activiteiten stopgezet. Wat is er aan de hand?

Het tonen van Pac-Man op je beeldscherm

Om het probleem in verband met cloud gaming te kaderen, kijken we eerst naar hoe videospellen op je beeldscherm getoond worden. De beelden gegenereerd in moderne 3D games zijn als het ware een 2D projectie van een 3D scène. We plaatsen hierbij een virtuele camera in de scène, en projecteren de 3D objecten op de sensor van deze camera. Het genereren van een beeld op de virtuele sensor wordt ook wel renderen genoemd. Correcte belichting speelt een cruciale rol bij het genereren van realistische virtuele beelden. Licht heeft namelijk ook een enorme impact op hoe we de wereld ervaren: licht beweegt zich door de ruimte en valt uiteindelijk in op ons netvlies, waardoor we kunnen zien. Licht valt zelden van de lichtbron direct in op ons oog. In plaats daarvan botst het vaak enkele keren met objecten in de omgeving, wat leidt tot allerlei complexe effecten, ook wel globale belichtingseffecten genoemd. Typisch gebruiken game ontwikkelaars het ray-tracing algoritme om deze effecten te simuleren. In ray tracing wordt voor iedere pixel de kleur bepaald door een lichtpad te simuleren volgens de wetten van de optica. Hierbij worden één of meerdere stralen uitgestuurd voor de pixel, wordt er gekeken met welke objecten deze straal botst en op die manier bepaald hoeveel licht van iedere kleur (golflengte) er invalt op die pixel. Onderliggend rekent het algoritme een complexe wiskundige integraal uit, die de bijdragen van alle segmenten van het lichtpad optelt. Hoewel ray tracing dus rekenintensief is, heeft het als voordeel dat het fotorealistische beelden kan genereren.

De schaalbaarheid van cloud gaming

Huidige ray-tracing algoritmen zijn ontwikkeld met één individuele gebruiker in het achterhoofd: het algoritme berekent hoe een beeld er moet uitzien vanuit het specifieke standpunt van die gebruiker. Dit is in termen van schaalbaarheid echter minder goed nieuws voor de cloud provider. Omdat het algoritme veeleisend is qua rekenkracht, betekent dit in de praktijk dat de cloud provider fysieke hardware moet voorzien per gebruiker die de cloud gaming service wilt gebruiken. Omwille van deze reden is het momenteel logischer dat de gebruiker zelf zijn hardware aankoopt en de game lokaal afspeelt. Het huidige model is simpelweg te duur voor cloud providers om (genoeg) winst uit een dergelijk platform te halen. Om dit probleem aan te pakken pasten we het ray-tracing algoritme aan zodat het makkelijker geparallelliseerd kan worden in een serveromgeving en de resultaten gebruikt kunnen worden door meerdere gebruikers. Kort gezegd deelt ons nieuwe algoritme de scène op in blokken. Deze blokken kunnen flexibel verdeeld worden over meerdere grafische processoren (GPU’s), wat ideaal is voor een serveromgeving. Ieder van deze blokken kan op een onafhankelijke manier de indirecte belichtingseffecten op zijn lokale objecten berekenen. Directe belichting is een makkelijker probleem en wordt apart afgehandeld. Door de reeds berekende resultaten op te slaan, kunnen meerdere gebruikers deze informatie gebruiken om het beeld vanuit hun eigen standpunt te renderen. Onze bijhorende experimenten toonden aan dat vanaf een realistisch aantal gebruikers ons algoritme werk bespaart ten opzichte van de traditionele aanpak.

Rays all over the place

Omdat er voortdurend veranderingen plaatsvinden in een game en we een vloeiend beeld willen behouden, is het tijdsbudget om een nieuw beeld te renderen zeer gelimiteerd. Hierdoor is ray tracing in videospellen pas mogelijk sinds enkele jaren, met de opkomst van gespecialiseerde GPU's voor ray tracing. Een blijvend probleem bij lichttransport is echter de incoherentie van lichtstralen. Wanneer lichtstralen botsen met objecten, worden ze geabsorbeerd of veranderen ze van richting, afhankelijk van het materiaal van het object. Het resultaat hiervan is dat opeenvolgende segmenten van een lichtpad op totaal verschillende plaatsen in de scène belanden. Om deze segmenten in parallel te verwerken, is onder andere informatie over het materiaal van de objecten waarmee de stralen botsen nodig. Deze informatie is vaak verspreid over het geheugen van de GPU, wat resulteert in trage geheugentoegang. Om de prestaties te verbeteren, maakt de GPU gebruik van cachegeheugen dat dichtbij de rekeneenheden ligt, maar beperkte capaciteit heeft. Het probleem met huidige ray-tracing algoritmen is echter dat er voortdurend verschillende geheugenelementen worden opgevraagd, waardoor het cachegeheugen voortdurend vernieuwd moet worden en het potentieel ervan verloren gaat. Als oplossing voor dit tweede probleem kozen we voor een hybride aanpak bij het berekenen van indirect licht. Hiermee limiteren we de ruimte die een lichtstraal kan doorkruisen. Wanneer de lichtstraal buiten deze ruimte probeert te treden, stappen we over op een benadering met zogenaamde probes. Een probe is een kleine virtuele sensor die op zijn positie indirect licht van alle richtingen opneemt. Deze informatie kunnen we dan in een volgende stap gebruiken om indirect licht dat van veraf komt te benaderen, in plaats van de straal de hele weg te laten afleggen. Onze experimenten toonden ook aan dat door het beperken van de afstand die een lichtstraal kan afleggen, we de ruimte in het hoofdgeheugen limiteren waarin die straal opvragingen doet. Dit bevordert het veelvuldig gebruik van snel cachegeheugen.

Binnenkort on-demand Grand Theft Auto spelen op je smartphone?

Ons voorgesteld algoritme is een goed startpunt voor verdere optimalisaties die nodig zullen zijn om cloud gaming op grote schaal naar de consument te brengen. Het centraliseren en hergebruiken van grafische berekeningen op een schaalbare manier is een krachtig idee dat zeker in de toekomst verder kan worden onderzocht. Alhoewel er nog veel werk aan de winkel is, suggereren de resultaten van dit onderzoek dat er zeker positieve hoop is voor de toekomst van cloud gaming.

Download scriptie (53.37 MB)
Universiteit of Hogeschool
Universiteit Hasselt
Thesis jaar
2023
Promotor(en)
Dr. Jeroen Put
Kernwoorden