34
Grundlagen und Aufbau einer Grafikkarte Friedrich Hoermann | 12.06.08 | Hauptseminar Grafikprogrammierung

Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

  • Upload
    votu

  • View
    222

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

Grundlagen und Aufbau einer Grafikkarte

Friedrich Hoermann | 12.06.08 | Hauptseminar Grafikprogrammierung

Page 2: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 2

Inhalt

- Einleitung- Geschichte- Aufbau der Grafikkarte- Die Grafikpipeline- Ausblick

Page 3: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 4: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 5: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 5

Sketchpad (1963)

- Von Ivan Sutherland entwickeltes Zeichenprogramm- Bedienung mit Hilfe eines Stiftes

Page 6: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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.

Page 7: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 8: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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.

Page 9: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 10: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 11: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 12: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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)

Page 13: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 14: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 14

Mip Mapping

Page 15: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 16: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 16

Aufbau einer Grafikkarte

Page 17: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 18: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 19: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 19

Grafikprozessor

Page 20: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 21: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 22: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 23: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

α αα α

−⎛ ⎞ ⎛ ⎞ ⎛ ⎞⎜ ⎟ ⎜ ⎟ ⎜ ⎟=⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠

Page 24: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 25: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 26: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 27: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 28: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 28

Z-Buffer

Page 29: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 30: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 31: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 32: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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

Page 33: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08Seite 33

Unified-Shader

Page 34: Grundlagen und Aufbau einer Grafikkarte - Verteilte Systeme · PDF fileSeite 3 Grundlagen und Aufbau einer Grafikkarte | Friedrich Hoermann | 12.06.08 Einleitung - Entwicklung der

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)