Att göra ljusstråk, skuggor, hår och päls verklighetstrogna i datorspel är svårt och även en akademisk disciplin. - Det behövs riktigt smarta sorteringsalgoritmer berättar SSF-forskaren Ulf Assarsson, docent i datorgrafik på Chalmers.
Det är mycket svårare att få datorspel realistiska än spelfilm. I ett datorspel ska scenförändringar hänga med beroende på vilken väg spelaren väljer. Ett antal olika scenarier är tänkbara och ljus och skuggor måste förflytta sig i realtid allteftersom spelaren rör sig genom miljöerna. Och det måste ske millisekundsnabbt, annars kommer spelet att hacka.
Det är därför dagens grafikkort har upp till 512 parallella processorer, att jämföra med en CPU som har fyra. CPU:er är snabba på sekventiell kod, medan grafikkort är specialiserade för att beräkna parallella processer utan direkt inbördes beroende. Deras stora uppgift är att beräkna de trianglar på skärmen som bygger upp bilden. Trianglarna byggs upp av rött, blått och grönt och de ritas parallellt, alltså samtidigt på skärmen.

Bilderna byggs upp av trianglar på skärmen, datorgrafikkorten har många parallella processorer för att det ska gå snabbt.
Mästare i sortering
Eftersom grafikkorten har så stor beräkningskapacitet används de även för generella beräkningsproblem, som att sortera befolkning i ålder, bokstavsordning eller liknande. Rättstavningsprogrammen använder också sorteringsalgoritmer, och Google använder det som en del i sina sökningar.
- Eftersom det är ganska struligt att programmera grafikkort effektivt, t ex för sortering, har det blivit ett stort forskningsområde berättar Ulf Assarsson.
En svensk spelutvecklare vände sig till Ulf Assarssons forskargrupp med en förfrågan om att fixa bättre hår till figurerna i deras spel. En frisyr sätts samman av ungefär 600 000 linjesegment och kompliceras av att hår har en viss genomskinlighet, vilket ställer stora krav på sorteringsalgoritmerna. Att rendera, att återge, hår eller päls, är ofta mer beräkningsintensivt än rörelserna som personen eller djuret utför.
- Jämfört med för tio år sedan går det idag 2000 gånger fortare att datorgenerera päls, vilket innebär att renderingarna börjar bli detaljrika och verklighetstrogna även för spel, berättar Ulf Assarsson.
Bilden till vänster är ett tidigare exempel från spelet Entropia där man hade behov av förbättrad kvalitet. Bilden till höger är ett exempel från Chalmers forskargrupp i datorgrafik.
Om ljus
Ljus är komplicerat, framförallt för att det synes komma från flera håll i vår omgivning. Riktigt ljus studsar mot allt i sin omgivning. Hur ljuset sprids beror också på hur mycket dammpartiklar luften bär och luftfuktigheten. Att få in många ljuskällor, och skuggor, på ett realistiskt sätt är en av de stora utmaningarna i datorspel eftersom det snabbt blir beräkningstungt.
- Det är skuggstråken mellan ljusstrålarna som är det svåra när man har synliga strimmor av ljus i luften. När spelaren rör sig i sidled ska ljuset hänga med, ögat är känsligt för skuggstråk som hamnar fel. Vi har gjort en lösning, den kom ungefär samtidigt med två andra. Vår är överlägset enklast, säger Ulf Assarsson. Men det finns fortfarande många tillhörande ljusspridningsfenomen som ännu saknar tillräckligt snabba lösningar för realtidsapplikationer som spel.
Skuggstråk och tillhörande ljusfenomen är områden som fortfarande saknar tillräckligt snabba lösningar för datorspel.
Bilderna i bildspelet överst kommer från Ulf Assarssons forskning.
Mer skuggspel på Youtube: