Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Aufbau und Funktion von 3D- Grafikkarten von Christian Reis.

Ähnliche Präsentationen


Präsentation zum Thema: "Aufbau und Funktion von 3D- Grafikkarten von Christian Reis."—  Präsentation transkript:

1 Aufbau und Funktion von 3D- Grafikkarten von Christian Reis

2 Schnittstellen AGP Intel 1997 i440LX Pentium2 Übertragung:Parallel ● 1.0: 1x 32bit/clock 66MHz 3.3V 266MB/s ● 1.0: 2x 533 MB/s 3.3V ● 2.0: 4x 1066MB/s 1.5V ● 3.0 8x 2133 MB/s 0.8V ● AGP Bridge PCIe seit 2004 Übertragung:Seriell ● 1.0/1.1 clock 1.25 GHz 250MB/s ● 2.0 clock 2.5 Ghz 500MB/s pro lane ● bei 16 lanes 8GB/s

3 Verarbeitung der Daten in der Grafikpipeline Vertex Shader Vertex Setup Lightning Viewpoint Clipping Triangle Setup Fragmentation Rasterizierung Texture und Shading Blending Framebuffer

4 Vertex Shader Für jedes Polygon werden Information über die Eckpunkte (Vektoren) benötigt. Vertex-Shader sind Einheiten in der GPU und lesen und speichern Eckdaten von Polygonen. Mit ihnen kann auch die Form eines Polygons verändert werden, indem man die z.B Koordinaten eines Vektors verändert. Neben den Werten für die Koordinaten können Vertizes zusätzlich Farbwerte und Transparenzwerte zugewiesen werden, wodurch es möglich ist Vertizes als Eckpunkte für Texturen zu verwenden. Um den räumlichen Standpunkt für einen Vertex zu bestimmen werden 3 Gleitkommawerte je für die X,-Y,- und Z-Achse festgelegt, wobei X die seitliche Verschiebung, Y die Höhe und Z die Tiefe repräsentiert. Mehrere Vertexe werden zu Dreiecken oder Polygonen verbunden; es entstehen sogenannte Primitive. Beispiel unten: Eine Funktion in OpenGl um ein Dreieck zu zeichnen. Durch die Funktion glBegin mit dem Aufruf GL_TRIANGLES weiß der Shader,daß alle nachfolgenden Vertizes bis zum Funktionsende glEnd() zu Dreiecken zusammengefasst werden sollen. Durch glVertex3f werden die Koordinaten für die Vertizes festgelegt. Die Reihenfolge ist X,Y,Z. Jede Zahl ist vom Typ float und benötigt somit 4 Byte, ein Vertex folglich 12Byte. glBegin(GL_TRIANGLES); glVertex3f(3.0,0.0,3.0); glVertex3f(-3.0,0.0,3.0); glVertex3f(0.0,3.0,0.0); glEnd();

5 Triangle Setup Der nächste Verarbeitungsschritt ist das Triangle-Setup. Anhand einer Clippingeinheit wird bestimmt welche Objekte derzeit sichtbar sind und welche sich außerhalb des Betrachtungsfeldes befinden. Die Daten der nicht sichtbaren Primitive werden nicht weiterverarbeitet was sich zeit- und ressourcenschonend auswirkt. Für die Bestimmung der sichtbaren Primitive spielt neben dem Z-Buffer der Blickwinkel (Viewpoint) eine große Rolle. Beispiel: Bestimmung des Viewpoints unter OpenGl: GluLookAt(4.0,3.0,10.0, // Wo befinden sich die Augen: X, Y, Z 0.0,1.0,0.0, //Auf welchen Punkt der Szene wird geblickt X, Y, Z 0.0,1.0,0.0);//In welchem Winkel wird auf die Szene geblickt

6 Rasterisierung Der nächste Verarbeitungsschritt ist die Rasterisierung. Hier wir den Primitiven der Pixelinhalt zugeordnet. Bedingt durch die Auflösung des Monitors entstehen hier die ungewünschten Treppeneffekte, welche allerdings durch höhere Monitorauflösung und Antialiasing verringert werden können. Durch Hidden Surface Removal werden hier auch Teile von Primitiven entfernt, die derzeit nicht sichtbar sind. Diese Informationen werden anhand des Z-Buffers bestimmt. Der Z-Buffer enthält alle Tiefeninformationen der Primitive und ermöglicht es zu erkennen, welche Objekte derzeit verdeckt sind

7 Fragmentshader und ROP Fragmentshader, auch Pixelshader genannt sind Einheiten der GPU in welchen die Oberflächeneigenschaften der Objekte z.B Spiegelungen und Schattierungen auf Pixelebene berechnet werden.Wichtige Informationen für den Pixelshader sind die Farbwerte Rot, Grün und Blau sowie die Transparenz. Alle Anweisungen zur Berechnung sind softwareseitig im Pixelshader der API, z,B OpenGl festgelegt. Es können nur für 4 Pixel die gleichen Berechnungen durchgeführt werden, so daß 4 Pixelpipelines an einem Pixelquad arbeiten. Die Geschwindigkeit einer Grafikkarte hängt maßgeblich von der Anzahl der Pixelpipelines ab, da bei höheren Auflösungen wesentlich mehr Pixel zu berechnen sind, die Zahl der Vertizes allerdings gleich bleibt. Ist ein Pixelquad fertig berechnet wird dieser an die ROP´s (Rasteroperatoren) gesendet. Hier findet unter anderem das sogenannte Blending statt, d.h. Es werden die einzelnen Fragmente der Pixelpipelines zu einem ganzen Bild zusammengefügt und es werden anschließend die Kanten geglättet (Antialiasing). Ist ein Bild fertig berchnet wird es im Framebuffer des VRAM abgelegt und wartet auf die Ausgabe auf dem Bildschirm.

8

9 Referenzen opengl.org wikipedia.de 3dcenter.de tweakpc.de


Herunterladen ppt "Aufbau und Funktion von 3D- Grafikkarten von Christian Reis."

Ähnliche Präsentationen


Google-Anzeigen