Grundlagen und Aufbau einer Grafikkarte
Friedrich Hoermann | 12.06.08 | Hauptseminar Grafikprogrammierung
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 2
Inhalt
- Einleitung- Geschichte- Aufbau der Grafikkarte- Die Grafikpipeline- Ausblick
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 3
Einleitung
- Entwicklung der Grafikkarten sehr schnell- Transistorenanzahl verdoppelt sich innerhalb von 6 Monaten- Bei CPUs gilt „Mooresches Gesetz“ mit 18 Monaten- ATI HD3850 666 Mio Transistoren- Core2Duo 291 Mio Transistoren
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 4
Geschichte
- Erste Rechner mit grafischer Ausgabe- WHIRLWIND (MIT) 1949- SAGE 1958
- Militärische Nutzung
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 5
Sketchpad (1963)
- Von Ivan Sutherland entwickeltes Zeichenprogramm- Bedienung mit Hilfe eines Stiftes
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 6
Siebziger Jahre
Entwicklung vieler Verfahren, die auch heute noch eingesetzt werden
- Phong Shading- Gouraud Shading- Lassen glattere Oberflächen von 3D-Objekten zu- Z-Buffer, Texture Mapping (Belegen von Oberflächen mit
Texturen), Bump Mapping (Darstellung von Oberflächenunebenheiten)
- Jedoch nicht in Echtzeit anwendbar, da Rechner zu schwach.
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 7
Vektordisplays (1979)
- Kathodenstrahl wurde nicht benutzt um das Bild zeilenweise aufzubauen
- Zeichnen von Formen und Punkten mit dem Strahl
- Je nach Geschwindigkeit des Strahls helle oder dunkle Linien
- Grund: wenig Bildspeicher- 1 Megapixel Bild
(Schwarz/Weiß) ~ 125 kByte
- Damalige Rechner ~ 2 KByte
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 8
Grafikkartenstandards von IBM
- Monochrome Display Adapter (MDA), erster Standard für PC-Grafikkarten (1981)- Nur noch einfarbige Darstellung von Texten möglich
- Noch im selben Jahr Color Graphics Adapter (CGA) zur Farbdarstellung (16 Farben)- 640x200 Pixel- Je nach Auflösung niedrigere Farbwerte (120x200 für 16
Farben)- Im Textmodus 80x25 Zeichen, bei Zeichengröße 8x8
- Erste Grafikkarten wandelten nur den Inhalt des Video-RAMs in Ausgangssignale um.
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 9
Grafikkartenstandards von IBM
- Professional Graphics Adapter (PGA) 1984- Erste prozessorbasierte
Grafikkarte für professionelle Anwendungen (CAD)
- Übernahm alle videobasierten Aufgaben des Systems
- Auflösung 640x480, 256 Farben, 60 Frames/Sekunde
- 4000$ im Vergleich zu 50000$ für vorhergehende Workstations
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 10
Grafikkartenstandards von IBM
- Enhanced Graphics Adapter (EGA) 1984- Grafikmodus 640x350 Pixel bei 16 aus 64 Farben- Textmodus 80x43 Zeichen bei 8x8 Zeichen
- Video Graphics Array (VGA) 1987- Definierte verschiedene Kombinationen von Auflösungen
und Farbtiefen- 256 aus 262144 Farben- 640x480 Pixel maximale Auflösung
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 11
Windows-Beschleuniger
- Durch die Entwicklung von grafischen Oberflächen verlangen nach mehr Unterstützung für Darstellungsberechnung
- Windows-Beschleuniger konnten Befehle entgegen nehmen und verarbeiten- Zeichne Rechteck- Fülle Rechteck- Usw.
- Name Windows-Beschleuniger, da hauptsächlich von Microsoft Windows benutzt
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 12
3D-Beschleuniger
- Wichtigster Faktor für die Entwicklung von 3D-Beschleunigern war die Spieleindustrie
- Anfangs nur mit Addon Karten möglich- Erste Beschleunigerkarten
- 3dfx Voodoo 1 (1996)- Dreiecksbasierte Rasterisierungseinheit- Antialiasing- Texture Mapping (Belegen von Oberflächen mit
Texturen)
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 13
3D-Beschleuniger
- 3dfx Voodoo 2- Weitere Funktionen
- Trilineares Filtering – verhindert MIP Banding- Möglichkeit des SLI Verbunds
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 14
Mip Mapping
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 15
Aufbau einer Grafikkarte
Hauptbestandteile:- Grafikchip- Bild-/Videospeicher- RAMDAC (Chip zur Umwandlung der digitalen in
analoge Bildsignale)- AGP- oder PCI-Express-Interface- Anschlüsse für Ausgabegeräte
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 16
Aufbau einer Grafikkarte
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 17
Grafikspeicher
- Früher bestimmte Grafikspeicher die mögliche Auflösung und Farbtiefe
- Heute weit mehr Grafikspeicher verfügbar (128 MB bis 1GB)- Wird zur Speicherung von Texturen und 3D-Modellen
verwendet- Früher VRAM, statt dem als Hauptspeicher üblichen DRAMs
- DRAMs erlauben kein gleichzeitiges lesen und schreiben- Aber für Grafikverarbeitung wichtig, da neues Bild
während Ausgabe des vorhergehenden berechnet wird- Heute GDDR-Ram
- Weiterentwicklung des Hauptspeicher DDR-Rams- Bei Onboard-Lösungen wird Hauptspeicher benutzt
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 18
Grafikprozessor
- Erst mit Windows-Beschleunigern eigene Berechnungen möglich
- Durch Entwicklung der 3D-Anwendungen wurden Grafikprozessoren immer an diese Spezialanwendung angepasst
- Benutzung einer 3D-Pipeline für 3D-Grafiken- Daten durchlaufen Pipeline bis zur Ausgabe (Framebuffer)
- Anfangs nur wenige Schritt der Pipeline von GPU ausgeführt
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 19
Grafikprozessor
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 20
Die Grafikpipeline
- Daten durchlaufen Pipeline von Oben nach Unten
- Geometrieteil mit reinen Vektordaten
- Pixel- und Texturblending mit Vektor- und Pixeldaten
- Rasterung auf Pixelebene
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 21
Vektordaten
- Vertex ist Eck- oder Scheitelpunkt eines Polygons- Polygon=Vieleck
- Vertex enthält- Koordinaten- Farbwert/Transparenz- Texturkoordinaten für Texture Mapping
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 22
Tesselation
- Polygone werden in Dreiecke zerteilt- Grafikkarten auf Verarbeitung von Dreiecken ausgelegt- Auch aus komplexen Objekten werden viele einfache
Dreiecksflächen
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 23
Transformation und Beleuchtung
- Transformation von Objektkoordinaten in globale Koordinaten- Verschiedene Operationen- Benutzung von homogenen Koordinaten, damit immer gleiche
Berechnungsvorschrift- Translation
- Skalierung
- Rotation
' 1 0' 0 1 *
1 0 0 1 1
x dx xy dy y
⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟ ⎜ ⎟=⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠
''
x x dxy y dy
⎛ ⎞ ⎛ ⎞ ⎛ ⎞= +⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎝ ⎠ ⎝ ⎠ ⎝ ⎠
''
x xy y
αβ
⎛ ⎞ ⎛ ⎞=⎜ ⎟ ⎜ ⎟
⎝ ⎠ ⎝ ⎠
' cos( ) sin( )*
' sin( ) cos( )x xy y
α αα α
−⎛ ⎞ ⎛ ⎞ ⎛ ⎞=⎜ ⎟ ⎜ ⎟ ⎜ ⎟
⎝ ⎠ ⎝ ⎠ ⎝ ⎠
' 0 0' 0 0 *
1 0 0 1 1
x xy y
αβ
⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟ ⎜ ⎟=⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠
' cos( ) sin( ) 0' sin( ) cos( ) 0 *
1 0 0 1 1
x xy y
α αα α
−⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟ ⎜ ⎟=⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 24
Transformation und Beleuchtung
- Umwandlung in Kamerakoordinaten- Kamera auf Position (0,0,0)- Blickrichtung entlang der z-Achse
- Umwandlung von Objektkoordinaten zu Weltkoordinaten und dann zu Kamerakoordinaten meist in einem Schritt
- Im Beleuchtungsschritt werden die Farben an den Eckpunkten der Dreiecke in Relation zu den vorhandenen Lichtquellen berechnet
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 25
Clipping
- Abschneiden alle nicht-sichtbaren Objekte- Sichtkegel- Dadurch weniger Daten für die restliche Pipeline
- Danach Projektion auf Pixelebene- Nachfolgende Operationen werden per-Pixel durchgeführt
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 26
Texture Mapping & Fog Blending
- Texturen werden anhand der Texturkoordinaten (uvw-Koordinaten) angebracht- Bei zweidimensionalen Texturen nur uv-
Koordinaten notwendig- w-Wert z.B. für volumetrische Texturen benötigt
(Nebel)
- Bei Multitexturirung mehrere Texturkoordinaten pro Vertex- Dadurch Überlagerung von Texturen möglich
- Fog Blending um realistischeren Tiefeneindruck zu erschaffen- Geringerer Kontrast weiter entfernter Objekte
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 27
Z-Buffer
- Überprüfung der Verdeckungen- Überprüfung pro Polygon
- Entfernung der Pixel vom Betrachter- Liegt bereits ein Pixel davor oder dahinter
- Davor – Wert verwerfen- Dahinter – Wert überschreiben
- Speicherung der Werte im Z-Buffer- Danach Übergabe des Punktes an Framebuffer
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 28
Z-Buffer
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 29
Framebuffer
- Ausgabe des fertigen Bildes durch Doublebufferung- Framebuffer in zwei Bereiche unterteilt
- Frontbuffer (Wird von RAMDAC gelesen und auf dem Bildschirm dargestellt)
- Backbuffer (GPU berechnet nächstes Bild)- Ohne Doublebuffering wäre der Aufbau der Szene, bzw.
Flimmern sichtbar
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 30
Moderne Grafikpipeline
Problem alte Pipeline:- Implementierung der
Funktionen in Hardware- Wenige Möglichkeiten für
Programmierer- Langsame Entwicklung
Lösung:- Shadereinheiten- Funktional beschränkte
Rechenbausteine- Programmierung durch
Entwickler
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 31
Shadereinheiten
Vertex-Shader- Durchführung der Transformations- und Lichtberechnungen- Verschiebung von Vektoren möglich
Geometrie-Shader- Löschen und Erzeugen von Vektoren möglich- Nur bei modernen Grafikkarten und DirectX 10 möglich
Pixel-Shader- Verändern der zu rendernden Teile auf Pixel-Ebene
- Realistischere Oberflächen- und Materialeigenschaften
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 32
Unified-Shader
- Trennung der Shadereinheiten oft zu unflexibel- Z.B. reine Benutzung der Vertex-Shader, Pixel-Shader
unbenutzt- Entwicklung der Unified-Shader
- Jede Shadereinheit kann als Vertex-, Pixel-, oder Geometrie-Shader genutzt werden
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 33
Unified-Shader
Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 34
Ausblick
- Grafikkarten übernehmen immer mehr Funktionen, die bisher von der CPU berechnet wurden- Videobeschleunigung beim Abspielen oder Kodieren
(h.264)- Physikberechnungen
- Mögliche Weiterentwicklung- CPU und GPU vereint (AMD Fusion)