Grundlagen und Aufbau einer Grafikkarte

Grundlagen und Aufbau einer Grafikkarte Grundlagen und Aufbau einer Grafikkarte

vs.informatik.uni.ulm.de
von vs.informatik.uni.ulm.de Mehr von diesem Publisher

Friedrich Hoermann | 12.06.08 | Hauptseminar<br />

Grafikprogrammierung<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong><br />

<strong>Grafikkarte</strong>


Seite 2<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Inhalt<br />

- Einleitung<br />

- Geschichte<br />

- <strong>Aufbau</strong> der <strong>Grafikkarte</strong><br />

- Die Grafikpipeline<br />

- Ausblick


Seite 3<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Einleitung<br />

- Entwicklung der <strong>Grafikkarte</strong>n sehr schnell<br />

- Transistorenanzahl verdoppelt sich innerhalb von 6 Monaten<br />

- Bei CPUs gilt „Mooresches Gesetz“ mit 18 Monaten<br />

- ATI HD3850 666 Mio Transistoren<br />

- Core2Duo 291 Mio Transistoren


Seite 4<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Geschichte<br />

- Erste Rechner mit grafischer<br />

Ausgabe<br />

- WHIRLWIND (MIT) 1949<br />

- SAGE 1958<br />

- Militärische Nutzung


Seite 5<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Sketchpad (1963)<br />

- Von Ivan Sutherland entwickeltes Zeichenprogramm<br />

- Bedienung mit Hilfe eines Stiftes


Seite 6<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Siebziger Jahre<br />

Entwicklung vieler Verfahren, die auch heute noch eingesetzt<br />

werden<br />

- Phong Shading<br />

- Gouraud Shading<br />

- Lassen glattere Oberflächen von 3D-Objekten zu<br />

- Z-Buffer, Texture Mapping (Belegen von Oberflächen mit<br />

Texturen), Bump Mapping (Darstellung von<br />

Oberflächenunebenheiten)<br />

- Jedoch nicht in Echtzeit anwendbar, da Rechner zu schwach.


Seite 7<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Vektordisplays (1979)<br />

- Kathodenstrahl wurde nicht<br />

benutzt um das Bild<br />

zeilenweise aufzubauen<br />

- Zeichnen von Formen <strong>und</strong><br />

Punkten mit dem Strahl<br />

- Je nach Geschwindigkeit des<br />

Strahls helle oder dunkle<br />

Linien<br />

- Gr<strong>und</strong>: wenig Bildspeicher<br />

- 1 Megapixel Bild<br />

(Schwarz/Weiß)<br />

~ 125 kByte<br />

- Damalige Rechner<br />

~ 2 KByte


Seite 8<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

<strong>Grafikkarte</strong>nstandards von IBM<br />

- Monochrome Display Adapter (MDA), erster Standard für PC-<br />

<strong>Grafikkarte</strong>n (1981)<br />

- Nur noch einfarbige Darstellung von Texten möglich<br />

- Noch im selben Jahr Color Graphics Adapter (CGA) zur<br />

Farbdarstellung (16 Farben)<br />

- 640x200 Pixel<br />

- Je nach Auflösung niedrigere Farbwerte (120x200 für 16<br />

Farben)<br />

- Im Textmodus 80x25 Zeichen, bei Zeichengröße 8x8<br />

- Erste <strong>Grafikkarte</strong>n wandelten nur den Inhalt des Video-RAMs<br />

in Ausgangssignale um.


Seite 9<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

<strong>Grafikkarte</strong>nstandards von IBM<br />

- Professional Graphics Adapter<br />

(PGA) 1984<br />

- Erste prozessorbasierte<br />

<strong>Grafikkarte</strong> für professionelle<br />

Anwendungen (CAD)<br />

- Übernahm alle<br />

videobasierten Aufgaben des<br />

Systems<br />

- Auflösung 640x480, 256<br />

Farben, 60 Frames/Sek<strong>und</strong>e<br />

- 4000$ im Vergleich zu<br />

50000$ für vorhergehende<br />

Workstations


Seite 10<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

<strong>Grafikkarte</strong>nstandards von IBM<br />

- Enhanced Graphics Adapter (EGA) 1984<br />

- Grafikmodus 640x350 Pixel bei 16 aus 64 Farben<br />

- Textmodus 80x43 Zeichen bei 8x8 Zeichen<br />

- Video Graphics Array (VGA) 1987<br />

- Definierte verschiedene Kombinationen von Auflösungen<br />

<strong>und</strong> Farbtiefen<br />

- 256 aus 262144 Farben<br />

- 640x480 Pixel maximale Auflösung


Seite 11<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Windows-Beschleuniger<br />

- Durch die Entwicklung von grafischen Oberflächen verlangen<br />

nach mehr Unterstützung für Darstellungsberechnung<br />

- Windows-Beschleuniger konnten Befehle entgegen nehmen<br />

<strong>und</strong> verarbeiten<br />

- Zeichne Rechteck<br />

- Fülle Rechteck<br />

- Usw.<br />

- Name Windows-Beschleuniger, da hauptsächlich von<br />

Microsoft Windows benutzt


Seite 12<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

3D-Beschleuniger<br />

- Wichtigster Faktor für die Entwicklung von 3D-Beschleunigern<br />

war die Spieleindustrie<br />

- Anfangs nur mit Addon Karten möglich<br />

- Erste Beschleunigerkarten<br />

- 3dfx Voodoo 1 (1996)<br />

- Dreiecksbasierte Rasterisierungseinheit<br />

- Antialiasing<br />

- Texture Mapping (Belegen von Oberflächen mit<br />

Texturen)


Seite 13<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

3D-Beschleuniger<br />

- 3dfx Voodoo 2<br />

- Weitere Funktionen<br />

- Trilineares Filtering – verhindert MIP Banding<br />

- Möglichkeit des SLI Verb<strong>und</strong>s


Seite 14<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Mip Mapping


Seite 15<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

<strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong><br />

Hauptbestandteile:<br />

- Grafikchip<br />

- Bild-/Videospeicher<br />

- RAMDAC (Chip zur Umwandlung der digitalen in<br />

analoge Bildsignale)<br />

- AGP- oder PCI-Express-Interface<br />

- Anschlüsse für Ausgabegeräte


Seite 16<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

<strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong>


Seite 17<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Grafikspeicher<br />

- Früher bestimmte Grafikspeicher die mögliche Auflösung <strong>und</strong><br />

Farbtiefe<br />

- Heute weit mehr Grafikspeicher verfügbar (128 MB bis 1GB)<br />

- Wird zur Speicherung von Texturen <strong>und</strong> 3D-Modellen<br />

verwendet<br />

- Früher VRAM, statt dem als Hauptspeicher üblichen DRAMs<br />

- DRAMs erlauben kein gleichzeitiges lesen <strong>und</strong> schreiben<br />

- Aber für Grafikverarbeitung wichtig, da neues Bild<br />

während Ausgabe des vorhergehenden berechnet wird<br />

- Heute GDDR-Ram<br />

- Weiterentwicklung des Hauptspeicher DDR-Rams<br />

- Bei Onboard-Lösungen wird Hauptspeicher benutzt


Seite 18<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Grafikprozessor<br />

- Erst mit Windows-Beschleunigern eigene Berechnungen<br />

möglich<br />

- Durch Entwicklung der 3D-Anwendungen wurden<br />

Grafikprozessoren immer an diese Spezialanwendung<br />

angepasst<br />

- Benutzung <strong>einer</strong> 3D-Pipeline für 3D-Grafiken<br />

- Daten durchlaufen Pipeline bis zur Ausgabe (Framebuffer)<br />

- Anfangs nur wenige Schritt der Pipeline von GPU ausgeführt


Seite 19<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Grafikprozessor


Seite 20<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Die Grafikpipeline<br />

- Daten durchlaufen Pipeline<br />

von Oben nach Unten<br />

- Geometrieteil mit reinen<br />

Vektordaten<br />

- Pixel- <strong>und</strong> Texturblending mit<br />

Vektor- <strong>und</strong> Pixeldaten<br />

- Rasterung auf Pixelebene


Seite 21<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Vektordaten<br />

- Vertex ist Eck- oder Scheitelpunkt eines Polygons<br />

- Polygon=Vieleck<br />

- Vertex enthält<br />

- Koordinaten<br />

- Farbwert/Transparenz<br />

- Texturkoordinaten für Texture Mapping


Seite 22<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Tesselation<br />

- Polygone werden in Dreiecke zerteilt<br />

- <strong>Grafikkarte</strong>n auf Verarbeitung von Dreiecken ausgelegt<br />

- Auch aus komplexen Objekten werden viele einfache<br />

Dreiecksflächen


Seite 23<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Transformation <strong>und</strong> Beleuchtung<br />

- Transformation von Objektkoordinaten in globale Koordinaten<br />

- Verschiedene Operationen<br />

- Benutzung von homogenen Koordinaten, damit immer gleiche<br />

Berechnungsvorschrift<br />

- Translation<br />

⎛x'⎞ ⎛x⎞ ⎛dx⎞ ⎜ ⎟= ⎜ ⎟+ ⎜ ⎟<br />

⎝y'⎠ ⎝y⎠ ⎝dy⎠ - Skalierung<br />

⎛x'⎞ ⎛αx⎞ ⎜ ⎟= ⎜ ⎟<br />

⎝y'⎠ ⎝βy⎠ - Rotation<br />

⎛x'⎞ ⎛cos( α) −sin(<br />

α)<br />

⎞ ⎛x⎞ ⎜ ⎟= ⎜ ⎟* ⎜ ⎟<br />

⎝y'⎠ ⎝sin( α) cos( α)<br />

⎠ ⎝y⎠ ⎛x'⎞ ⎛1 0 dx ⎞ ⎛x⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟<br />

⎜<br />

y' ⎟<br />

=<br />

⎜<br />

0 1 dy<br />

⎟<br />

*<br />

⎜<br />

y<br />

⎟<br />

⎜1 ⎟ ⎜0 0 1 ⎟ ⎜1 ⎟<br />

⎝ ⎠ ⎝ ⎠ ⎝ ⎠<br />

⎛x'⎞ ⎛α 0 0⎞<br />

⎛x⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟<br />

⎜<br />

y' ⎟<br />

=<br />

⎜<br />

0 β 0<br />

⎟<br />

*<br />

⎜<br />

y<br />

⎟<br />

⎜1 ⎟ ⎜0 0 1⎟ ⎜1 ⎟<br />

⎝ ⎠ ⎝ ⎠ ⎝ ⎠<br />

⎛x'⎞ ⎛cos( α) −sin(<br />

α)<br />

0⎞<br />

⎛x⎞ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟<br />

⎜<br />

y' ⎟<br />

=<br />

⎜<br />

sin( α) cos( α)<br />

0<br />

⎟<br />

*<br />

⎜<br />

y<br />

⎟<br />

⎜1 ⎟ ⎜ 0 0 1⎟ ⎜1 ⎟<br />

⎝ ⎠ ⎝ ⎠ ⎝ ⎠


Seite 24<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Transformation <strong>und</strong> Beleuchtung<br />

- Umwandlung in Kamerakoordinaten<br />

- Kamera auf Position (0,0,0)<br />

- Blickrichtung entlang der z-Achse<br />

- Umwandlung von Objektkoordinaten zu Weltkoordinaten <strong>und</strong><br />

dann zu Kamerakoordinaten meist in einem Schritt<br />

- Im Beleuchtungsschritt werden die Farben an den Eckpunkten<br />

der Dreiecke in Relation zu den vorhandenen Lichtquellen<br />

berechnet


Seite 25<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Clipping<br />

- Abschneiden alle nicht-sichtbaren Objekte<br />

- Sichtkegel<br />

- Dadurch weniger Daten für die restliche Pipeline<br />

- Danach Projektion auf Pixelebene<br />

- Nachfolgende Operationen werden per-Pixel durchgeführt


Seite 26<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Texture Mapping & Fog Blending<br />

- Texturen werden anhand der Texturkoordinaten<br />

(uvw-Koordinaten) angebracht<br />

- Bei zweidimensionalen Texturen nur uv-<br />

Koordinaten notwendig<br />

- w-Wert z.B. für volumetrische Texturen benötigt<br />

(Nebel)<br />

- Bei Multitexturirung mehrere Texturkoordinaten pro<br />

Vertex<br />

- Dadurch Überlagerung von Texturen möglich<br />

- Fog Blending um realistischeren Tiefeneindruck zu<br />

erschaffen<br />

- Geringerer Kontrast weiter entfernter Objekte


Seite 27<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Z-Buffer<br />

- Überprüfung der Verdeckungen<br />

- Überprüfung pro Polygon<br />

- Entfernung der Pixel vom Betrachter<br />

- Liegt bereits ein Pixel davor oder dahinter<br />

- Davor – Wert verwerfen<br />

- Dahinter – Wert überschreiben<br />

- Speicherung der Werte im Z-Buffer<br />

- Danach Übergabe des Punktes an Framebuffer


Seite 28<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Z-Buffer


Seite 29<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Framebuffer<br />

- Ausgabe des fertigen Bildes durch Doublebufferung<br />

- Framebuffer in zwei Bereiche unterteilt<br />

- Frontbuffer (Wird von RAMDAC gelesen <strong>und</strong> auf dem<br />

Bildschirm dargestellt)<br />

- Backbuffer (GPU berechnet nächstes Bild)<br />

- Ohne Doublebuffering wäre der <strong>Aufbau</strong> der Szene, bzw.<br />

Flimmern sichtbar


Seite 30<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Moderne Grafikpipeline<br />

Problem alte Pipeline:<br />

- Implementierung der<br />

Funktionen in Hardware<br />

- Wenige Möglichkeiten für<br />

Programmierer<br />

- Langsame Entwicklung<br />

Lösung:<br />

- Shadereinheiten<br />

- Funktional beschränkte<br />

Rechenbausteine<br />

- Programmierung durch<br />

Entwickler


Seite 31<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Shadereinheiten<br />

Vertex-Shader<br />

- Durchführung der Transformations- <strong>und</strong> Lichtberechnungen<br />

- Verschiebung von Vektoren möglich<br />

Geometrie-Shader<br />

- Löschen <strong>und</strong> Erzeugen von Vektoren möglich<br />

- Nur bei modernen <strong>Grafikkarte</strong>n <strong>und</strong> DirectX 10 möglich<br />

Pixel-Shader<br />

- Verändern der zu rendernden Teile auf Pixel-Ebene<br />

- Realistischere Oberflächen- <strong>und</strong> Materialeigenschaften


Seite 32<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Unified-Shader<br />

- Trennung der Shadereinheiten oft zu unflexibel<br />

- Z.B. reine Benutzung der Vertex-Shader, Pixel-Shader<br />

unbenutzt<br />

- Entwicklung der Unified-Shader<br />

- Jede Shadereinheit kann als Vertex-, Pixel-, oder<br />

Geometrie-Shader genutzt werden


Seite 33<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Unified-Shader


Seite 34<br />

<strong>Gr<strong>und</strong>lagen</strong> <strong>und</strong> <strong>Aufbau</strong> <strong>einer</strong> <strong>Grafikkarte</strong> | Friedrich Hoermann | 12.06.08<br />

Ausblick<br />

- <strong>Grafikkarte</strong>n übernehmen immer mehr Funktionen, die bisher<br />

von der CPU berechnet wurden<br />

- Videobeschleunigung beim Abspielen oder Kodieren<br />

(h.264)<br />

- Physikberechnungen<br />

- Mögliche Weiterentwicklung<br />

- CPU <strong>und</strong> GPU vereint (AMD Fusion)

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!