Microsoft oppgraderer DirectX

Jakten på fotorealistisk spillgrafikk fortsetter

Microsoft har nettopp lansert Windows 7, og med det kom DirectX i versjon 11. AMD har nylig lansert siste generasjon grafikkbrikke, som naturligvis støtter DirectX 11. Hva betyr dette for deg og meg?

Colin McRae: DiRT 2: Første spill utviklet fra bunnen av for DirectX 11.
Colin McRae: DiRT 2: Første spill utviklet fra bunnen av for DirectX 11.
Sist oppdatert

Vi ønsker oss mer realistisk 3D-grafikk, og i jakten på filmaktige spill tenker man først og fremst på fete grafikkbrikker, kjappe prosessorer og mye minne.

Men spillutviklernes tekniske fremskritt for å oppnå fotorealisme er vel så viktig. Med de to på plass mangler det bare en viktig bit, nemlig det som kobler spillkoden til maskinvaren.

Hva er DirectX?

DirectX har de fleste hørt om, men mange vet nok ikke mer enn at man bør ha siste versjon installert. Kortversjonen er at det en samling programmeringsgrensesnitt, som standardiserer måten spillkoden blir kjørt. Resultatet er at de som lager spill slipper å tenke på maskinvaren som skal dra spillet. Uansett om det er AMD, Intel eller Nvidia som sørger for grafikkraften, så vil et spill fungere. Deretter er det datakraften som avgjør om det er sirup eller «fragfest».

OpenGL

Dere som har vært gamere siden ID Software slapp Quake 2, husker sikkert OpenGL. Misjonen til OpenGL er den samme som DirectX, men de siste årene er det DirectX som er desidert mest brukt. Årsaken ligger i at sistnevnte har hatt raskere utvikling og derved satt standarden for funksjonalitet og fleksibilitet.

DirectX 11

Forrige versjon av DirectX var en solid oppgradering, som ga spillene mer realistiske overflater og lyssetting. Dessverre ble den lansert eksklusivt for Windows Vista, som ble alt annet enn suksessen Microsoft hadde forventet. Denne gangen gjør de ikke samme feilen, og har allerede sluppet DirectX 11 for Vista. En versjon tilpasset XP kommer ikke.

Microsoft har videreutviklet DirectX 11 med basis i egenskapene fra DirectX 10, og de har ikke lagt inn store visuelle forbedringer. I stedet ligger fokuset på bedre detaljgjengivelse og mer effektiv akselerasjon.

Multitasking

Prosessorer med flere kjerner er vi vant til, og en utfordring er å få dem til å jobbe. Nå er det blitt vanlig med programmer som kan spre seg over flere kjerner for å øke ytelsen, men i spillverden er ikke det lett å få til. Visning av 3D-grafikk er naturlig nok en sekvensiell øvelse, for grafikkbrikkene er nødt til å tegne opp, legge på teksturer og vise bildet i en bestemt rekkefølge. Parallellisering blir en utfordring, fordi andre elementer i en spillapplikasjon, som kunstig intelligens og fysikk må passe inn i det som til slutt skal vises på skjermen.

Men dette forsøker Microsoft å gjøre noe med. Ved å legge til støtte for å dele arbeidsoppgaver direkte i programmeringsgrensesnittet, blir det mulig for en spillapplikasjon å opprette flere ressurser og holde orden på disse, før det til slutt kan være aktuelt å sende dem inn i strømmen av data som vises på skjermen.

Dette vil neppe gi en kraftig økning i ytelsen, men ettersom det blir mer og mer vanlig med mange kjerner er det et viktig første skritt i retning av at spill begynner å bruke datakraften som faktisk er tilgjengelige.

NÆR FOTOREALISME: Endring i dybdeskarphet bringer spill enda nærmere virkeligheten.
NÆR FOTOREALISME: Endring i dybdeskarphet bringer spill enda nærmere virkeligheten.

Tesselering

Realistisk gjengivelse henger sammen med detaljnivået i bildet. Mer detaljer krever også mer datakraft, minne og lagringskapasitet. Crysis er blant de beste eksemplene på et spill som selv på dagens maskinvare er krevende å kjøre på grunn av det høye detaljnivået.

For å avhjelpe problemet med at detaljnivået struper ytelsen, tar man derfor i bruk en teknikk som gjør at polygoner kan deles i mindre deler. Det hele begynner med at det sendes instrukser om en modell til en enhet som kalles Hull Shader. Den klargjør instruksjonene for tesseleringsenhelten, som i sin tur lager den nødvendige geometrien som trengs for å vise en detaljert modell. Derfra sendes den videre til andre deler av grafikkbrikken som sørger for å gi den overflate og belysning, slik den skal vises på skjermen.

Tesselering er viktig, fordi antall modeller i et DirectX 11-spill kan økes i det uendelige, mens det kun er nødvendig med ett sett tesseleringsinstruksjoner. Deretter er det opp til grafikkbrikken å avgjøre hvor detaljert en scene kan være uten at det går ut over spillbarheten. Resultatet er at detaljnivået blir nøyaktig tilpasset grafikkytelsen.

Compute Shaders

I gamle dager var grafikkbrikken begrenset til å ta seg av det som skulle foregå på skjermen. Dagens brikker har egenskaper som gjør at de ligner mer på prosessoren som driver resten av systemet. De er velegnet for å håndtere store datamengder og de har programmerbare seksjoner som kan brukes til å drive andre typer applikasjoner enn spill.

Dette kalles General Purpose GPU (GPGPU), som på norsk blir i retning av "grafikkbrikke til generelle formål". Å bruke grafikkbrikken til andre oppgaver enn spill har vært mulig tidligere, men ATI og Nvidia har hatt hvert sitt språk for å gjøre det mulig. Disse, Stream Technology og CUDA, har ikke vært kompatible, så utviklere har hittil vært nødt til å støtte begge. Det har dessverre resultert i relativt begrenset utbredelse.

En tredje konkurrent, som ikke er plattformavhengig, er OpenCL. OpenCL er lansert av non-profit konsortiet Khronos Group, som også står bak OpenGL. OpenCL har hatt en viss utbredelse i profesjonelle miljøer.

Men nå ser alt lysere ut. DirectCompute-delen av DirectX 11 har nå standardisert akselerasjonen av GPGPU. Microsoft har med dette virkelig bidratt til at vi endelig kan få mer nytte av våre kraftige grafikkbrikker. I stedet for at de kun skal dra Aero-grensesnittet i Windows, kan vi nå få drahjelp til mange flere oppgaver.

I første omgang er det nok programmer for foto- og videoredigering som vil bruke denne muligheten. Nå som flere redigerer i HD-format og bildefilene fra speilrefleksen blir stadig større, er det en kjærkommen å få ekstra ytelse fra et dyrt innkjøpt skjermkort.

Oppsummering

EFFEKTIVT: DirectX 11 gjør visning av delvis gjennomsiktige overflater mindre krevende for grafikkbrikken.
EFFEKTIVT: DirectX 11 gjør visning av delvis gjennomsiktige overflater mindre krevende for grafikkbrikken.

DirectX 11 er en temmelig solid oppgradering. Den er ikke på langt nær like omfattende som versjon 10, men den slipper å være avhengig av at operativsystemet den leveres med blir en suksess. At den blir tilgjengelig på Vista er også en stor fordel. XP-brukere, som fortsatt spiller og ønsker å ta del i utviklingen, bør innse at det er på tide å pensjonere den gamle traveren.

Multitasking, tesselering og GPGPU-støtte er gode grunner til at DirectX 11 relativt raskt bør tas i bruk av utviklere. Siden endringene ikke er så store, blir ikke lærekurven for dem som bruker versjon 10. Det er tross alt de som må like endringene og bestemmer hvor raskt vi brukere kan nyttegjøre oss forbedringene.

På spillfronten er det i skrivende stund kun Colin McRae: DiRT 2 man får tak i som bruker DirectX 11. Og da bare om man kjøper et skjermkort der spillet ligger ved. Men vi har mye godt i vente. På rekke og rad ligger godbiter som Alien vs. Predator, Dungeons and Dragons Online og The Lord of the Rings Online med planlagt lansering i første kvartal i 2010. Senere kommer snadder som Crysis 2 og F1 2010.

Det vil trolig drøye litt lenger før vi får se GPGPU-støtte i programmer beregnet på amatører. Vi gjetter at store firmaer som har en relativt god markedsandel innen programvare for foto- og videoredigering vil være først ute med GPGPU-støtte. Adobe har i Photoshop støttet dette siden 2008, og de vil nok være tidlig ute med å legge inn DirectX 11-støtte i programmene rettet mot glade amatører. Vi gleder oss allerede!

Les også:

33 tips i Windows 7

7 bærbare med Windows 7

Nytt liv i gammel PC med Windows 7

De beste miniprogrammene til Windows 7

Denne saken ble første gang publisert 07/04 2010, og sist oppdatert 06/05 2017.

Les også