Algorithmic Improvements for Stochastic Rasterization & Depth Buffering

Abstract: Popular Abstract in Swedish Inom området datorgrafik undersöker man hur virtuella scener kan omvandlas till verklighetstrogna bilder. För interaktiva miljöer, som exempelvis datorspel, måste en ny bild vara genererad och klar att visas på skärmen mellan 30-60 gånger i sekunden för att upplevelsen ska kännas responsiv och för att rörelser ska flyta på ett naturligt sätt. För att datorn ska hinna med att beräkna nya bilder krävs en kombination av smarta algoritmer och hög beräkningskapacitet för de typer av beräkningar som behöver utföras. I dagens datorer, mobiltelefoner och pekplattor finns en hårdvaruenhet tillägnad att hantera grafikproblem, en så kallad grafikprocessor (Eng. graphics processing unit eller GPU). En av GPUns huvuduppgifter är att avgöra vilka ytor i scenen som är synliga för varje pixel i bilden genom en process som kallas rasterering. Viktigt att tänka på är att ogenomskinliga ytor ju faktiskt fullständigt kan täcka varandra och endast ytorna närmast kameran som kommer därför synas i den färdiga bilden. Rastereringshårdvaran i moderna GPUer ritar en yta åt gången, vilket medför att det inte går att veta vilken yta som slutgiltigt kommer vara närmast kameran under rastereringens gång. För att lösa detta problem används så kallad djupbuffring, där GPUn håller reda på vilken yta som är närmast i varje pixel, efterhand som bilden successivt byggs upp. Bufferten som innehåller djupvärdena för varje pixel ligger i minnet på GPUn, och att läsa och uppdatera medför en hel del datatrafik. I avhandlingen presenteras en serie hårdvaruförbättringar som kan användas för att minska datatrafiken som uppkommer p.g.a. djupbuffring, vilket leder till bättre prestanda och lägre strömförbrukning. För att den genererade bilden ska se mer verklighetstrogen ut så är det viktigt att omvandlingen från virtuell scen till bild även tar med begränsningar i kamerautrustning som vi människor är vana att se i fotografier och på film. Två av de viktigaste fenomenen är förmodligen skärpedjup och rörelseoskärpa. Det är bara möjligt att fokusera och få en skarp bild inom ett begränsat avstånd från kameran, inom det så kallade skärpedjupet. Föremål i förgrunden och bakgrunden blir således mer och mer oskarpa ju längre ifrån skärpedjupet de befinner sig. Rörelseoskärpa uppkommer då motivet flyttar sig under exponeringstiden, vilket gör att rörelsemönstret "fångas" i bilden. Att modellera ett kamerasystem som tar exponeringstid och linssystem i beaktning är en beräkningsmässigt tung uppgift, vilket gör det svårt att simulera allt för komplicerade kameramodeller i interaktiva applikationer. En algoritm som fått dragkraft inom forskningsvärlden under de senaste åren för att simulera rörelseoskärpa och skärpedjup är så kallad stokastisk rasterering. Genom att betrakta scenen från slumpvis utvalda ögonblick och vägar genom linssystemet kan en bild som innehåller både rörelseoskärpa och skärpedjup byggas upp. Dessvärre medför metoden fler läsningar och skrivningar till djupbufferten. En stor del av vår forskning är riktad åt att förbättra djupbufferprestandan, både för konventionell och för stokastisk rasterering. De tekniker som undersökts är förbättrad minnesanvändning genom s.k. minnescachning, datakompression och utgallring av täckta ytor. Cache:ar används för att förkorta tiden det tar att hämta och skriva data till och från RAM-minnet, där djupbufferten finns. Genom att använda komprimering så kan djupdatan representeras mer kompakt, vilket ytterligare minskar datatrafiken till minnet. Utgallring av täckta ytor är en teknik som går ut på att minimera mängden bortkastat arbete genom att i ett tidigt skede avgöra vilka ytor som är täckta och därför inte kommer bidra till den slutgiltiga bilden. Dessa tekniker kan tillsammans användas för kraftigt förbättra prestandan för djupbuffersystemet. Ett annat problem som försvåras av stokastisk rasterering är hur man beräknar färgen för ytor som är i rörelse eller är ur fokus. Färgen av en yta beror bland annat på dess materialegenskaper, på ljussättningen och på var kameran befinner sig. Vi har utvecklat två algoritmer med ändamålen att snabbt och effektivt beräkna ytfärgen. Den första metoden delar upp färgberäkningen och den stokastiska rastereringen i två separata pass. Uppdelningen gör att vi enkelt kan återanvända den beräknade färgen under rastereringspasset och på så vis uppnå mycket goda prestandaresultat. Den andra metoden används för att avgöra om en yta är i skugga eller ej då objekt och/eller kameran är i rörelse. Att beräkna skuggan under sådana omständigheter är ett svårt problem, inte minst för interaktiva miljöer då beräkningstiden är begränsad. Vi presenterar en algoritm som ger trovärdiga skuggor med hög kvalité. Båda algoritmerna är implementerade och testade på existerande GPUer och är alltså användbara redan idag.

  CLICK HERE TO DOWNLOAD THE WHOLE DISSERTATION. (in PDF format)