slutarbete - grafikkort

29
Optima Lärdomsprov 1 (29) Databehandling Marko Vuorsalo D06 27.4.2022 Grafikkort

Upload: marko-vuorsalo

Post on 08-Aug-2015

18 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Slutarbete - Grafikkort

Optima Lärdomsprov 1 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

Grafikkort

Marko Vuorsalo

Lärdomsprov 2009

Page 2: Slutarbete - Grafikkort

Optima Lärdomsprov 2 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

Grundexamen i DatabehandlingOptima

Innehållsförteckning

1 Inledning.............................................................................................................1

1.1 Syfte och målsättning.................................................................................11.2 Avgränsningar............................................................................................11.3 Metodik......................................................................................................11.4 Terminologi................................................................................................2

2 Allmänt om grafikkort......................................................................................3

2.1 Bakgrund....................................................................................................32.1 2D till 3D...................................................................................................42.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

Page 3: Slutarbete - Grafikkort

Optima Lärdomsprov 3 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

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.

Page 4: Slutarbete - Grafikkort

Optima Lärdomsprov 4 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

Page 5: Slutarbete - Grafikkort

Optima Lärdomsprov 5 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

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)

Page 6: Slutarbete - Grafikkort

Optima Lärdomsprov 6 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

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/3dsmax2 http://en.wikipedia.com/wiki/GPU3 http://www.s3graphics.com/en/company/index.jsp4 http://en.wikipedia.com/wiki/S3_Graphics

Page 7: Slutarbete - Grafikkort

Optima Lärdomsprov 7 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

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/3Dfx6 http://en.wikipedia.org/wiki/RIVA_128

Page 8: Slutarbete - Grafikkort

Optima Lärdomsprov 8 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

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/Radeon8 http://en.wikipedia.org/wiki/Direct3D9 http://en.wikipedia.org/wiki/OpenGL

Page 9: Slutarbete - Grafikkort

Optima Lärdomsprov 9 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

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

Page 10: Slutarbete - Grafikkort

Optima Lärdomsprov 10 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

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.

11 Se Bilaga 1

Page 11: Slutarbete - Grafikkort

Optima Lärdomsprov 11 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

3.3 Ökande Pixel Shaders

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)

Page 12: Slutarbete - Grafikkort

Optima Lärdomsprov 12 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

Figur 8. Pixel shader-jämförelse av en vy över vatten, med pixel shader till vänster, utan till höger.

Page 13: Slutarbete - Grafikkort

Optima Lärdomsprov 13 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

Figur 9. Pixel Shader 2.0 vs. 3.0, från spelet Far Cry (2004)

Page 14: Slutarbete - Grafikkort

Optima Lärdomsprov 14 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

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)

Page 15: Slutarbete - Grafikkort

Optima Lärdomsprov 15 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

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.

Page 16: Slutarbete - Grafikkort

Optima Lärdomsprov 16 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

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)

Page 17: Slutarbete - Grafikkort

Optima Lärdomsprov 17 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

Bild från Bethesda Softworks’ Elder Scrolls IV: Oblivion (2006)

Solsken över kusten-bild från Cryteks Crysis (2007)

Page 18: Slutarbete - Grafikkort

Optima Lärdomsprov 18 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

Kustbild från Cryteks Crysis (2007)

Djungelbild från Cryteks Crysis (2007)

Page 19: Slutarbete - Grafikkort

Optima Lärdomsprov 19 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

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 versionVersion 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.0069Uppdatering till DirectX som inkluderade Direct3D 4.04.00.0069

1996

DirectX 3.0a 4.04.00.0070Windows 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.

Page 20: Slutarbete - Grafikkort

Optima Lärdomsprov 20 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

DirectX 5.04.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.04.06.00.0318 (RC3)

Windows CE som användes på Dreamcast

7 Augusti, 1998

DirectX 6.14.06.02.0436 (RC0)

3 Februari, 1999

DirectX 6.1a4.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.14.07.01.3000 (RC1)

Windows Me exklusiv 14 September, 2000

Page 21: Slutarbete - Grafikkort

Optima Lärdomsprov 21 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

DirectX 8.04.08.00.0400 (RC10)

12 November, 2000

DirectX 8.0a4.08.00.0400 (RC14)

Sista versionen för Windows 95 5 Februari, 2001

DirectX 8.1

4.08.01.0810Windows XP, Windows Server 2003 och Xbox

25 Oktober, 2001

4.08.01.0881 (RC7)

Version för äldre operativsystem 8 November, 2001

DirectX 8.1a4.08.01.0901 (RC?)

Innehöll en uppdatering till Direct3D (D3d8.dll)

2002

DirectX 8.1b4.08.01.0901 (RC7)

Uppdatering med ett fix för DirectShow på Windows 2000 (Quartz.dll)

25 Juni, 2002

DirectX 8.24.08.02.0134 (RC0)

Samma som DirectX 8.1b, men inklusive DirectPlay 8.2

2002

DirectX 9.04.09.00.0900 (RC4)

19 December, 2002

DirectX 9.0a4.09.00.0901 (RC6)

26 Mars, 2003

DirectX 9.0b4.09.00.0902 (RC2)

13 August, 2003

DirectX 9.0c 4.09.00.0903 Service Pack 2 för Windows XP

Page 22: Slutarbete - Grafikkort

Optima Lärdomsprov 22 (22)Databehandling

Marko Vuorsalo D06 15.4.2023

4.09.00.0904 (RC0)

4 Augusti, 2004

4.09.00.0904Windows 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 Wi ndows Vista exklusiv 30 November, 2006

6.00.6001.18000Service Pack 1 for Windows Vista, Win-dows Server 2008inkluderar 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