Kunskapslyftet: Ambient Occlusion
8

Kunskapslyftet: Ambient Occlusion

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.

Kommentarer

  1. Livligast skriver:

    Lite för tekniskt för min del, men som geek har jag sett lite av tekniken du nämner på andra håll. Jag förstår alltså (huzzah!) och tycker det är intressant.
    Livligast bloggade nyligen: Thatgamecompany till andra konsoler

  2. John A. Baldwin skriver:

    Satt faktiskt och läste en hel del om AO och mer specifikt SSAO härom dagen, så lite kul att du skriver om det här. Du vet ju dock redan vad jag tycker om ljuset i Syndicate så jag låter bli att ”rätta dig” där ^^ Kul med lite tekniskt på en spelblogg, jag tycker det är för lite sånt.

    Jag tänkte faktiskt själv ta upp mitt bloggande igen med just en artikel om grafik och teknik – då kommer både Syndicate och Crysis nämnas, men det kommer framför allt handla om vad som hänt 2011 är tanken. Jag hoppas det blir nåt intressant för dig.
    John A. Baldwin bloggade nyligen: Att våga vara allvarlig

  3. Nej! Texten kom en vecka för sent. Nu har jag precis klarat Skyrim, men i samband med att Nvidia uppgraderade drivrutinen för mitt grafikkort så såg jag deras tweakguide för spelet. Där ingick ambient occlusion, och jag spenderade stora (nåja) delar av förra veckan och början på den här med att pilla med just det. Fattade aldrig riktigt vad det gjorde, eftersom jag inte såg någon direkt skillnad (jag är SÄMST på att se skiftningar i grafiken).

    Det var ändå intressant att pilla med ljussättningen i Skyrim. Jag lärde mig en del om hur spelutvecklare fuskar med ljus (till fördel för spelet). Jag laddade ned en mod från någon som modifierat ljussättningen så att den blev ”realistisk”. Det hade sina fördelar i ljusa utomhusmiljöer, men det var när man dök ner i en djup grotta som de riktiga konsekvenserna blev tydliga. De var becksvarta. Ibland fanns det någon enstaka fackla, men oftast vandrade man runt utan någon ljuskälla från vilket ljuset kunde komma ”realistiskt”; således, allt som oftast absolut mörker. Det var inte bara dåligt, för även om det blev halvt omöjligt att navigera sig fram (om man, som jag, smög fram och inte ville gå runt med en fackla/magikerljus i handen) så gjorde det ett litet underverk med åtminstone den grotta jag var nere i. Hade det totala mörkret bara påverkat mitt smygande, så att jag var mycket svårare att upptäcka än i originalljussättningen, hade jag mycket väl kunnat behålla modden. Nu kändes det inte som att så var fallet, och då påverkade den mig bara negativt så jag avinstallerade den rätt snabbt.

    Eh … ja. Lite random svammel, eftersom jag för en gång skull faktiskt har tänkt lite i samma tekniska tankebanor som du.
    Sebastian Åkerberg bloggade nyligen: En nominering och ett tidsätande monster

  4. V o i dToucher skriver:

    Jaha, å hur ofta tar du hand om tvätten då!? Svara på det här du, du som är så clever! ☺

    När jag i Skyrim träder ut ur mitt hus kan jag på ljuset både känna och se vilken tid på dygnet det är. Tydligast förstås just i brytningstiderna skymning och gryning och mitt på dagen. Har det nåt med Ambjörn Åklösion att göra eller?

    Och hur förklarar du eller han att ett ljus kan kännas vackert, du vet, t ex det där gulguldiga skymningsljuset som för tankarna till fälten under hösten, alldeles innan eller efter skörden?

    Nej, nu har jag inte tid längre med det här jag håller på och tvättar. Tiddelo :-)

  5. Oskar Källner skriver:

    Grymt intressant artikel! :-)
    Tack så mycket.
    Oskar Källner bloggade nyligen: Filmer jag ser fram mot under 2012

  6. V o i dToucher skriver:

    Glömde säga att det var en mycket intressant artikel. Folk tror att jag mobbar dig Fredrik! (-:

  7. Slashdoublejump skriver:

    Hoppas kunskapslyftet återkommer, det var väldigt intressant. Som gamer har man säkert plöjt igenom flera spel med AO men aldrig tänkt på det. Jag ser på spelen i ett helt nytt ljus nu :) ))
    Slashdoublejump bloggade nyligen: Varför Mass Effect 2 är ett av mina favoritspel (och Mass Effect inte är det)

  8. Fredrik skriver:

    Kul att ni gillar kunskapslyftet. De är rätt roliga att skriva också, så det blir nog mer. Lite svåra att få rätt dock så det inte blir för tekniskt.

    Void:
    När det gäller ”vackert” ljus så har det med allt från vinkel till färg till kontraster att göra. Och komplementfärger blir också snyggt. Får gräva vidare i det dock och forska lite. Men ambient occlusion har inte jättemkt att göra med det. Dock gör ambient occlusion att det blir snyggt i skuggorna där ljuset inte träffar.

    Däremot påverkar hdr-exponering och filmkorrigering hur snyggt det blir. Kanske något för ett framtida kunskapslyft. HDR vet ju många vad det är, men går alltid att utveckla och förbättra kunskaperna.

Skriv en kommentar

Visa min senaste bloggpost