Grundlagen und Aufbau einer Grafikkarte
Grundlagen und Aufbau einer Grafikkarte Grundlagen und Aufbau einer Grafikkarte
Friedrich Hoermann | 12.06.08 | Hauptseminar Grafikprogrammierung Grundlagen und Aufbau einer Grafikkarte
- Seite 2 und 3: Seite 2 Grundlagen und Aufbau einer
- Seite 4 und 5: Seite 4 Grundlagen und Aufbau einer
- Seite 6 und 7: Seite 6 Grundlagen und Aufbau einer
- Seite 8 und 9: Seite 8 Grundlagen und Aufbau einer
- Seite 10 und 11: Seite 10 Grundlagen und Aufbau eine
- Seite 12 und 13: Seite 12 Grundlagen und Aufbau eine
- Seite 14 und 15: Seite 14 Grundlagen und Aufbau eine
- Seite 16 und 17: Seite 16 Grundlagen und Aufbau eine
- Seite 18 und 19: Seite 18 Grundlagen und Aufbau eine
- Seite 20 und 21: Seite 20 Grundlagen und Aufbau eine
- Seite 22 und 23: Seite 22 Grundlagen und Aufbau eine
- Seite 24 und 25: Seite 24 Grundlagen und Aufbau eine
- Seite 26 und 27: Seite 26 Grundlagen und Aufbau eine
- Seite 28 und 29: Seite 28 Grundlagen und Aufbau eine
- Seite 30 und 31: Seite 30 Grundlagen und Aufbau eine
- Seite 32 und 33: Seite 32 Grundlagen und Aufbau eine
- Seite 34: Seite 34 Grundlagen und Aufbau eine
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)