SlideShare a Scribd company logo
1 of 21
Optima Lärdomsprov 1 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
Grafikkort
Marko Vuorsalo
Lärdomsprov 2009
Optima Lärdomsprov 2 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
Grundexamen i Databehandling
Optima
Innehållsförteckning
1 Inledning.............................................................................................................1
1.1 Syfte och målsättning.................................................................................1
1.2 Avgränsningar............................................................................................1
1.3 Metodik......................................................................................................1
1.4 Terminologi................................................................................................2
2 Allmänt om grafikkort......................................................................................3
2.1 Bakgrund....................................................................................................3
2.1 2D till 3D...................................................................................................4
2.3 Uppkomsten av Direct3D och OpenGL.....................................................5
3 Teknologisk utveckling.....................................................................................7
3.1 3Dfx och Glide.............................................................................................
3.2 ATI & NVidia..............................................................................................
3.3 Ökande Pixel Shaders..................................................................................
3.4 Grafikminne.................................................................................................
4 Sammanfattning..............................................................................................12
Källförteckning....................................................................................................
Bilaga
Optima Lärdomsprov 3 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
1 Inledning
I mitt slutarbete beskriver jag grafikkort, deras användningsområde, och deras
utveckling. Området intresserar mig, därför att det är mycket omfattande, och utveckling
sker hela tiden. Till stora delar handlar slutarbetet om diverse teknologier som har
utvecklats under årens lopp, sedan 3D-grafiken blev allmänt använd inom bl.a.
spelindustrin. Inledningsvis berättar jag om uppkomsten av 3D-grafikkort, sedan
beskriver jag utvecklingen från 3Dfx-baserade kort, till och med DirectX 10-baserade
kort. Jag tar även upp lite mer teknologiska aspekter, såsom Pixel Shaders och
grafikminne i Kapitel 3.
1.1 Syfte och målsättning
Syftet med slutarbetet är att beskriva den teknologiska utvecklingen av grafikkort, och
dessa utvecklingars implementeringar inom bl.a. dataspelsbranschen.
1.2 Avgränsningar
I detta slutarbete har jag inte behandlat integrerade grafikkretsar av något slag, förutom i
syftet att beskriva bakgrunden till grafikkortens uppkomst.
Optima Lärdomsprov 4 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
1.3 Terminologi
DirectX – Ett s.k. användargränssnitt för spelprogrammerare, med vilken
kommunikationen mellan operativsystemet (Windows) och maskinvaran sker.
Gränssnittet består av fler olika ”underkategorier”. Direct3D, som är den grafikrelaterade
delen, behandlas i detta slutarbete.
OpenGL – Ett grafik-programmeringsspråk, baserat på öppen källkod. Används som
alternativ till Direct3D (Grafikdelen av DirectX).
Pixel – från engelskans Picture Element; en punkt på bildskärmen.
Pixel Shader – Hårdvaruenhet på grafikkorten, som hanterar enskilda pixlars (se Pixel)
egenskaper, bl.a. ljussättning, och skuggning.
Polygon – Månghörning, från grekiskans Poly (Fler), och Gonos (Kant). En yta i 3D-
utrymme, baserat på Vertex-punkter (se Vertex).
Renderering – Metoden för att visa grafik på datorskärmen.
Texturer – Bilder som används för att bestämma utseendet på polygoner (se Polygon).
Upplösning – Antalet pixlar som skärmbilden byggs upp av, t.ex. 1024 * 768, 1280 *
1024, eller 1400 * 900, och många andra.
Vertex – En specifik punkt i ett givet 3D-utrymme, också knytpunkt för kanterna på en
polygon.
VRAM (Grafikminne) – Enskilt minne på grafikkortet, för lagring av bland annat
texturer. (se Texturer)
Optima Lärdomsprov 5 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
2 Allmänt om grafikkort
Grafikkort är enskilda instickskort, ämnade att sköta om alla grafikrelaterade uträkningar
i bl.a. spel och designprogram, t.ex. 3D Studio Max.1
Från början var grafikkorten endast
integrerade kretsar som arbetade tillsammans med datorns huvudprocessor, främst för att
tillåta processorn hantera allmänna uträkningar. Med tiden, alltefter spel och
designprogram krävde alltmer prestanda av maskinvaran, blev kapaciteten i de
integrerade kretsarna otillräcklig, därför började man utveckla enskilda instickskort som
kunde arbeta självständigt från processorn.
2.1 Bakgrund
Grafikkortens historia började redan på 1970-talet, då datortillverkaren Atari tillverkade
sina första datormodeller för hemmabruk. Dom hade inga egentliga grafikkretsar, utan
grafiken sköttes av en delad processor. Dom allra första egentliga grafikkretsarna dök
upp på marknaden på början av 1980-talet, då Amiga Commodore-datorn lanserades.
Dessa grafikkretsar kunde dock endast hantera 2D-grafik i mycket låga upplösningar.2
Allteftersom kraven på grafikkretsarna blev
större, blev också tillverkarna medvetna om
att integrerade kretsar inte hade tillräcklig
kapacitet, därför utvecklade S3 (Uppköpt av
VIA år 2001) sin första 2D-accelerationskrets,
S3 86C911.3 4
(Se Figur 1.)
Figur 1. S3 86C911-kortet
1
http://www.autodesk.com/3dsmax
2
http://en.wikipedia.com/wiki/GPU
3
http://www.s3graphics.com/en/company/index.jsp
4
http://en.wikipedia.com/wiki/S3_Graphics
Optima Lärdomsprov 6 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
2.2 2D till 3D
I början på 1990-talet blev processoruträknad 3D-rendering alltmer vanligt i spel och
designprogram, och kapaciteten i 2D-accelererade kort blev i sin tur för svag. Därför
började S3, Ati och Matrox utveckla sina första grafikkort med inbyggda 3D-
renderingsfunktioner. Dessa kort var inte egentligen 3D-kort i sig, utan i grunden var det
2D-kort med tillagda 3D-funktioner.
De allra första exklusivt 3D-
accelererade korten var 3Dfx
VooDoo och VooDoo2-korten,
som lanserades åren 1995 och
1997. (Se Figur 2.) Dessa kort
hade dock endast 3D-funktion-
alitet, vilket ledde till att man
var tvungen att ha ett 2D-kort
samtidigt i datorn. Detta
innebar ju förstås en extra
utgift för konsumenterna, och en kortplats Figur 2. Ett 3Dfx VooDoo2-
kort.
mindre tillgänglig inuti datorn. 5
Samtidigt som 3Dfx vidareutvecklade VooDoo-korten, utvecklade konkurrenterna
Matrox, Ati och S3 mer avancerade versioner av sina första kort, som fick enskilda 3D-
kretsar på korten, men dessa kort kunde inte nå VooDoo2-kortens prestanda. För att nå
en ännu större position på slutanvändarmarknaden började 3Dfx utveckla ett nytt kort
som hade både 3D- och 2D-kretsar, VooDoo Banshee, som lanserades år 1998.
År 1994 hade ett nytt företag dykt upp på marknaden, NVidia, då de lanserade sitt första
kort, Riva. Det utvecklades vidare till Riva TNT, TNT2 och Riva 1286
. Riva 128-kortet,
som lanserades 1997, var prestandamässigt på ungefär samma nivå som ett VooDoo2-
5
http://en.wikipedia.org/wiki/3Dfx
6
http://en.wikipedia.org/wiki/RIVA_128
Optima Lärdomsprov 7 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
kort. Samtidigt hade Ati fortsatt sin utveckling av Rage-korten, av vilka det sjätte, som
lanserades år 2000, slutligen döptes om till Radeon.7
(se Figur 3)
Figur 3. Ett Ati Radeon-kort.
2.2 Uppkomsten av Direct3D och OpenGL
Under 1990-talet hade 3Dfx utvecklat ett 3D-gränssnitt som kallades Glide, som endast
kunde använda basfunktionaliteten hos 3Dfx-grafikkorten, men detta gränssnitt, liksom
3Dfx-korten, blev snabbt utdaterat, i och med att Microsoft utvecklade sitt DirectX-
gränssnitt, och dess grafikdel, Direct3D.8
De första ”moderna” Direct3D-grafikkorten
som kom ut på marknaden var NVidias GeForce 256 och Atis Radeon, som hade stöd för
Direct3D 7. Egentligen hade redan NVidias Riva 128 och Atis Rage Pro-kort Direct3D-
funktioner, men bara till version 5 av Direct3D. Denna version var ännu såpass tidig i
utvecklingsstadiet att korten fortfarande orsakade rätt många små ”buggar” i spel. På
denna tid var OpenGL mycket enklare att använda9
, för att det kunde använda all
tillgänglig 3D-funktionalitet, oberoende av kortet, medan man var tvungna att
7
http://en.wikipedia.org/wiki/Radeon
8
http://en.wikipedia.org/wiki/Direct3D
9
http://en.wikipedia.org/wiki/OpenGL
Optima Lärdomsprov 8 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
programmera Direct3D i två separata lager, ett för NVidia-kort, och ett för Ati-kort.
Utveckling av både Direct3D och OpenGL har skett i princip oavbrutet sedan dess, allt
för att lyckas få kommunikationen mellan grafikkorten och programvaran att ske alltmer
direkt. För en fullständig överblick av DirectX-versionerna, vänligen se bilagan
Lanseringshistorik över DirectX. OpenGL har dock inte funnits i lika många olika
versioner, trots att det ursprungligen utvecklades av Silicon Graphics, Inc. redan år 1992.
Den senaste versionen av OpenGL, 3.1, lanserades 24 Mars 2009.
3 Teknologisk utveckling
Grafikkorten, och alla deras underliggande teknologier, har utvecklats enormt mycket
under hela 1990- och 2000-talen, till exempel om man ser på ett grafikkort i en modern
dator (med modern menar jag från ca år 2006 och framåt), så uppnår prestandan i det till
motsvarande nivå som en fullständig dator från ca år 2002.
3.1 3Dfx och Glide Figur 4. 3Dfx-logon
Som ovan konstaterats, var det första företaget som tillverkade populära 3D-grafikkort
3Dfx, då de lanserade sin VooDoo-serie vid mitten av 1990-talet. Dessa grafikkort
kommunicerade med programvaran via Glide, ett gränssnitt baserat på OpenGL, som
3Dfx hade utvecklat vidare specifikt för sina egna kort. Dom allra flesta tidiga 3D-
accelererade spelen kördes via ett mellanlager som översatte operativsystemets
instruktioner till Glide-kompatibel kod, vilken kunde köras direkt på VooDoo-kortet.
Glide var så gott som överlägset alla tidiga försök av Microsoft att skapa ett effektivare
gränssnitt, d.v.s. Direct3D, och det var egentligen inte före version 5.2 som Direct3D
började uppnå en allmänt godtagbar prestandanivå. Glides främsta styrka låg just i att det
kommunicerade med 3Dfx-korten mer eller mindre direkt, eftersom det var anpassat för
dessa kort. 10
10
http://en.wikipedia.org/wiki/Glide_API
Optima Lärdomsprov 9 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
3.2 Ati & NVidia
I dagens läge är de två överlägset populäraste grafikkortstillverkarna Ati och NVidia,
med sina Radeon- respektive GeForce-serier. Då 3Dfx gick i konkurs år 2002, köptes
delar av företaget upp av NVidia, och år 2006 köptes Ati upp av processortillverkaren
AMD. Nedan följer en tabell över olika grafikkort från respektive företag, med DirectX-
version och ungefärliga lanseringsårtal.
DirectX-version11
Ati NVidia Årtal
5 Rage 3D, Rage II Riva 128, Riva 128ZX 1995-1998
6 Rage Pro, Rage 128, Rage
XL/XC, Rage Fury MAXX
Riva TNT, Vanta, Vanta LT,
Riva TNT2, Riva TNT2 M64,
Riva TNT2 Pro, Riva TNT Ultra
1997-1999
7 Radeon 32, Radeon 64,
Radeon 7200, Radeon 7500
GeForce 256 SDR, 256 DDR,
GeForce2- och GeForce 4MX-
serierna
1999-2002
8.1 Radeon 8500, 9000-9200
(även 9250 år 2004)
GeForce3- och GeForce 4Ti-
serierna
2001-2003
9.0 Radeon 9500-9800-serien,
Radeon X300-X600-serien,
(även X1050 år 2007)
GeForce FX (5xxx)-serien 2002-2004
9.0b Radeon X700-X850-serien *** 2004-2005
9.0c Radeon X1300-X1950-serien GeForce 6- och 7-serierna 2004-2007
10 HD2000, HD3000, och
HD4000-serierna
GeForce 8, 9, GTX200- och
GTX300-serierna
2006-nutid
Figur 5.
*** NVidia hoppade direkt till Pixel Shader 3.0
med GeForce 6-korten, Atis kort hade inte Pixel
Shader 3.0 förrän i X1000-serien.
Figur 5 & 6: Atis resp. NVidias logo.
Figur 6.
3.3 Ökande Pixel Shaders
11
Se Bilaga 1
Optima Lärdomsprov 10 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
I början av Direct3D-grafikens historia var grafiken relativt simpel och till och med
tråkig, jämfört med dagens grafik. Dagens grafik ser mycket mer levande ut, tack vare så
kallade Shaders. Dom allra första Shader-enheterna, som dök up i Direct3D 8, var främst
för ljussättningar vid särskilda punkter, t.ex. facklor. Med tiden utvecklades shader-
användningen till den grad att Shaders kunde bland annat användas för att ändra
utseendet på väggar, tak, vatten, och karaktärer. Se figurerna 7, 8, 9 och 10 för exempel.
Figur 7. Pixel Shader-jämförelse från spelet Elder Scrolls III: Morrowind (2002)
Optima Lärdomsprov 11 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
Figur 8. Pixel shader-jämförelse av en vy över vatten, med pixel shader till vänster, utan till höger.
Optima Lärdomsprov 12 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
Figur 9. Pixel Shader 2.0 vs. 3.0, från spelet Far Cry (2004)
Optima Lärdomsprov 13 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
Figur 10. Pixel Shader 3.0 vs 4.0 från spelet Call of Juarez (2007)
För att kunna rendera såpass många detaljer, behövdes det med tiden ännu flera så
kallade Shader Units på grafikkorten. Dessa Shader Units är särskilda enheter som sköter
om bl.a. skuggsättning och belysning individuellt för varje pixel som ska behandlas av
kortet. Till exempel kortet Ati Radeon 9800 Pro från 2004, hade totalt 12 shading-
processorer, indelat i 8 Pixel Shaders och 4 Vertex Shaders, medan kortet Ati HD4670
från 2008 har över 800 unified shader-processorer, som är en vidareutveckling av de
urspringliga Shaderenheterna. Den ursprungliga beräkningskapaciteten var begränsad till
ett visst antal pixeluträkningar, i och med att det fanns flera olika typer av Shader Units,
men nu, sedan uppkomsten av den så kallade Unified Shader-arkitekturen kan samtliga
shading-processorer utföra tre olika typer av uträkningar; Pixel Shading, Vertex Shading
och Geometry Shading, vilket balanserar uppgifterna betydligt effektivare mellan
Shader-enheterna.12
12
http://en.wikipedia.org/wiki/Shader_(computer_science)
Optima Lärdomsprov 14 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
3.4 Grafikminne
Alla grafikkort, liksom datorer, har ett eget arbetsminne. I detta minne lagras då texturer,
alltså bilder som läggs över 3D-renderade ytor. För ett exempel, se Figur 11.
Figur 11. En icke-texturerad pansarvagn, ovan. Nedanför, samma pansarvagn med
texturer applicerade. Observera att varje olikfärgad del i den övre bilden är en polygon.
(Källa: Wikipedia)
Med tiden blev ytor såsom väggar, tak, golv, och naturliga ytor alltmer detaljerade, vilket
då i sin tur betydde att för att kunna lagra så stora mängder detalj i texturerna, blev deras
upplösning, och konsekvent, också minnet större. De minsta texturerna var från början
64x64 pixels, vilket krävde ca. 10 MB minne, medan i nutidens spel kan texturer vara
upp till 8192x8192 pixels, vilket då kan kräva över 1024 MB minne.
Optima Lärdomsprov 15 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
4. Sammanfattning
Sammanfattningsvis kan sägas att utvecklingen har skett med rasande takt, ända sedan
mitten av 1990-talet. Utvecklingens hastighet har dessutom ökat markant hela tiden, till
den grad att med dagens kraftfullaste grafikkort kan man uppnå närapå fotorealistiska
resultat. Då återstår den stora frågan; hur länge tar det innan grafikkort uppnår kapacitet
för exakta återgivningar av vår miljö? Vi är väldigt nära nu!
Avslutningsvis har jag sökt fram några realistiska naturbilder, helt rendererade med
grafikkort.
Solsken över vatten (Rendereringsexempel)
Optima Lärdomsprov 16 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
Bild från Bethesda Softworks’ Elder Scrolls IV: Oblivion (2006)
Solsken över kusten-bild från Cryteks Crysis (2007)
Optima Lärdomsprov 17 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
Kustbild från Cryteks Crysis (2007)
Djungelbild från Cryteks Crysis (2007)
Optima Lärdomsprov 18 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
Källförteckning:
Om fotnot inte är angiven, är informationen sammanställd från diverse artiklar på internet.
Bilderna är till största delen tagna från www.gamespot.com och via Google.
Bilaga:
Lanseringshistorik över DirectX:
DirectX version
Version
nummer
Operativsystem Lanseringsdatum
DirectX 1.0 4.02.0095 30 September, 1995
DirectX 2.0 Skickades endast med ett fåtal program. 1996
DirectX 2.0a 4.03.00.1096 Windows 95 OSR2 och NT 4.0 5 Juni, 1996
DirectX 3.0
4.04.00.0068 15 September, 1996
4.04.00.0069
Uppdatering till DirectX som
inkluderade Direct3D 4.04.00.0069
1996
DirectX 3.0a 4.04.00.0070
Windows NT 4.0 SP3 (och nyare)
sista versionen av DirectX för Windows
NT 4.0
December 1996
DirectX 3.0b 4.04.00.0070 En mindre uppdatering till DirectX 3.0 December 1996
DirectX 4.0 Lanserades ej.
Optima Lärdomsprov 19 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
DirectX 5.0
4.05.00.0155
(RC55)
Tillgänglig som Beta för Windows NT
5.0 som installerades på Windows NT
4.0
16 Juli, 1997
DirectX 5.2
4.05.01.1600
(RC00)
DirectX 5.2 för Windows 95 5 Maj, 1998
4.05.01.1998
(RC0)
Windows 98 exklusiv 25 Juni, 1998
DirectX 6.0
4.06.00.0318
(RC3)
Windows CE som användes på
Dreamcast
7 Augusti, 1998
DirectX 6.1
4.06.02.0436
(RC0)
3 Februari, 1999
DirectX 6.1a
4.06.03.0518
(RC0)
Windows 98 SE exklusiv 5 Maj, 1999
DirectX 7.0
4.07.00.0700
(RC1)
22 September, 1999
4.07.00.0700 Windows 2000 17 Februari, 2000
DirectX 7.0a
4.07.00.0716
(RC0)
8 Mars, 2000
4.07.00.0716
(RC1)
2000
DirectX 7.1
4.07.01.3000
(RC1)
Windows Me exklusiv 14 September, 2000
Optima Lärdomsprov 20 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
DirectX 8.0
4.08.00.0400
(RC10)
12 November, 2000
DirectX 8.0a
4.08.00.0400
(RC14)
Sista versionen för Windows 95 5 Februari, 2001
DirectX 8.1
4.08.01.0810
Windows XP, Windows Server 2003 och
Xbox
25 Oktober, 2001
4.08.01.0881
(RC7)
Version för äldre operativsystem 8 November, 2001
DirectX 8.1a
4.08.01.0901
(RC?)
Innehöll en uppdatering till Direct3D
(D3d8.dll)
2002
DirectX 8.1b
4.08.01.0901
(RC7)
Uppdatering med ett fix för DirectShow
på Windows 2000 (Quartz.dll)
25 Juni, 2002
DirectX 8.2
4.08.02.0134
(RC0)
Samma som DirectX 8.1b, men inklusive
DirectPlay 8.2
2002
DirectX 9.0
4.09.00.0900
(RC4)
19 December, 2002
DirectX 9.0a
4.09.00.0901
(RC6)
26 Mars, 2003
DirectX 9.0b
4.09.00.0902
(RC2)
13 August, 2003
DirectX 9.0c 4.09.00.0903 Service Pack 2 för Windows XP
4.09.00.0904 4 Augusti, 2004
Optima Lärdomsprov 21 (21)
Databehandling
Marko Vuorsalo D06 16.4.2015
(RC0)
4.09.00.0904
Windows XP SP2, Windows Server
2003 SP1, Windows Server 2003 R2 och
Xbox 360
6 Augusti, 2004
DirectX 9.0c –
månatliga
uppdateringar
4.09.00.0904
(RC0)
Versionen som släpptes 9 Februari
2005 var den första 64-bits versionen.
Den sista versionen med stöd för
Windows 98 och Windows Me var
uppdateringen från 13 December, 2006
Släppta månatligen fr.o.m.
Oktober 2004 till Augusti 2007,
därefter kvartalsvis; senaste
version: Mars 2009
DirectX 10
6.00.6000.16386 Windows Vista exklusiv 30 November, 2006
6.00.6001.18000
Service Pack 1 for Windows Vista,
Windows Server 2008
inkluderar Direct3D 10.1
4February, 2008
DirectX 11 6.01.7000.0000 Windows 7 och Vista service pack 2 ??? Våren/sommaren 2009
Källa: Wikipedia

More Related Content

Similar to Slutarbete - Grafikkort

Ljud och grafik kort
Ljud och grafik kortLjud och grafik kort
Ljud och grafik kortAnna75_S
 
Grafikkort och ljudkort
Grafikkort och ljudkortGrafikkort och ljudkort
Grafikkort och ljudkortrasmusback
 
Grafikkort och ljudkort
Grafikkort och ljudkortGrafikkort och ljudkort
Grafikkort och ljudkortrasmusback
 
Uppgift 6 datalära olika ljud och grafikkort andreas-jonsson
Uppgift 6 datalära olika ljud   och grafikkort andreas-jonssonUppgift 6 datalära olika ljud   och grafikkort andreas-jonsson
Uppgift 6 datalära olika ljud och grafikkort andreas-jonssonPhonetics123
 
Sjalvstudie Beta
Sjalvstudie BetaSjalvstudie Beta
Sjalvstudie Betamaxmalkom
 

Similar to Slutarbete - Grafikkort (7)

Ljud och grafik kort
Ljud och grafik kortLjud och grafik kort
Ljud och grafik kort
 
Grafikkort och ljudkort
Grafikkort och ljudkortGrafikkort och ljudkort
Grafikkort och ljudkort
 
Grafikkort och ljudkort
Grafikkort och ljudkortGrafikkort och ljudkort
Grafikkort och ljudkort
 
Nyheter och tips i map2014
Nyheter och tips i map2014Nyheter och tips i map2014
Nyheter och tips i map2014
 
Dator
DatorDator
Dator
 
Uppgift 6 datalära olika ljud och grafikkort andreas-jonsson
Uppgift 6 datalära olika ljud   och grafikkort andreas-jonssonUppgift 6 datalära olika ljud   och grafikkort andreas-jonsson
Uppgift 6 datalära olika ljud och grafikkort andreas-jonsson
 
Sjalvstudie Beta
Sjalvstudie BetaSjalvstudie Beta
Sjalvstudie Beta
 

Slutarbete - Grafikkort

  • 1. Optima Lärdomsprov 1 (21) Databehandling Marko Vuorsalo D06 16.4.2015 Grafikkort Marko Vuorsalo Lärdomsprov 2009
  • 2. Optima Lärdomsprov 2 (21) Databehandling Marko Vuorsalo D06 16.4.2015 Grundexamen i Databehandling Optima Innehållsförteckning 1 Inledning.............................................................................................................1 1.1 Syfte och målsättning.................................................................................1 1.2 Avgränsningar............................................................................................1 1.3 Metodik......................................................................................................1 1.4 Terminologi................................................................................................2 2 Allmänt om grafikkort......................................................................................3 2.1 Bakgrund....................................................................................................3 2.1 2D till 3D...................................................................................................4 2.3 Uppkomsten av Direct3D och OpenGL.....................................................5 3 Teknologisk utveckling.....................................................................................7 3.1 3Dfx och Glide............................................................................................. 3.2 ATI & NVidia.............................................................................................. 3.3 Ökande Pixel Shaders.................................................................................. 3.4 Grafikminne................................................................................................. 4 Sammanfattning..............................................................................................12 Källförteckning.................................................................................................... Bilaga
  • 3. Optima Lärdomsprov 3 (21) Databehandling Marko Vuorsalo D06 16.4.2015 1 Inledning I mitt slutarbete beskriver jag grafikkort, deras användningsområde, och deras utveckling. Området intresserar mig, därför att det är mycket omfattande, och utveckling sker hela tiden. Till stora delar handlar slutarbetet om diverse teknologier som har utvecklats under årens lopp, sedan 3D-grafiken blev allmänt använd inom bl.a. spelindustrin. Inledningsvis berättar jag om uppkomsten av 3D-grafikkort, sedan beskriver jag utvecklingen från 3Dfx-baserade kort, till och med DirectX 10-baserade kort. Jag tar även upp lite mer teknologiska aspekter, såsom Pixel Shaders och grafikminne i Kapitel 3. 1.1 Syfte och målsättning Syftet med slutarbetet är att beskriva den teknologiska utvecklingen av grafikkort, och dessa utvecklingars implementeringar inom bl.a. dataspelsbranschen. 1.2 Avgränsningar I detta slutarbete har jag inte behandlat integrerade grafikkretsar av något slag, förutom i syftet att beskriva bakgrunden till grafikkortens uppkomst.
  • 4. Optima Lärdomsprov 4 (21) Databehandling Marko Vuorsalo D06 16.4.2015 1.3 Terminologi DirectX – Ett s.k. användargränssnitt för spelprogrammerare, med vilken kommunikationen mellan operativsystemet (Windows) och maskinvaran sker. Gränssnittet består av fler olika ”underkategorier”. Direct3D, som är den grafikrelaterade delen, behandlas i detta slutarbete. OpenGL – Ett grafik-programmeringsspråk, baserat på öppen källkod. Används som alternativ till Direct3D (Grafikdelen av DirectX). Pixel – från engelskans Picture Element; en punkt på bildskärmen. Pixel Shader – Hårdvaruenhet på grafikkorten, som hanterar enskilda pixlars (se Pixel) egenskaper, bl.a. ljussättning, och skuggning. Polygon – Månghörning, från grekiskans Poly (Fler), och Gonos (Kant). En yta i 3D- utrymme, baserat på Vertex-punkter (se Vertex). Renderering – Metoden för att visa grafik på datorskärmen. Texturer – Bilder som används för att bestämma utseendet på polygoner (se Polygon). Upplösning – Antalet pixlar som skärmbilden byggs upp av, t.ex. 1024 * 768, 1280 * 1024, eller 1400 * 900, och många andra. Vertex – En specifik punkt i ett givet 3D-utrymme, också knytpunkt för kanterna på en polygon. VRAM (Grafikminne) – Enskilt minne på grafikkortet, för lagring av bland annat texturer. (se Texturer)
  • 5. Optima Lärdomsprov 5 (21) Databehandling Marko Vuorsalo D06 16.4.2015 2 Allmänt om grafikkort Grafikkort är enskilda instickskort, ämnade att sköta om alla grafikrelaterade uträkningar i bl.a. spel och designprogram, t.ex. 3D Studio Max.1 Från början var grafikkorten endast integrerade kretsar som arbetade tillsammans med datorns huvudprocessor, främst för att tillåta processorn hantera allmänna uträkningar. Med tiden, alltefter spel och designprogram krävde alltmer prestanda av maskinvaran, blev kapaciteten i de integrerade kretsarna otillräcklig, därför började man utveckla enskilda instickskort som kunde arbeta självständigt från processorn. 2.1 Bakgrund Grafikkortens historia började redan på 1970-talet, då datortillverkaren Atari tillverkade sina första datormodeller för hemmabruk. Dom hade inga egentliga grafikkretsar, utan grafiken sköttes av en delad processor. Dom allra första egentliga grafikkretsarna dök upp på marknaden på början av 1980-talet, då Amiga Commodore-datorn lanserades. Dessa grafikkretsar kunde dock endast hantera 2D-grafik i mycket låga upplösningar.2 Allteftersom kraven på grafikkretsarna blev större, blev också tillverkarna medvetna om att integrerade kretsar inte hade tillräcklig kapacitet, därför utvecklade S3 (Uppköpt av VIA år 2001) sin första 2D-accelerationskrets, S3 86C911.3 4 (Se Figur 1.) Figur 1. S3 86C911-kortet 1 http://www.autodesk.com/3dsmax 2 http://en.wikipedia.com/wiki/GPU 3 http://www.s3graphics.com/en/company/index.jsp 4 http://en.wikipedia.com/wiki/S3_Graphics
  • 6. Optima Lärdomsprov 6 (21) Databehandling Marko Vuorsalo D06 16.4.2015 2.2 2D till 3D I början på 1990-talet blev processoruträknad 3D-rendering alltmer vanligt i spel och designprogram, och kapaciteten i 2D-accelererade kort blev i sin tur för svag. Därför började S3, Ati och Matrox utveckla sina första grafikkort med inbyggda 3D- renderingsfunktioner. Dessa kort var inte egentligen 3D-kort i sig, utan i grunden var det 2D-kort med tillagda 3D-funktioner. De allra första exklusivt 3D- accelererade korten var 3Dfx VooDoo och VooDoo2-korten, som lanserades åren 1995 och 1997. (Se Figur 2.) Dessa kort hade dock endast 3D-funktion- alitet, vilket ledde till att man var tvungen att ha ett 2D-kort samtidigt i datorn. Detta innebar ju förstås en extra utgift för konsumenterna, och en kortplats Figur 2. Ett 3Dfx VooDoo2- kort. mindre tillgänglig inuti datorn. 5 Samtidigt som 3Dfx vidareutvecklade VooDoo-korten, utvecklade konkurrenterna Matrox, Ati och S3 mer avancerade versioner av sina första kort, som fick enskilda 3D- kretsar på korten, men dessa kort kunde inte nå VooDoo2-kortens prestanda. För att nå en ännu större position på slutanvändarmarknaden började 3Dfx utveckla ett nytt kort som hade både 3D- och 2D-kretsar, VooDoo Banshee, som lanserades år 1998. År 1994 hade ett nytt företag dykt upp på marknaden, NVidia, då de lanserade sitt första kort, Riva. Det utvecklades vidare till Riva TNT, TNT2 och Riva 1286 . Riva 128-kortet, som lanserades 1997, var prestandamässigt på ungefär samma nivå som ett VooDoo2- 5 http://en.wikipedia.org/wiki/3Dfx 6 http://en.wikipedia.org/wiki/RIVA_128
  • 7. Optima Lärdomsprov 7 (21) Databehandling Marko Vuorsalo D06 16.4.2015 kort. Samtidigt hade Ati fortsatt sin utveckling av Rage-korten, av vilka det sjätte, som lanserades år 2000, slutligen döptes om till Radeon.7 (se Figur 3) Figur 3. Ett Ati Radeon-kort. 2.2 Uppkomsten av Direct3D och OpenGL Under 1990-talet hade 3Dfx utvecklat ett 3D-gränssnitt som kallades Glide, som endast kunde använda basfunktionaliteten hos 3Dfx-grafikkorten, men detta gränssnitt, liksom 3Dfx-korten, blev snabbt utdaterat, i och med att Microsoft utvecklade sitt DirectX- gränssnitt, och dess grafikdel, Direct3D.8 De första ”moderna” Direct3D-grafikkorten som kom ut på marknaden var NVidias GeForce 256 och Atis Radeon, som hade stöd för Direct3D 7. Egentligen hade redan NVidias Riva 128 och Atis Rage Pro-kort Direct3D- funktioner, men bara till version 5 av Direct3D. Denna version var ännu såpass tidig i utvecklingsstadiet att korten fortfarande orsakade rätt många små ”buggar” i spel. På denna tid var OpenGL mycket enklare att använda9 , för att det kunde använda all tillgänglig 3D-funktionalitet, oberoende av kortet, medan man var tvungna att 7 http://en.wikipedia.org/wiki/Radeon 8 http://en.wikipedia.org/wiki/Direct3D 9 http://en.wikipedia.org/wiki/OpenGL
  • 8. Optima Lärdomsprov 8 (21) Databehandling Marko Vuorsalo D06 16.4.2015 programmera Direct3D i två separata lager, ett för NVidia-kort, och ett för Ati-kort. Utveckling av både Direct3D och OpenGL har skett i princip oavbrutet sedan dess, allt för att lyckas få kommunikationen mellan grafikkorten och programvaran att ske alltmer direkt. För en fullständig överblick av DirectX-versionerna, vänligen se bilagan Lanseringshistorik över DirectX. OpenGL har dock inte funnits i lika många olika versioner, trots att det ursprungligen utvecklades av Silicon Graphics, Inc. redan år 1992. Den senaste versionen av OpenGL, 3.1, lanserades 24 Mars 2009. 3 Teknologisk utveckling Grafikkorten, och alla deras underliggande teknologier, har utvecklats enormt mycket under hela 1990- och 2000-talen, till exempel om man ser på ett grafikkort i en modern dator (med modern menar jag från ca år 2006 och framåt), så uppnår prestandan i det till motsvarande nivå som en fullständig dator från ca år 2002. 3.1 3Dfx och Glide Figur 4. 3Dfx-logon Som ovan konstaterats, var det första företaget som tillverkade populära 3D-grafikkort 3Dfx, då de lanserade sin VooDoo-serie vid mitten av 1990-talet. Dessa grafikkort kommunicerade med programvaran via Glide, ett gränssnitt baserat på OpenGL, som 3Dfx hade utvecklat vidare specifikt för sina egna kort. Dom allra flesta tidiga 3D- accelererade spelen kördes via ett mellanlager som översatte operativsystemets instruktioner till Glide-kompatibel kod, vilken kunde köras direkt på VooDoo-kortet. Glide var så gott som överlägset alla tidiga försök av Microsoft att skapa ett effektivare gränssnitt, d.v.s. Direct3D, och det var egentligen inte före version 5.2 som Direct3D började uppnå en allmänt godtagbar prestandanivå. Glides främsta styrka låg just i att det kommunicerade med 3Dfx-korten mer eller mindre direkt, eftersom det var anpassat för dessa kort. 10 10 http://en.wikipedia.org/wiki/Glide_API
  • 9. Optima Lärdomsprov 9 (21) Databehandling Marko Vuorsalo D06 16.4.2015 3.2 Ati & NVidia I dagens läge är de två överlägset populäraste grafikkortstillverkarna Ati och NVidia, med sina Radeon- respektive GeForce-serier. Då 3Dfx gick i konkurs år 2002, köptes delar av företaget upp av NVidia, och år 2006 köptes Ati upp av processortillverkaren AMD. Nedan följer en tabell över olika grafikkort från respektive företag, med DirectX- version och ungefärliga lanseringsårtal. DirectX-version11 Ati NVidia Årtal 5 Rage 3D, Rage II Riva 128, Riva 128ZX 1995-1998 6 Rage Pro, Rage 128, Rage XL/XC, Rage Fury MAXX Riva TNT, Vanta, Vanta LT, Riva TNT2, Riva TNT2 M64, Riva TNT2 Pro, Riva TNT Ultra 1997-1999 7 Radeon 32, Radeon 64, Radeon 7200, Radeon 7500 GeForce 256 SDR, 256 DDR, GeForce2- och GeForce 4MX- serierna 1999-2002 8.1 Radeon 8500, 9000-9200 (även 9250 år 2004) GeForce3- och GeForce 4Ti- serierna 2001-2003 9.0 Radeon 9500-9800-serien, Radeon X300-X600-serien, (även X1050 år 2007) GeForce FX (5xxx)-serien 2002-2004 9.0b Radeon X700-X850-serien *** 2004-2005 9.0c Radeon X1300-X1950-serien GeForce 6- och 7-serierna 2004-2007 10 HD2000, HD3000, och HD4000-serierna GeForce 8, 9, GTX200- och GTX300-serierna 2006-nutid Figur 5. *** NVidia hoppade direkt till Pixel Shader 3.0 med GeForce 6-korten, Atis kort hade inte Pixel Shader 3.0 förrän i X1000-serien. Figur 5 & 6: Atis resp. NVidias logo. Figur 6. 3.3 Ökande Pixel Shaders 11 Se Bilaga 1
  • 10. Optima Lärdomsprov 10 (21) Databehandling Marko Vuorsalo D06 16.4.2015 I början av Direct3D-grafikens historia var grafiken relativt simpel och till och med tråkig, jämfört med dagens grafik. Dagens grafik ser mycket mer levande ut, tack vare så kallade Shaders. Dom allra första Shader-enheterna, som dök up i Direct3D 8, var främst för ljussättningar vid särskilda punkter, t.ex. facklor. Med tiden utvecklades shader- användningen till den grad att Shaders kunde bland annat användas för att ändra utseendet på väggar, tak, vatten, och karaktärer. Se figurerna 7, 8, 9 och 10 för exempel. Figur 7. Pixel Shader-jämförelse från spelet Elder Scrolls III: Morrowind (2002)
  • 11. Optima Lärdomsprov 11 (21) Databehandling Marko Vuorsalo D06 16.4.2015 Figur 8. Pixel shader-jämförelse av en vy över vatten, med pixel shader till vänster, utan till höger.
  • 12. Optima Lärdomsprov 12 (21) Databehandling Marko Vuorsalo D06 16.4.2015 Figur 9. Pixel Shader 2.0 vs. 3.0, från spelet Far Cry (2004)
  • 13. Optima Lärdomsprov 13 (21) Databehandling Marko Vuorsalo D06 16.4.2015 Figur 10. Pixel Shader 3.0 vs 4.0 från spelet Call of Juarez (2007) För att kunna rendera såpass många detaljer, behövdes det med tiden ännu flera så kallade Shader Units på grafikkorten. Dessa Shader Units är särskilda enheter som sköter om bl.a. skuggsättning och belysning individuellt för varje pixel som ska behandlas av kortet. Till exempel kortet Ati Radeon 9800 Pro från 2004, hade totalt 12 shading- processorer, indelat i 8 Pixel Shaders och 4 Vertex Shaders, medan kortet Ati HD4670 från 2008 har över 800 unified shader-processorer, som är en vidareutveckling av de urspringliga Shaderenheterna. Den ursprungliga beräkningskapaciteten var begränsad till ett visst antal pixeluträkningar, i och med att det fanns flera olika typer av Shader Units, men nu, sedan uppkomsten av den så kallade Unified Shader-arkitekturen kan samtliga shading-processorer utföra tre olika typer av uträkningar; Pixel Shading, Vertex Shading och Geometry Shading, vilket balanserar uppgifterna betydligt effektivare mellan Shader-enheterna.12 12 http://en.wikipedia.org/wiki/Shader_(computer_science)
  • 14. Optima Lärdomsprov 14 (21) Databehandling Marko Vuorsalo D06 16.4.2015 3.4 Grafikminne Alla grafikkort, liksom datorer, har ett eget arbetsminne. I detta minne lagras då texturer, alltså bilder som läggs över 3D-renderade ytor. För ett exempel, se Figur 11. Figur 11. En icke-texturerad pansarvagn, ovan. Nedanför, samma pansarvagn med texturer applicerade. Observera att varje olikfärgad del i den övre bilden är en polygon. (Källa: Wikipedia) Med tiden blev ytor såsom väggar, tak, golv, och naturliga ytor alltmer detaljerade, vilket då i sin tur betydde att för att kunna lagra så stora mängder detalj i texturerna, blev deras upplösning, och konsekvent, också minnet större. De minsta texturerna var från början 64x64 pixels, vilket krävde ca. 10 MB minne, medan i nutidens spel kan texturer vara upp till 8192x8192 pixels, vilket då kan kräva över 1024 MB minne.
  • 15. Optima Lärdomsprov 15 (21) Databehandling Marko Vuorsalo D06 16.4.2015 4. Sammanfattning Sammanfattningsvis kan sägas att utvecklingen har skett med rasande takt, ända sedan mitten av 1990-talet. Utvecklingens hastighet har dessutom ökat markant hela tiden, till den grad att med dagens kraftfullaste grafikkort kan man uppnå närapå fotorealistiska resultat. Då återstår den stora frågan; hur länge tar det innan grafikkort uppnår kapacitet för exakta återgivningar av vår miljö? Vi är väldigt nära nu! Avslutningsvis har jag sökt fram några realistiska naturbilder, helt rendererade med grafikkort. Solsken över vatten (Rendereringsexempel)
  • 16. Optima Lärdomsprov 16 (21) Databehandling Marko Vuorsalo D06 16.4.2015 Bild från Bethesda Softworks’ Elder Scrolls IV: Oblivion (2006) Solsken över kusten-bild från Cryteks Crysis (2007)
  • 17. Optima Lärdomsprov 17 (21) Databehandling Marko Vuorsalo D06 16.4.2015 Kustbild från Cryteks Crysis (2007) Djungelbild från Cryteks Crysis (2007)
  • 18. Optima Lärdomsprov 18 (21) Databehandling Marko Vuorsalo D06 16.4.2015 Källförteckning: Om fotnot inte är angiven, är informationen sammanställd från diverse artiklar på internet. Bilderna är till största delen tagna från www.gamespot.com och via Google. Bilaga: Lanseringshistorik över DirectX: DirectX version Version nummer Operativsystem Lanseringsdatum DirectX 1.0 4.02.0095 30 September, 1995 DirectX 2.0 Skickades endast med ett fåtal program. 1996 DirectX 2.0a 4.03.00.1096 Windows 95 OSR2 och NT 4.0 5 Juni, 1996 DirectX 3.0 4.04.00.0068 15 September, 1996 4.04.00.0069 Uppdatering till DirectX som inkluderade Direct3D 4.04.00.0069 1996 DirectX 3.0a 4.04.00.0070 Windows NT 4.0 SP3 (och nyare) sista versionen av DirectX för Windows NT 4.0 December 1996 DirectX 3.0b 4.04.00.0070 En mindre uppdatering till DirectX 3.0 December 1996 DirectX 4.0 Lanserades ej.
  • 19. Optima Lärdomsprov 19 (21) Databehandling Marko Vuorsalo D06 16.4.2015 DirectX 5.0 4.05.00.0155 (RC55) Tillgänglig som Beta för Windows NT 5.0 som installerades på Windows NT 4.0 16 Juli, 1997 DirectX 5.2 4.05.01.1600 (RC00) DirectX 5.2 för Windows 95 5 Maj, 1998 4.05.01.1998 (RC0) Windows 98 exklusiv 25 Juni, 1998 DirectX 6.0 4.06.00.0318 (RC3) Windows CE som användes på Dreamcast 7 Augusti, 1998 DirectX 6.1 4.06.02.0436 (RC0) 3 Februari, 1999 DirectX 6.1a 4.06.03.0518 (RC0) Windows 98 SE exklusiv 5 Maj, 1999 DirectX 7.0 4.07.00.0700 (RC1) 22 September, 1999 4.07.00.0700 Windows 2000 17 Februari, 2000 DirectX 7.0a 4.07.00.0716 (RC0) 8 Mars, 2000 4.07.00.0716 (RC1) 2000 DirectX 7.1 4.07.01.3000 (RC1) Windows Me exklusiv 14 September, 2000
  • 20. Optima Lärdomsprov 20 (21) Databehandling Marko Vuorsalo D06 16.4.2015 DirectX 8.0 4.08.00.0400 (RC10) 12 November, 2000 DirectX 8.0a 4.08.00.0400 (RC14) Sista versionen för Windows 95 5 Februari, 2001 DirectX 8.1 4.08.01.0810 Windows XP, Windows Server 2003 och Xbox 25 Oktober, 2001 4.08.01.0881 (RC7) Version för äldre operativsystem 8 November, 2001 DirectX 8.1a 4.08.01.0901 (RC?) Innehöll en uppdatering till Direct3D (D3d8.dll) 2002 DirectX 8.1b 4.08.01.0901 (RC7) Uppdatering med ett fix för DirectShow på Windows 2000 (Quartz.dll) 25 Juni, 2002 DirectX 8.2 4.08.02.0134 (RC0) Samma som DirectX 8.1b, men inklusive DirectPlay 8.2 2002 DirectX 9.0 4.09.00.0900 (RC4) 19 December, 2002 DirectX 9.0a 4.09.00.0901 (RC6) 26 Mars, 2003 DirectX 9.0b 4.09.00.0902 (RC2) 13 August, 2003 DirectX 9.0c 4.09.00.0903 Service Pack 2 för Windows XP 4.09.00.0904 4 Augusti, 2004
  • 21. Optima Lärdomsprov 21 (21) Databehandling Marko Vuorsalo D06 16.4.2015 (RC0) 4.09.00.0904 Windows XP SP2, Windows Server 2003 SP1, Windows Server 2003 R2 och Xbox 360 6 Augusti, 2004 DirectX 9.0c – månatliga uppdateringar 4.09.00.0904 (RC0) Versionen som släpptes 9 Februari 2005 var den första 64-bits versionen. Den sista versionen med stöd för Windows 98 och Windows Me var uppdateringen från 13 December, 2006 Släppta månatligen fr.o.m. Oktober 2004 till Augusti 2007, därefter kvartalsvis; senaste version: Mars 2009 DirectX 10 6.00.6000.16386 Windows Vista exklusiv 30 November, 2006 6.00.6001.18000 Service Pack 1 for Windows Vista, Windows Server 2008 inkluderar Direct3D 10.1 4February, 2008 DirectX 11 6.01.7000.0000 Windows 7 och Vista service pack 2 ??? Våren/sommaren 2009 Källa: Wikipedia