Ibland kommer det dagar då man egentligen bara vill stänga in sig och förlora sig i Reckoning, men som spelbloggare finns även ett samhällsansvar som inte kan vänta på sig. När bevarandet av samhällets grundvalar vilar på ens axlar är det viktigt att inte ta för lätt på det. Reckoning får vänta, plikten framför allt. Javisst, det är dags för ännu ett kunskapslyft när det gäller spelteknik.
Dagens ämne är något jag tycker är en av de viktigaste visuella stegen som tagits de senaste åren, och är något som kallas ambient occlusion. Men innan du ger upp och snubblar på att du knappt ens kunde läsa ordet så tar vi det en gång till. Ambient. Occlusion. Amb-jent Åck-lu-schön. Ambient betyder omgivande och occlusion betyder ungefär blockera.
Man skulle, från orden, kunna tro att det handlar om att någon ställer sig mellan dig och en högtalare som spelar musik av Brian Eno. Även om det visserligen är en tolkning av ambient occlusion så är inte det vad jag kommer skriva om här. För istället för blockande av härliga atmosfäriska ljudtoner kommer den här texten handla om ljus, eller snarare blockande av detsamma. Så låt oss fokusera på det innan vi helt förlorar oss i An Ending (Ascent).
Så vad är då ambient occlusion? Det är först och främst viktigt att veta att all ljussättning i spel är approximationer som visserligen är grundade i verkligheten och har en solid teoretisk grund, men som ändå sist och syvende är något som görs för att det är snabbt och ser hyffsat rätt ut. Man fuskar helt enkelt. En grundläggande sådan fuskande ljusmodell i stort sett alla spel (med mer eller mindre avancerade avarter) baseras på en uppdelning av det ljus som en yta reflekterar i tre komponenter. BSpecularity (blänk), diffuse (matt direktljus) och ambient (miljöljus). Genom att variera parametrarna för dessa kan man får till en rad olika material. Mest komplicerat är blänket, följt av diffusljuset. Allra enklast är dock ambientljuset som helt enkelt är att man låter allt som är i skugga ändå vara lite ljusare än kolsvart. Detta för att simulera, på enklaste tänkbara sätt, hur ljuset studsar runt i en miljö.

Enbart ambient acclusion - inga texturer eller övrigt ljus - från spelet Crysis.
Men verkligheten är inte riktigt så enkel. Även på en mulen dag ser vi skuggor under bilar. I hudveck är det lite mörkare än på den släta huden och i ett trångt hörn är det inte bara damm som gör det det lite mörkare än mitt på väggen. Dessa hörn och kontaktskuggor har lyst med sin frånvaro i spel. Möjligtvis har de dykt upp i en statisk miljö där de räknats ut av ett datorkluster under några timmar och sedan inbakat i miljön. Men det var först med Crysis som det blev en lättillgänglig verklighet även för rörliga objekt.
Från början var det dock ILM – Industrial Light and Magic – som ville ha en teknik att snabbt simulera ljust hur ljus studsar runt i en miljö. ILM jobbar med filmeffekter, men även de vill att det ska gå snabbt. Men istället för att gå hela vägen och simulera en hel verklighet med flera ljusstudsar och vänta flera timmar per bildruta kom man på en teknik som kunde få ner tiden till minuter istället. Genom att fuska. Man tog helt enkelt att från varje pixel skjuta ut små virtuella strålar åt alla håll. De strålar som träffade något i närheten räknades som träff och de som missade blev såklart en miss. Sedan räknade man ut ett genomsnitt och fick då helt enkelt en procent av hur många som träffade något. Detta värde avgjorde hur mycket man skulle mörka ner sin ambientkomponent. Ju mer något låg i ett skrymsle desto fler strålar träffade något och ju mörkare blev det. Den visuella skillnaden blev enorm och tidsåtgången var mycket mindre än traditionella mer korrekta metoder.

Illustrerande bild hur klassisk ambient occlusion fungerar. I detta fall blir pixeln skuggad till 25%.
Detta var dock fortfarande bortom vad som gick att göra i ett spel. Att få en bildruta var tredje minut skulle ju inte funka så bra för att få till de där precisa headshotsen. Men så gjorde Crytek sitt genombrott genom att fuska ännu mer och förenkla en del. Man fick något som var tillräckligt bra och bollen var i rullning.
Istället för att skjuta strålar åt alla möjliga håll så fort man ritar ut en polygon för att se om strålarna träffar några andra trianglar (långsamt!) så kom man på att resultatet blir tillräckligt bra om man istället tar den färdiga bildrutan och dess djupbuffer (bild i minnet som innehåller avståndet till kameran för varje pixel) och kollar på lite slumpartade ställen i djupbuffern i närheten av den aktuella pixeln för att se om det finns något där som kan blocka ljuset. Tekniken kallas för SSAO – Screen Space Ambient Occlusion. Det är inte perfekt, och det kan ibland leda till en känsla av mörka skuggor runt alla objekt. Speciellt om man gör en väldigt enkel variant av tekniken, som i Deus Ex, där effekten är stark överdriven.
Numera ser man tekniken i fler och fler spel, men tyvärr inte alla. För även om det ibland överdrivs så har jag hittils bara sett ett exempel på att det vart riktigt dåligt gjort och det var i Halo Reach. Men likt lens flares såg ut som skit i Monster Truck Madness så kan de idag se helt fantastiska ut i spel som nya Syndicate. Och även i Reach var det bättre än utan. Om du vill kika efter effekten så ta en titt i ovan nämda titlar. Annars finner du den i en väldigt subtil implementation i Uncharted 2 och 3. Du finner den i Starcraft 2 och The Witcher 2 och om du är PC-spelare kan man även lägga till den till spel i efterhand med hjälp av en så kallad injector.

Utan kontaktskuggor är det omöjligt att bedömma avstånd och storlek på bollarna. Med skuggorna blir det nästan läskigt hur djupet träder fram.
Slutresultatet av det hela är att ambient occlusion gör att pappkartongerna och terracottakrukorna slutar sväva i luften på odefinierat avstånd och istället blir grundade i världen och får både storlek och avstånd som hjärnan lätt läser av. Bilden smälter ihop och det slutar vara distinkta objekt med olika texturupplösning och kvalité utan blir istället en helhet – även om texturupplösningen kanske skiljer sig markant. Det tycker jag är bland det viktigaste en grafisk teknik kan göra. Skapa en helhet och trovärdighet som leder till ökad inlevelse – oavsett grafisk stil – och få oss att förlora oss i världen och dess karaktärer.
Dessutom är det ju aldrig fel med lite grafiskt lull-lull.





