Mitä DirectCompute tarkoittaa pelaajien kannalta?
Artikkelin kirjoittaja: Teemu Laitila | 1 kommentti
DirectCompute auttaa Ambient Occlusion -efektin luomisessa
Näytönohjainten kyky suorittaa tehokkaasti massiivisia määriä rinnakkaisia laskutoimituksia on ollut aiemminkin esillä Tom's Hardwaren artikkeleissa. CPU:t ja GPU:t ovat yksinkertaisesti sopivia erilaisiin tehtäviin, mikä johtuu niiden erilaisista arkkitehtuureista. Kun kuvaa käsitellään efektin avulla, sama toimitus on toistettava useiden tuhansien pikseleiden kohdalla samanaikaisesti. Jos käytössä on neliytiminen prosessori tai 2000 laskuyksiköllä varustettu näytönohjain, ei ole erityisen hankalaa päätellä kumpi kykenee suorittamaan tehtävän tehokkaimmin.
Ainakin teoriassa näytönohjaimen resurssien hyödyntäminen voi johtaa merkittävään kaistanleveyden kasvuun, kun resursseja haetaan GDDR5-muistista enimmillään 4 GT/s vauhdilla verrattuna järjestelmämuistin 1600 MT/s tasoon. Samalla raaka laskentateho kasvaa merkittävästi ja myös laskentateho wattia kohti paranee huomattavasti kun käytössä ovat oikeat algoritmit. Huomionarvoista on myös se, että vaikka CPU on edelleen tehokkain väline monien tehtävien suorittamiseen, näytönohjaimen ja prosessorin väliseen kommunikaatioon tarvittavat resurssit sekä siirron aiheuttamat latenssit saattavat olla suurempi paha kuin koko tehtävän suorittaminen näytönohjaimessa.
GPU:n potentiaalin hyödyntäminen vaatii kuitenkin työtä sovelluspuolella. Laskentatehon hyödyntämiseen on useampia keinoja, joista DirectX-rajapintaan kuuluva DirectCompute on Microsoftin kehittämä tekniikka, joka hoitaa kommunikaatiota sovellusten ja GPU:n välillä. Aikaisemmissa artikkeleissa olemme käyneet läpi yleisen GPU-laskennan merkitystä tietyillä tekniikan osa-alueilla kuten tieteellisessä laskennassa sekä tutkimusprojekteissa (SETI@Home ja Folding@Home). Näiden pitkälle erikoistuneiden käyttökohteiden jälkeen GPGPU-laskenta on kuitenkin pikku hiljaa tulossa myös kuluttajakäyttöön. Tähän mennessä käyttökohteina ovat olleet esimerkiksi videon käsittely ja transkoodaus. Nykyään DirectCompute ja OpenCL ovat kuitenkin saapumassa myös pelikehittäjien työkalupakkiin. Uusimmissa pelimoottoreissa näytönohjaimen rinnakkaislaskentatehoa hyödynnetään parantamaan renderöintiä, tekoälyn toimintaa, valaistusta sekä fysiikkaa.
DirectCompute ja Ambient Occluson
Yksi suosituimpia DirectCompute-rajapinnan käyttökohteita on tähän mennessä ollut ambient occlusion -niminen varjostintekniikka (jonka kehitti Industrial Light and Magic -niminen yhtiö jo vuosikymmen takaperin), joka yrittää emuloida valon vuorovaikutusta eri pintojen ja niiden materiaalien kanssa. Valonsäteet heijastuvat kaikilta pinnoilta ja ne jotka saavuttavat taustalla olevan pinnan lisäävät sen valoisuutta. Osa säteistä osuu ja imeytyy matkalla muihin objekteihin, jolloin valon määrä taustalla jää pienemmäksi. Prosessin tuloksena toisten objektien ympäröimät objektit ovat tummempia ja avoimella paikalla olevat objektit kirkkaampia.
Kun kuvittelet mielessäsi talon kulmaa varjoisalla kujalla, se näyttää tummemmalta koska siihen osuu vähemmän valoa ympäröivien rakennusten vuoksi. Ainut valo tulee viereisten rakennusten seinien kautta saapuvista heijastuksista. Ambient Occlusion pyrkii ottamaan huomioon vastaavat tilanteet tietokonegrafiikassa. Ilman sitä valaistus näyttää usein liian tasaiselta ja sitä myöten keinotekoiselta.
Gareth Thomas Codemastersilta valotti asiaa alla olevien DiRT 3 -pelin ruutukaappausten avulla. Kannattaa erityisesti kiinnittää huomiota yksittäisten renkaiden väleihin.
Ylemmässä kuvassa Ambient Occlusion ei ole käytössä.
Tältä näyttää sama kuva Ambient Occlusionin kanssa.
"Teräväpiirtoinen ambient occlusion on tilaefekti, joka laskee näkymään erilaisia tummennuksia sen perusteella, onko alue jonkinlaisessa syvennyksessä syvyyspuskurin näkökulmasta", Thomas selittää. "Ruutukaappauksen rengaskasojen halkeamien pitäisi olla tummempia koska niihin osuu vähemmän heijastunutta valoa. HDAO kertoo sen, kuinka paljon yksi pikseli saa heijastunutta valoa. Tämä tieto yhdistetään valaistutietoihin kun näkymää renderöidään viimeisessä vaiheessa. Se ei ole missään tapauksessa täydellinen tekniikka, koska pelkkä kameran näkökulmasta arvioitu syvyystieto ei ole tarpeeksi tarkka lähtökohta kunnollisen arvon laskemiseen, mutta se on silti selvästi parempi kuin ilman laskentaa."
kommentti 1
Mielenkiitoinen artikkeli. Mutta noita ei dx11 kortteja on vielä aika tavalla markkinoilla, joten ei liene vielä useampaan vuoteen isoja uudistuksia tulossa?