Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen...

26
1 Moderne Grafikkarten und 3D-Grafik (Vortrag und Ausarbeitung von Kay Ackermann) 22.12.2005, 12:46 Uhr

Transcript of Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen...

Page 1: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

1

Moderne Grafikkarten und 3D-Grafik (Vortrag und Ausarbeitung von Kay Ackermann)

22.12.2005, 12:46 Uhr

Page 2: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

2

Inhaltsverzeichnis: Seite 1. 3D-Grafik und Grundlagen 3 1.1 Der Aufbau einer 3D-Szene 3 1.2 Szenenobjekte 3 1.3 Grundelemente für die Darstellung einer Szene 4 2. 3D-Hardware 6 2.1 Die Geschichte der 3D-Grafikkarten von 1996-2005 6 2.2 Technische Details und Statistiken im Überblick 6 2.3 Von der Software auf den Monitor 8 (Der 3D-Datenfluss bei der Echtzeitdarstellung) 2.4 Probleme und Lösungen bei der Bilddarstellung 9 von 3D-Inhalten 3. Aktuelle Trends und Techniken 11 3.1 Displacement Mapping 12 3.2 Vertex Mapping 12 3.3 Normal Mapping 13 3.4 HDR 13 4. Schlusswort 14 5. Informationsquellen 14 6. Anhang 15

Page 3: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

3

1. 3D-Grafik und Grundlagen 1.1 Der Aufbau einer 3D-Szene Für den Umgang mit 3D-Inhalten, Hardware und Techniken ist es hilfreich etwas Grundwissen zu besitzen, das mit den nächsten Zeilen vermittelt werden soll. Eine 3D-Szene kann man mit einem Set bei Dreharbeiten vergleichen. Man braucht eine Kamera, oftmals als POV (Point Of View bezeichnet), die bestimmte Eigenschaften wie z.B. FOV (Field Of View) besitzt, und wenn möglich auch ein Objekt oder eine ganze Szenerie, die betrachtet werden soll. Hier im Bild stellt die Kamera (links am Rand) den späteren POV und die von ihr ausgehende Pyramide das entsprechende FOV dar. 1.2 Szenenobjekte Für die Erstellung und Präsentation eines Objektes gibt es softwaretechnisch verschiedene Lösungen, wie zum Beispiel die Darstellung über geschlossene Kurven (Nurbs) welche besonders gerne für die Modellierung von Figuren für computergenerierte Videos verwendet wird. Allerdings ist diese Technik ziemlich rechenaufwendig und wird daher nicht direkt von der Hardware unterstützt. 3D-Grafikkarten verwenden deswegen für die Darstellung „Polygone“ (Vielecke). Hierbei wird meist ein Objekt als „Mesh“ (Netz) bezeichnet. Ein Objekt entsteht beispielsweise, indem man Eckpunkte definiert und diese mit Linien verbindet. Ein Eckpunkt („Vertex“, im Bild rechts unten als blaue Kugeln zu sehen) alleine kann allerdings nicht dargestellt werden. In der Mathematik wird eine Fläche entweder durch 2 Vektoren und einen Aufpunkt, oder mindestens 3 Punkte im Raum beschrieben. Das bedeutet, 3 dieser Punkte (Vertize) bilden zusammen eine darstellbare Fläche im Raum die zusätzlich über ihre Normale noch eine Orientierung besitzt. Betrachtet man einen Würfel, so braucht man für dessen Darstellung 8 Eckpunkte („Vertize“). Jede Fläche besteht somit aus 4 Eckpunkten, wobei sich eine Fläche ihre Eckpunkte mit den anderen teilen kann, d.h. dass ein Vertex zu mehreren (theoretisch beliebig vielen) Flächen gehören kann. Für die Hardware ist dies insofern wichtig ist, als dass, abhängig von der Situation, teils über 50% der für eine Fläche benötigten, geometrischen Berechnungen, gespart werden können. Auch wenn Objekte aus Polygonen (Vielecken) bestehen, so werden sie für die spätere Berechnung in lauter kleinere Dreiecke unterteilt. Der Hauptgrund hierfür ist, dass 4 oder mehr Punkte, die eine Fläche bilden sollen, nicht unbedingt in derselben Ebene liegen müssen. Tritt dieser Fall ein, so wäre der Aufwand für die Berechnung des auf die

entsprechende Fläche fallenden Lichts deutlich komplexer. Die Unterteilung in Triangles (Dreiecke) heißt allerdings auch, dass runde Objekte wie Torbögen oder Kugeln nicht exakt darzustellen sind. Diese müssen über eine extrem hohe Anzahl von Vielecken simuliert werden. Ein Mesh in einem Programm wie 3D-Studio Max oder Maya wird normalerweise über Drei- und Vierecke erzeugt Im Bild links sieht man die verstärkte Unterteilung an „runden“ Stellen des Objektes.

Page 4: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

4

1.3 Grundelemente für die Darstellung einer Szene Will man nun diese nur im Modell vorhandene Szene in ein Bild umwandeln, so werden als erstes die Geometriedaten gesammelt und berechnet; danach wird Pixel für Pixel das eigentliche Bild aufgebaut. In der Fachsprache bezeichnet man den ersten Vorgang als „Scene Set-Up“ („Transform and Lightning“ oder „Vertex Set-Up“ bei Grafikkarten), den zweiten als „Rendering“ (Wiedergabe). Das „Rendering“ ist der rechen- und speicherintensivste Vorgang bei der Erstellung des Bildes. Es gibt inzwischen eine Reihe komplizierter Verfahren den Rechenaufwand zu verringern, was vor allem Echtzeitberechnungen bei Spielen zu Gute kommt, wohl aber dem auch zu verdanken ist. Im späteren Verlauf werden diese Techniken näher beschrieben. Objekte und eine Kamera alleine ergeben allerdings noch kein lebendiges Bild. Man erhält lediglich eine relativ monotone Darstellung einfarbiger Objekte. Um etwas mehr Leben in die Szenerie zu bekommen, benötigt man noch Texturen, Lichter, die die Szene beleuchten, und entsprechende Schatten, die von diesen Lichtern verursacht werden. Objekte werden im Allgemeinen mit zwei Grundtexturen (oder Grundeigenschaften) versehen: zum Ersten gibt es die „Diffuse Texture / Color“ welche die Grundfarbe oder eigentliche Textur des Objektes bestimmt, und zweitens die „Specular Color / Lightning“, die den Grad der Lichtspiegelung oder auch das sogenannte „Highlight“ (Glanzpunkt) des Objektes angibt. „Specular Color / Lightning“ hat zusätzliche Attribute, die die Schärfe und Stärke der Reflektion bestimmen. Das linke der beiden nachfolgenden Bilder besitzt keinerlei gerichtete Lichtquellen. Das rechte Bild hingegen besitzt einen Richtscheinwerfer, der die Teekanne beleuchtet. Dabei ist die helle, fast weiße Stelle auf der Teekanne das Resultat des „Specular Lightning“, der Reflektion des gerichteten Lichtes durch das Objekt zur Kamera hin.

Auch wenn das rechte Bild schon besser aussieht, so wirkt es noch extrem künstlich. In der Realität gibt es nur wenige einfarbige und glatte Flächen. Den Objekten fehlt es noch an Textur. Das Auftragen oder Einarbeiten von ein oder mehreren Texturen wird als „Mapping“ bezeichnet. Neben der normalen Grundtextur gibt es hierbei noch eine Reihe anderer spezieller Texturen und Techniken, unter anderem „Bump & Normal Mapping“, auf die im späteren Verlauf näher eingegangen wird. Beim (Texture) Mapping werden Punkte des Objektes im 3D-Raum mit Punkten einer 2D-Textur verknüpft, die meist als Bild vorliegt.

Szene ohne Texturen, keine gerichtete Beleuchtung, kein Glanzeffekt

Szene ohne Texturen, dafür mit gerichteter Beleuchtung und Glanzeffekt.

Page 5: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

5

Das Bild rechts sieht im Vergleich zu den vorhergehenden Bildern schon deutlich lebhafter aus. Trotzdem wirkt es immer noch ein wenig künstlich da die Oberflächen der Objekte extrem glatt aussehen. Diese benötigen für einen realistischeren Eindruck Tiefe, und um dieses zu bewerkstelligen verwendet man „Bump Maps“, die über ein Objekt gelegt werden und den Vektor der Lichtreflektionen verändern. Wie das folgende Bild zeigt wirken dadurch die Oberflächen der Objekte deutlich griffiger und verleihen dem Bild deutlich mehr Flair. „Bump Maps“ verändern lediglich die Richtung der Oberflächennormale für die Lichtreflektion des entsprechenden Bereiches, die Komplexität der Geometrie des Objektes bleibt gleich. Dass nur der Vektor der Lichtreflektion verändert wird heißt aber wiederum, dass „Bump Maps“ auf entsprechend gerichtetes Licht angewiesen sind, um ihre Wirkung zu erzielen. Ein Problem der dreidimensionalen Darstellung ist die tiefenunabhängige Schärfe. Das Bild ist sowohl im Hintergrund als auch im Vordergrund scharf, obwohl aus der Physik allgemein bekannt ist, dass jede Art von Linsensystemen nur um den Focusbereich herum scharf erscheint. Hält man sich beispielsweise einen Finger in kurzem Abstand vor die Augen und konzentriert sich auf ihn, so wird der Hintergrund unscharf. Konzentriert man sich auf den Hintergrund, so wird der Finger im Vordergrund unscharf. Dieses Manko in der Darstellung beseitigt die Technik „Depth of Field“ (Tiefenunschärfe). Sie sorgt dafür, dass das Bild nur im Fokusbereich scharf erscheint und andere Bildelemente mit zunehmendem Abstand zu diesem immer unschärfer werden.

Tiefenunschärfe ist relativ neu und wird in kommenden Spielen wohl mehr und mehr verwendet werden, um dem Spieler während Schnittsequenzen noch mehr das Gefühl zu verleihen, „mitten drin statt nur dabei“ zu sein. Das Bild im Anhang (6.1.) zeigt eine Echtzeitimplementation dieses Effektes.

Ohne „Bump Mapping“

Mit „Bump Mapping“

Page 6: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

6

2. 3D-Hardware 2.1 Die Geschichte der 3D-Grafikkarten von 1996-2005 Die Entwicklung von 3D-Hardwarebeschleunigern began in etwa 1996. Die erste, für damalige Verhältnisse schnelle Karte, war die 3Dfx Interactive Voodoo1. Nach ihrer Einführung brachte Nvidia den Riva128 Chip auf den Markt. Durch diesen Konkurrenzkampf folgen jährlich neue Entwicklungen und mit der Zeit wurde das Marktsegment der 3D-Hardwarebeschleuniger zu einem, für heute, sehr wichtigen Bereich der Computerindustrie. Die meisten der Hersteller für 3D-Beschleuniger konnten sich nicht gegen die heutigen Marktführer Nvidia und ATI durchsetzen. Boten die ersten 3D-Grafikkarten „nur“ Techniken wie die bilineare Filterung, „MIP Mapping“ und „Alpha Blending“ (Transparenz), so ist die Liste der Features aktueller Karten zu lang um sie hier aufzuführen. Im späteren Verlauf dieses Dokuments werden allerdings einige der neuesten und Imposantesten Techniken noch genauer beschrieben. Im Anhang (6.2) befindet sich eine Tabelle die die wichtigsten Technischen Spezifikationen der Grafikkarten zwischen 1996 und 2005 beinhaltet. Die aktuellste und schnellste Karte ist zur Zeit, Ende des Jahres 2005, die Nvidia GeForce 7800 GTX 512 (G70). Sie verarbeitet 24 Pixel parallel, während ATIs aktuellstes Modell, die X1800XT, nur 16 Pixel in einem Takt verarbeiten kann. Die GeForce 7800 GTX 512 besitzt in etwa 300 Millionen Transistoren, während die ATI X1800XT „nur“ 160 Millionen besitzt, dafür aber etwas höher getaktet wird. Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen Transistoren, ist aber im Grafikbereich bei weitem nicht so schnell wie eine Grafikkarte. Diese erreichen in ihrem Anwendungsbereich eine Leistung von etwa 1-2 Teraflop, während ein aktueller Prozessor mit zwei Kernen gerade mal auf etwa 26 Gigaflop im Fließkommabereich kommt. Inzwischen gibt es einige Ansätze, die Rechenleistung der Grafikkarten für Berechnungen zu verwenden, die bisher vom Hauptprozessor erledigt wurden. Im Quellenverzeichnis am Ende dieses Dokumentes befindet sich ein Link zu einer Meldung des Heise-Verlags, in der von einer Softwarefirma berichtet wird, die den Pixel Shader in modernen Grafikkarten dazu verwenden will, aufwendige Soundeffekte in Echtzeit zu berechnen. 2.2 Technische Details und Statistiken im Überblick Vergleicht man die Speicher-bandbreite und Füllrate, welche ausschlaggebend für die Geschwindigkeit der Grafikkarte sind, so sieht man, dass sich diese von einer zur nächsten Generation nahezu verdoppeln. Dies entspricht übertragen ungefähr einer Leistungsverdoppelung pro Jahr. In der Grafik gut zu erkennen ist Nvidias Speicherproblem der GeForce 5800 Serie.

0

2000

4000

6000

8000

10000

12000

14000

Nvi

dia

Riv

a 12

8

Nvi

dia

Riv

a TN

T

Nvi

dia

Riv

a TN

T2

Nvi

dia

GeF

orce

256

Nvi

dia

Gef

orce

2G

TS

Nvi

dia

GeF

orce

3

Nvi

dia

GeF

orce

4

Gef

orce

FX

5800

Gef

orce

FX

5900

(Ultr

a)

Gef

orce

680

0(U

ltra)

Gef

orce

780

0G

TX 5

12

MTe

xels

/s

0

10

20

30

40

50

60

GB

/s

Füllrate

Speicherbandbreite

Page 7: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

7

Wie schon bei der GeForce 5800 angesprochen, ist die Wärmeentwicklung der Grafikchips und deren damit nötige Kühlung eines der größten Probleme aktueller Karten. Meist wird heute versucht, die warme Abluft direkt nach außen abzugeben, um das Aufheizen des Rechnerinneren zu verhindern. Eine Umsetzung dieser Lösung ist am Beispiel der GeForce 7800 GTX 512 (siehe rechts) gut zu erkennen. Die Leistungsaufnahme eines Chips nimmt etwa proportional zu seiner Komplexität und Takt-frequenz zu. Um diese zu verringern, versucht man, die Strukturgröße des Kerns und damit auch seine Betriebs-spannung immer weiter zu verringern. Allerdings stieg die Leistungsaufnahme der Grafikkarten der letzten Jahre extrem an. Die nachfolgende Grafik zeigt die Leistungsaufnahme der Grafikkartengeneration des vergangenen Jahres. Leider finden sich bisher keine Messungen der aktuellsten Generation, es wird aber behauptet, dass die diesjährige Generation nicht mehr Leistung verbraucht, als die des Vorjahres. Ähnlich wie es AMD im Prozessorbereich geschafft hat, den Verbrauch seiner Prozessoren, trotz Leistungssteigerung, zu reduzieren, scheint sich dieser Trend nun auch auf dem Grafikkartenmarkt breit zu machen. Technisch gesehen wird es kaum möglich sein, eine noch höhere Leistungsaufnahme der Grafikkarten vernünftig zu kühlen, da dafür der Bereich, auf dem diese Leistung abgegeben wird, zu klein ist. Deswegen versuchen Nvidia und ATI die Leistung der Grafikkarten durch die Kombination mehrerer Karten und Chips zu erhöhen. So hat man mit der Einführung der GeForce 6800 die Wiederauferstehung der 3Dfx SLI-Technik erleben dürfen, welche inzwischen in einer ähnlichen Form unter dem Namen „Crossfire“ bei ATI Anwendung findet. Es wird vermutet, dass die nächste Kartengeneration von Nvidia es erlaubt, 4 GPUs zu kombinieren, indem auf einer Karte jeweils zwei Chips verbaut und jeweils zwei solcher Karten über SLI verbindet. Angesichts der aktuellen Leistung der Grafikkarten, gerade im SLI-Betrieb, kann man in etwa abschätzen, was 4 solcher Chips zusammen gebündelt an Leistung liefern könnten. Allerdings hat diese Leistung auch ihren Preis: während die 3D-Grafikkarten 1997-1998 noch etwa bei 150-220€ für die Spitzenmodelle lagen, kosten aktuelle Modelle wie die GeForce 7800 GTX 512 alleine schon 650€, was deutlich mehr ist, als jede Spielekonsole, die momentan auf dem Markt ist. Angesichts dieser Tatsachen stellt sich die Frage, ob diese Preise wirklich noch gerechtfertig sind und wie die Zukunft für den PC als Spieleplattform aussehen wird.

0,00

50,00

100,00

150,00

200,00

250,00

300,00

350,00

400,00

450,00

500,00

550,00

600,00

Riv

a 12

8

Riv

a TN

T

Riv

a TN

T2

GeF

orce

256

Gef

orce

2 G

TS

GeF

orce

3

GeF

orce

4

Gef

orce

FX

5800

Gef

orce

FX

5900

Gef

orce

680

0

(Ultr

a)

Gef

orce

780

0

GTX

512

Transistoren (in Millionen)Fertigungstechnik (in nm)Taktfrequenz (in MHz)

Page 8: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

8

2.3 Von der Software auf den Monitor (Der 3D-Datenfluss bei der Echtzeitdarstellung) In diesem Abschnitt wird etwas näher auf den Ablauf bei der Darstellung von 3D-Echtzeitgrafiken eingegangen. Hierbei soll gezeigt werden, wie aus einer Szene, die in einem Spiel oder einer Anwendung vorliegt, das Bild auf dem Monitor entsteht und welche Probleme es in den einzelnen Teilschritten gibt. Bis das Bild auf dem Monitor zu sehen ist, durchläuft es mehrere Phasen. Die Erste befindet sich in der reinen Software- und CPU-Ebene. Bei Spielen ist dies die sogenannte „Engine“ des jeweiligen Spiels. Diese ist für künstliche Intelligenz, Spielerinteraktion, Physik und Daten- und Objektverwaltung zuständig. Sie platziert Objekte, Lichter und mögliche Kameras in der Szene. Anschließend legt die Engine fest, welchen Sichtbereich (FOV) die auszugebende Ansicht haben soll. Weiterhin berechnet sie, welche Objekte für den aktuell darzustellenden Zeitpunkt in der Szene überhaupt sichtbar sind. Dies ist extrem wichtig und oftmals auch die Schwerste einer solchen Engine. Ist hierbei der Rechenaufwand zu hoch, so bleibt zu wenig Prozessorrechenleistung für die restlichen Elemente der Engine übrig. Ist der Aufwand zu niedrig oder der Programmcode nicht optimal, so kann es zu unschönen Bildfehlern kommen oder die Grafikkarte muss Objekte berechnen, die aber für den Betrachter hinterher nicht sichtbar sind, was unnötig Rechenzeit verbrauchen würde. Nachdem die Szene erstellt wurde, wird ihr aktueller Zustand an die Grafikkarte geschickt. Das bedeutet, alle Objektdaten, Texturen, Lichtdaten, „Vertex“- und „Pixelshader Funktionen“, die ausgeführt werden sollen, müssen der Karte übergeben werden. Die nachfolgende Grafik zeigt was dort mit diesen Daten passiert und wie diese von der „3D-Pipeline“ einer Aktuellen Grafikkarte verarbeitet werden. Die „3D-Pipeline“ (im deutschen am ehesten „Leitung oder Anschlusskanal“ genannt), ist eigentlich eine Ansammlung vieler paralleler „Pipelines“, die in der Lage sind, unabhängig voneinander die Geometrie und Texturdaten gleichzeitig zu verarbeiten. Heute werden, wie zum Beispiel bei der GeForce 7800 GTX 512, bis zu 24 solcher „Pipelines“ verbaut. Einer Schätzung zufolge soll die nächste Generation 32 bis 48 „Pipelines“ besitzen. Der Arbeitsablauf (siehe Grafik im Anhang 6.3) in einer „Pipeline“ sieht in etwa wie folgt aus: Die Geometriedaten der Szene werden vom Vertex Shader verarbeitet. Dieser berechnet für jeden Eckpunkt die evtl. nötige Translation (Verschiebung), sowie dessen Grundfarbe und Helligkeit. Für die Translationen können dabei kleine „Shader“-Programme geschrieben werden, welche dann situationsbedingt die Geometrie eines Objektes verändern. Ein Beispiel hierfür wären unterschiedliche Gesichtsausdrücke einer Figur in einem Spiel. Bevor die Vertize in Polygonen zusammengefasst den Vertex Shader verlassen, berechnet dieser noch anhand der Vertex-Daten den Farb- und Helligkeitsgradienten über je einzelnen Polygone. Dieser Vorgang nennt sich „Shading“ (Schattierung). Nach der Verarbeitung durch die Vertex Shader werden die Geometrieinformationen an die Textur- und Pixelshader-Pipeline weiter gereicht. Diese versieht die einzelnen Polygone mit Texturen. Im letzten Schritt wird dann die gesamte Szene für den Monitor ausgewertet. Dabei wird für jeden später auf dem Monitor sichtbaren Pixel der entsprechende Farb- und Tiefenwert (Z-Wert) in den Bildspeicher geschrieben. Transparente Pixel im Vordergrund werden dabei mit den dahinter liegenden Pixeln gemischt („Alpha Blending“). Anschließend können die Pixel-Daten im Speicher nochmals mit Hilfe des „Pixelshader“ nachträglich verändert werden.

Page 9: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

9

Ist dies geschehen, so wird das Bild in den „Front Buffer“ kopiert, dessen Inhalt regelmäßig an den Monitor übertragen wird. Hierzu sei gesagt. dass es zwei Bildspeicher gibt, den sog. „Front Buffer“ und den „Back Buffer“, zwischen denen im Normalfall einfach hin und her geschaltet wird. Während das Bild aus dem „Front Buffer“ an den Monitor geschickt wird, zeichnet die Grafikkarte ohne Unterbrechung die nächsten Bilder in den „Back Buffer“, der bei jedem neuen Bild überschrieben wird. 2.4 Probleme und Lösungen bei der Bilddarstellung von 3D-Inhalten Der nun folgende Abschnitt soll einen kleinen Überblick über die Probleme der 3D-Darstellung geben. Die größten Probleme entstehen dabei bei der Darstellung der Objekttexturen und Kanten. Um eine korrekte Darstellung der Textur auf dem Objekt zu erhalten benötigt man diese in verschiedenen Detailgraden. Diese werden als „MIP Maps“ („Multum Im Parvo“ - „vieles in einem“) bezeichnet. So liegt beispielsweise eine Wandtextur in 512x512, 256x256,…,32x32 Pixel vor, und je nach Entfernung zur Kamera wird eine entsprechend aufgelöste Textur verwendet. Dies ist nötig, da es bei einer fein detaillierten Textur mit zunehmendem Abstand zur Kamera sonst zu Artefakten (Bildanomalien) kommt. Diese kommen daher, dass die Auflösung des Monitors deutlich geringer ist, als die der Textur, womit die Textur nicht mehr korrekt dargestellt werden kann. Hier gilt dasselbe Theorem von Nyquist, wie es auch im Audiobereich bei der Digitalisierung analoger Signale bekannt ist. Es besagt, dass für die korrekte Aufzeichnung eines Signals (hier: der Textur) die Aufzeichnungsfeinheit (Sample Rate) doppelt so hoch sein muss, wie das aufzuzeichnende Signal (mehr Informationen dazu findet man unter dem Stichwort „Nyquist“ auf www.wikipedia.de). Für die Bilddarstellung heißt dies also, dass Texturen nicht mehr Details besitzen sollten, als später auf dem Monitor ausgegeben werden kann. Das nachfolgende Bild zeigt, was mit einer Linienmustertextur passiert, die nur einen Detailgrad besitzt.

Man sieht sehr schön, dass mit zunehmendem Abstand zur Kamera die Textur mehr und mehr fehlerhaft dargestellt wird. Theoretisch müsste die Fläche nach hinten einen mittelhellen Grauton annehmen, allerdings wird für die Farbausgabe ohne Filterung und MIP-Mapping einfach der nächstliegende Farbwert der Textur genommen. Dreht man den Fall jetzt um, sprich, besitzt die Textur deutlich weniger Auflösung, als sie für die Darstellung bräuchte (zu vergleichen ist dies als würde man in einem Spiel sich direkt vor die Wand stellen), dann würde diese ohne eine Art von Filterung extrem grob und verblockt aussehen. Außerdem kommen bei der einfachen Vergrößerung ähnliche Präzisionsprobleme zum Tragen, wie bei der starken Verkleinerung von Texturen. Die folgenden zwei Bilder zeigen eine Teekanne mit einem Karomuster, allerdings wird im linken Bild die Textur nicht gefiltert, während sie im rechten durch den Texturfilter geglättet wird.

Page 10: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

10

Die wohl bekannteste Filterung ist die „bilineare“ Filterung, bei der für den zu zeichnenden Bildpunkt die 4 nächstliegenden Pixelmittelpunkte und deren Farben verwendet werden. Die endgültige Farbe des entsprechenden Bildpunktes entsteht dabei aus dem gewichteten Mittelwert dieser vier umliegenden Punkte. Die Gewichtung erfolgt dabei über ihren jeweiligen Abstand zu der Position des Bildpunktes auf dem Objekt. Dies sorgt für weiche Übergänge beim Vergrößern der Textur und beugt, bis zu einem gewissen Grad, der Entstehung von Anomalien bei der Verkleinerung vor. Der Nachteil hierbei ist, dass die Texturen alle etwas unschärfer und verwaschener wirken. Verwendet man „MIP Maps“, so kann man auf Flächen, die schräg in den Hintergrund laufen, wie z.B. dem Boden oder den Wänden eines Raumes, Grenzen erkennen, bei denen die Umstellung von einer detaillierten zu einer etwas weniger detaillierten Textur erfolgt. Um diesen Effekt zu verringern wurde die trilineare Filterung entwickelt. Dabei wird zur bilinearen Filterung noch die nächst größere und kleinere Texturvariante (MIP Map) mit einbezogen. Zwar verschwinden durch diese Art der Filterung die unschönen Detailgrenzen, allerdings werden entfernte Texturen zu stark verwaschen und das Bild verliert deutlich an Schärfe. Außerdem kann es trotzdem noch zu Anomalien in weit entfernten Texturen kommen. Die anisotrope Filterung, die etwa mit dem Erscheinen der Nvidia TNT verfügbar war, beseitigt genau dieses letzte Problem. Diese hat dem Namen nach „nicht in alle Richtungen hin die gleichen“ Eigenschaften. Sie beseitigt die Schwächen von bi- und trilinearer Filterung, die auftreten, wenn der Betrachter nicht annähernd senkrecht auf das Polygon schaut, was sich aus Gründen der Perspektive in einer 3D-Szene nicht vermeiden lässt. Hierbei werden für die Filterung deutlich mehr Texturdetailvarriationen (Textursamples, kurz „taps“) verwendet, als bei der bi- oder trilinearen Filterung (maximal bis 128 pro Pixel). Das folgende Bild demonstriert die Unterschiede der verschiedenen Filtermethoden und deren Kombinationen. Das letzte Problem, das hier erwähnt werden soll, ist die Stufenbildung an schräg verlaufenden Kanten von Objekten. Diese Stufen entstehen dadurch, dass je ein Pixel des ausgegebenen Bildes zu genau einem Objekt der Szene gehört. An der Grenze eines schräg liegenden Objekts kommt es daher zu Bereichen, in denen die Zugehörigkeit eines Pixels zu einem Objekt nur noch auf Rundungsfehler zurückzuführen ist. Für die Lösung dieses Problems wurden im laufe der Jahre diverse Techniken entwickelt. Das Grundprinzip dabei ist, das Bild in einer höheren Auflösung zu berechnen („Rendern“) als es später gebraucht wird. So versteht man zum Beispiel unter einem 2-fach Anti-Aliasing, dass ein 640x480 Pixel großes Bild mit 1280x960 Pixel berechnet und anschließend auf die gewünschte Anzahl Pixel heruntergerechnet wird. Ein Bildpunkt des 640x480 Pixel großen Ausgabebildes besteht somit aus dem gewichteten Mittelwert der vier Pixel des Bildes mit der Auflösung 1280x960. Dort, wo früher noch eine harte Stufe zu sehen war, entsteht durch diese Technik eine Vielzahl von Farbabstufungen an der eigentlichen Kante, wodurch sie nicht mehr so stark heraus sticht. Heutige Grafikkarten beherrschen bis zu 16-fach Anti-Aliasing, was für ein schönes weiches

Page 11: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

11

und an Kanten stufenfreies Bild sorgt. Ein weiterer Nebeneffekt dabei ist, dass dünne Linien, die unter Umständen nicht mehr Korrekt auf dem Bildschirm dargestellt werden würden, durch das Zeichnen in der höheren Auflösung noch erfasst werden und ihre Details in das daraus resultierende herunter gerechnete Bild einfließen. Es existieren diverse Variationen des Anti-Aliasing, die sich auch bezüglich ihrer Resultate in der Bildqualität unterscheiden. Die bekanntesten Implementationen sind:

Edge Anti-Aliasing (3Dfx Voodoo2) FSAA (Full Screen Anti-Aliasing, ab Nvidia TNT, ab ATI Radeon) AAA (Adaptive Anti-Aliasing, GeForce 3-5, ATI X800 – X1800) TAAA (Transparency Adaptive Anti-Aliasing, GeForce 5-7)

Das Edge-, oder auch kantenbasierte Anti-Aliasing, wurde erstmals von der Voodoo2 verwendet und kam etwas später durch Nvidia als „Adaptive Anti-Aliasing“ auf den Markt. Es wird dabei versucht, nur Kanten und nicht Texturen zu glätten, um die Texturen nicht unschärfer zu machen, als sie bisher schon sind (siehe bi- oder trilineare Filterung). Das „Full Screen Anti-Aliasing“ hingegen berechnet das gesamte Bild in zwei-, vier-, acht- oder heute sogar sechzehnfacher Größe, um es später, wie bereits beschrieben, auf die eigentliche Ausgabegröße herunterzurechnen. In der Softwaretechnik wird dieses Verfahren oftmals auch als „Super Sampling“ bezeichnet und hat den Nachteil, dass die allgemeine Bildschärfe abnimmt und Details in Texturen verloren gehen. „Transparency Adaptive Anti-Aliasing“, kurz TAAA, ist ein Zusatz für das „Adative Anti-Aliasing“. Da beim AAA bekanntlich nur Objektkanten geglättet werden, nicht aber Texturen, gibt es Fälle, in denen auch Texturen geglättet werden müssen. Ein einfaches Beispiel wäre hierfür ein Maschendrahtzaun. Da die Darstellung jedes einzelnen Drahtes als geometrisches Objekt zu rechenintensiv wäre, verwendet man für solche Fälle teiltransparente Texturen, die über eine Fläche gelegt werden. Allerdings stellt das Gitter somit keine geometrische Kante dar, sondern ist eben lediglich eine transparente Textur und wird somit nicht vom „Adaptive Anti-Aliasing“ behandelt, wodurch in diesen Bereichen es zu den bekannten Treppen oder Stufenbildungen kommt. TAAA greift genau hier ein und glättet auch Kanten, die durch Texturtransparenz verursacht werden. Allerdings scheinen aktuelle Nvidia Treiber noch Probleme mit dieser Technik zu haben, so dass unter Umständen, anstatt der unschönen Kanten, die gesamte Textur entfernt wird. Es ist aber davon auszugehen, dass diese Probleme mit den kommenden Treibern behoben werden.

3. Aktuelle Trends und Techniken Da die Software meist etwas bei der Implementierung der neusten Techniken hinterher hängt, oder diese nicht umsetzen kann, da ein entsprechender Effekt zwar theoretisch möglich wäre, die Performance der Karte aber nicht ausreicht, ist oftmals nur alle 2 Jahre ein größerer Sprung in der Grafik von Spielen zu beobachten. Dies liegt teils auch daran, dass viele Spiele auf der gleichen „Engine“ basieren, die von einem Hersteller regelmäßig weiter entwickelt und vermarktet wird. Als Beispiel seien hier die Unreal oder Quake Engine genannt. Mit dem Anfang des nächsten Jahres wird sich wieder solch ein Sprung stattfinden. Zu erwarten sind realistischere Schattenwürfe, Lichtanimationen, Materialien welche Licht beugen, brechen oder ausstrahlen, sowie echte Wolken, die nicht nur durch halbtransparente Texturwände simuliert werden, sondern einen dreidimensionalen Körper besitzen. Die interessantesten Techniken für die nächst Zeit dürften „Displacement Mapping“, „Vertex Mapping“, „Normal Mapping“ und „HDR“ sein. Ihre Funktionsweise und Anwendungsbereiche in neuen Spielen, werden in den kommenden Abschnitten etwas näher erläutert.

Page 12: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

12

3.1 Displacement Mapping Das „Displacement Mapping“ ist eine Technik die verwendet wird, auf einfache Art und Weise das Geometriedetail der Szene zu erhöhen. Hierbei wird vom Designer eine Höhentextur für ein Objekt erstellt, welche später verwendet wird um die Vertize eines Objektes oder einer Fläche entlang ihres Normalenvektors zu versetzen. Bisher musste dabei die entsprechende Fläche eines Objektes in viele kleine Flächen unterteilt werden, da sonst nicht genug Vertize für die korrekte Darstellung vorhanden waren. Die kommende Unreal 3 „Engine“ ist in der Lage, Flächen nur dort zu unterteilen, wo auch eine Verschiebung der Vertize stattfinden soll. Dies kommt der Geschwindigkeit zu Gute. Die Technik selbst, eignet sich extrem, das Geometriedetail der Szene zu erhöhen, ohne viel Zeit in langwieriges modellieren von Objekten zu stecken. Statt jeden Ziegel einer Mauer einzeln in die Szene zu modellieren, wird einfach eine ebene Fläche mit einer „Displacement Map“ versehen, welche sich relativ leicht aus der sowieso für die Wand nötigen Textur erstellen lässt. Der Nachteil des „Displacement Mapping“ ist allerdings, dass es für die „Engine“ des Spieles schwer ist, für Objekte, die von diesem Verfahren Gebrauch machen, Kollisionstests durchzuführen, da so entstandene Auswölbungen an dem Objekt erst von der Grafikkarte berechnet werden. 3.2 Vertex Mapping Das „Vertex Mapping“ ist eine weitere Möglichkeit die Geometrie der Szene zu verändern. Dies findet, wie beim „Displacement Mapping“, schon in der „Vertex Shader“ Einheit der Grafikkarte statt. Das Verfahren ist dabei Analog zu dem des „Displacement Mapping“, erlaubt dafür aber die Anwendung von animierten Texturen. Anwendungsbeispiele für diese Technik finden sich z.B. in der Animation und Darstellung von Wasseroberflächen. Die folgenden zwei Bilder stammen aus dem Spiel „Pacific Fighters“ und dienen als Beispiel für „Displacement“ und „Vertex Mapping“.

ohne Vertex Mapping mit Vertex Mapping

Page 13: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

13

3.3 Normal Mapping Mit die interessanteste Technik, die in den kommenden Spielen Anwendung findet, ist das „Normal Mapping“. Versieht man ein Objekt mit einer solchen „Normal Map“, verändert sich die Richtung des von einem Objekt reflektierten Lichts. Durch die draus entstehenden Schattierungen gewinnt das Objekt, ähnlich wie beim „Bump Mapping“, an Tiefendetails. Für die Erstellung einer “Normal Map“ werden 2 Versionen des Objektes erstellt (siehe Anhang 6.4). Eine mit sehr vielen und eine weitere mit vergleichsweise wenigen Geometriedetails. Durch die Subtraktion der beiden Modelle entsteht dabei eine Textur mit der Höhendifferenz der beiden Objekte, die als „Normal Map“ verwendet werden kann. Für Spiele bedeutet diese Technik, dass es möglich ist Objekte zu erstellen, die extrem detailliert aussehen, in Wirklichkeit allerdings nur aus wenigen Polygonen bestehen. Im Anhang befinden sich einige Bilder aus der Unreal 3 „Engine“ welche ausgiebig gebrauch von dieser Technik macht. 3.4 HDR Eine weitere, leistungsfähige Technik, die Bildqualität zu verbessern, ist „High Dynamic Range“, kurz „HDR“. Hierbei versucht man, das grundsätzliche Darstellungsproblem bezüglich des Farb- und Helligkeitsspektrums von Monitoren zu korrigieren. Der Hintergrund liegt dabei in den begrenzten Fähigkeiten der Monitore, Kontraste darzustellen. Sie sind in ihren Eigenschaften der Bildreproduktion zu beschränkt, um eine wirklich realitätsgetreue Darstellung zu erlauben. Für einen Monitor ist es zum Beispiel nicht möglich, die helle Überblendung, die entsteht, wenn man in eine extrem helle Lichtquelle wie die Sonne oder einen Suchscheinwerfer sieht, wiederzugeben. Durch geschickte Manipulation der Kontrast- und Farbkurven versucht „HDR“, dieses Problem zu umgehen. Das Bild bekommt dabei meist sattere Farben und höhere Kontraste zwischen beleuchteten, hellen und dunklen Bildbereichen. Auch erlaubt diese Technik, extrem helle Objekte oder Bildbereich mit einem Glühen oder Überblenden zu versehen. Dabei wird über die eigentlichen Grenzen des hellen Bildbereiches hinaus die Umgebung bis zu einem bestimmten Abstand hin zusätzlich aufgehellt. Die dabei entstehenden Resultate sind nicht zu verachten. Bisher wird „HDR“ nur in wenigen „Engines“ (Half Life 2, Far Cry, F.E.A.R.) verwendet, allerdings wird „HDR“ zweifellos ein Muss für kommende Spiele werden.

Unreal 3 & HDR

Page 14: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

14

4. Schlusswort Wie man also unschwer erkennen kann sind moderne Spiele nicht nur „spielereien“ sondern der Motor für die Entwicklung eines ganzen Marktsegmentes. Die technischen Innovationen und der Forschungsaufwand in diesem Bereich sind ohne Zweifel enorm. Gerade die Entwicklung neuer Techniken für die Darstellung dreidimensionaler Bildinhalte ist extrem komplex. Würde man versuchen, nur 50% der im laufe der Zeit entstandenen Techniken, Effekte und deren mathematische Hintergründe zu erklären, könnte man damit inzwischen mehrere Bücher füllen. Sinn und Zweck dieses Dokumentes war es jedoch, „nur“ einen Überblick über moderne Grafikkarten und 3D-Grafik zu vermitteln. Im Anhang befinden sich noch ein paar Bilder, die Ausblicke auf aktuelle und kommende Spiele Zeigen, sowie eine Liste an Internetadressen, deren Informationen für die Erstellung dieses Dokumentes verwendet wurden.

5. Informationsquellen 3D-Lexikon: http://www.tecchannel.de/technologie/komponenten/401409/ 3D-Pipeline: http://www.extremetech.com/article2/0,1697,464440,00.asp ATI 3D-Demos: http://www.ati.com/developer/demos.html Nvidia History: http://www.gamergod.com/article.php?article_id=149 Technik & Tests: http://www.computerbase.de/ Seminar über GPUs / 3D-Effekte:

http://wwwisg.cs.uni-magdeburg.de/~spindler/wiki/ShaderSeminar2005/ Grafikkarten und Grafikchips im Überblick:

http://www.rojakpot.com/default.aspx?location=3&var1=88&var2=0 http://www.pc-erfahrung.de/Index.html?Menu/Menu_Grafikkarte.html

Heise News: Grafikchips berechnen Soundeffekte:

http://www.heise.de/newsticker/result.xhtml?url=/newsticker/meldung/50667 Ageia PhysX: Physikprozessoren sollen die CPU in Zukunft entlasten:

http://www.pcper.com/article.php?aid=140 http://www.golem.de/0509/40214.html

Page 15: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

15

6. Anhang 6.1 Depth of Field

6.2 Übersicht über die Grafikchips von 1996-2005 Die Nachfolgende Tabelle gibt einen Überblick über den Werdegang der verschiedenen Grafikchips von denen einige im vorherigen Abschnitt schon kurz erwähnt wurden.

Karte Chip erschienen Fertigung Komplexität 3D-API SchnittstelleATI 3D Rage II - - 500nm - - PCI3Dfx Voodoo 1 SST1 Ende 96 500nm - Glide PCI

Riva 128 NV3 Apr 97 350nm 3,5M DirectX PCI/AGP3Dfx Voodoo 2 - Anfang 98 350nm - Glide PCI

Riva TNT NV4 Mrz 98 350nm 7M DirectX 6.0 PCI/AGPATI Rage 128 - Feb 99 250nm 8M DirectX 6.0 PCI/AGP

Riva TNT2 NV5 Mai 99 250nm 15M DirectX 6.0 PCI/AGP3Dfx Voodoo 3000 - Frühjahr 99 250nm - Glide AGP

GeForce 256 NV10 Aug 99 220nm 23M DirectX 7.0 PCI/AGPGeforce 2 GTS NV15 Apr 00 180nm 25M DirectX 7.0 AGP

ATI Radeon R100 Apr 00 180nm 23M DirectX 7.0 PCI/AGP3Dfx Voodoo 5500 VSA-100 Mai 00 220nm 14M Glide AGP

GeForce 3 NV20 Feb 01 150nm 57M DirectX 8.0 AGPATI 8500 R200 Aug 01 150nm 60M DirectX 8.1 AGP

GeForce 4 NV30 Feb 02 150nm 63M DirectX 8.0 AGPATI 9700 R300 Jul 02 150nm 107M DirectX 9.0 AGP

Geforce FX 5800 NV30 Jan 03 130nm 125M DirectX 9.0 AGPATI 9800 PRO R350/R360 Mrz 03 150nm 115M DirectX 9.0 AGP

Geforce FX 5900 NV35 Mai 03 130nm 135M DirectX 9.0 AGPGeforce 6800 (Ultra) NV40 Apr 04 130nm 222M DirectX 9.0c AGP/PCIe X16

X800 XT R420 Mai 04 130nm 160M DirectX 9.0 AGP/PCIe X16X1800XT R520 Sep 05 90nm 321M DirectX 9.0c PCIe X16

Geforce 7800 GTX 512 G70 Nov 05 110nm 302M DirectX 9.0c PCIe X16

Page 16: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

16

Karte VSU VS PP / TP PS Prozessor (MHz) Füllrate (MTexels/s) Speicherbusbreite Speicher (MHz)ATI 3D Rage II 1 - 1x1 - - - - 83MHz SDR3Dfx Voodoo 1 - - 1x1 - 50 50 64bit 50MHz EDONvidia Riva 128 1 - 1x1 - 100 100 128bit 100 MHz SDR3Dfx Voodoo 2 - - 1x2 - 90 180 64bit EDO

Nvidia Riva TNT 1 - 1x2 - 90 180 128bit 110Mhz SDRATI Rage 128 1 - 2x1 - 103 205 128bit 103 MHz SDR

Nvidia Riva TNT2 1 - 1x2 - 125 250 128bit 166MHz SDR3Dfx Voodoo 3000 - - 1x2 - 166 333 128bit 166MHz SDR

Nvidia GeForce 256 1 TnL 4x1 - 120 480 128bit 150MHz SDR / DDRNvidia Geforce 2 GTS 1 TnL 4x2 - 200 1600 128bit 166MHz DDR

ATI Radeon 1 TnL 2x3 - 183 1098 128bit 183MHZ DDR3Dfx Voodoo 5500 - - 2x1x2 - 166 666 128bit 166MHz SDRNvidia GeForce 3 1 1.1 4x2 1.0 200 1600 128bit 230 MHz DDR

ATI 8500 2 1.1 4x2 1.4 275 2200 128bit 275MHz DDRNvidia GeForce 4 2 1.1 4x2 1.3 300 2400 128bit 325 MHz DDR

ATI 9700 4 2.0 8x1 2.0 275 2200 256bit 270 MHz DDRGeforce FX 5800 3 2.0+ 8x1 2.0+ 500 1700 128bit 500 MHz DDR IIATI 9800 PRO 4 2.0 8x1 2.0 380 3040 256bit 350MHz DDR II

Geforce FX 5900 (Ultra) 3 2.0+ 8x1 2.0+ 450 3600 256-bit (4x64bit) 425 MHz DDRGeforce 6800 (Ultra) 6 3.0 16x1 3.0 400 6400 256-bit (4x64bit) 550 MHz GDDR III

X800 XT 6 2.0 16x1 2.0++ 500 8000 256bit 500 MHz GDDR IIIX1800XT 8 2.0 16x1 3.0 625 10000 256bit 750MHz GDDR III

Geforce 7800 GTX 512 8 3.0 24x1 3.0 550 13200 256-bit (4x64bit) 850MHz GDDR III VSU = Vertex Shader Einheiten VS = Vertex Shader Version PP = Pixel Pipleines (Begriffserklärung folgt später) TP = Texture Pipelines PS = Pixel Shader Version Anmerkung: Wie man aus der oberen Tabelle erkennen kann, so wurden mit der Einführung des Pixel Shaders die zusätzlichen „Texture Pipelines“ unnötig, wurden allerdings noch eine Zeit lang weiter verbaut um die Kompatibilität bezüglich der Geschwindigkeit bei älteren Spielen zu gewährleisten. Diese verwendeten oftmals eine zweite Textur um Lichteffekte zu simulieren weswegen sich ohne die zweite Textureinheit die Leistung der Grafikkarte halbiert hätte. 6.3 Die 3D-„Pipeline“ Vertex Shader (6 parallel) Pixel Shader (16 parallel) Speicher (Anbindung)

Page 17: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

17

6.4. „Normal Mapping“

6.5. Bilder aus aktuellen Spielen

X3 – Reunion (Egosoft)

Page 18: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

18

X3 – Reunion (Egosoft)

X3 – Reunion (Egosoft)

Page 19: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

19

X3 – Reunion (Egosoft)

X3 – Reunion (Egosoft)

Page 20: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

20

X3 – Reunion (Egosoft)

Page 21: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

21

Unreal 3 (Epic Megagames)

Unreal 3 (Epic Megagames)

Page 22: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

22

Unreal 3 (Epic Megagames)

Unreal 3 (Epic Megagames)

Page 23: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

23

Unreal 3 (Epic Megagames)

Unreal 3 (Epic Megagames)

Page 24: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

24

Unreal 3 (Epic Megagames)

Page 25: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

25

Unreal 3 (Epic Megagames)

Page 26: Moderne Grafikkarten und 3D-Grafik - Ulm · Zum Vergleich: Ein Athlon64 X2 (3800+) mit zwei Kernen besitzt, je nach Größe des internen Pufferspeichers, etwa 160-230 Millionen ...

26

Unreal 3 (Epic Megagames)