Grundbegriffe Grafiktechnologien

DonRodi

Lt. Junior Grade
Registriert
Apr. 2003
Beiträge
270
Hi,

ich wollt mich mal schlau machen über begriffe in der Grafikwelt wie zum Beispiel T&L, Shader, uvm. Habt ihr ein Paar Links für mich wo mann sich sclau machen kann, denn wenn ich alleine die ganze Zeit mit Google suche dauert das ja ewig.

Tschüß euer Don
 
Das ist immer so eine Frage, wie tief das Verständnis gehen soll.

Beispiel T&L. Das ließe sich in 3-4 Sätzen grob erklären. ("Die Grafikkarte bekommt die Transformationsmatrix übermittelt, welche von der CPU berechnet wurde, und transformiert dann alle ankommenden Vertices. Allerdings kann Backface Culling ja erst nach der Transformation gemacht werden, so dass mit T&L die Geometrie-Last über den AGP-Bus zunimmt. Eine 3D-Transformation mit einer 4x4-Matrix erfordert übrigens 16 Multiplikationen und 12 Additionen, wobei alles in Single-Präzision (32 Bit Floating Point) gerechnet wird.")

Aber um das wirklich zu verstehen, müsste man vorher erklären, was Matrizen sind, mit welchen mathematischen Regeln Matrizen verwendet werden, inwiefern man damit abbildende Eigenschaften umsetzen kann, und wie 3D-Grafik überhaupt funktioniert (und was z.B. Backface Culling ist.) Letztlich müsste man die gesamte logische Pipeline aufrollen...

Was eine (mathematische) Matrix ist, lernt man nicht in der Schule. Alleine um die Grundlagen zu legen, die ein volles Verständnis von der T&L-Einheit ermöglichen... und es wäre ja dann auch noch interessant, warum gerade das 32 Bit Floating Point Format verwendet wird, wo FP-Logik doch so teuer (also transistor-aufwändig) ist. Und warum zur Hölle man mit Vektoren rechnet, die nicht 3 Komponenten (X, Y, Z) sondern derer 4 haben (X, Y, Z, W). (W wird z.B. für die perspektische Korrektur bei Texturen verwendet. Warum die Texturkoordinaten perspektivisch korrigiert werden müssen, damit kriegt man auch schon eine halbe Artikel-Seite voll...)


Ein Artikel, der wirklich tief geht, wird von den wenigsten verstanden. Ein Artikel der von vielen verstanden wird, kratzt kaum an der Oberfläche...

Beispiel Shader, genauer gesagt Pixelshader. Hierzu müsste man erst mal eine Fixed Function Pipe auseinander nehmen, die wichtigsten Beleuchtungarten kennen (Flat, Gouraud, Dot3, Phong) und hierzu ist wiederum Geometrie-Wissen erforderlich (Vektoren usw.)

Dann müsste man die Thematik der Combiner aufrollen, danach auf registerprogrammierbare Combiner eingehen, dann auf den Pixelshader der ersten Generation, die Vor- und Nachteile erklären, dann den neuen Ansatz mit Pixelshader 1.4 und 2.0, und vielleicht zur Krönung noch die Unterschiede zu CineFX. Bei allen diesen Dingen wären einige Grundkenntnisse, wie Computerchips funktionieren (was eine ALU ist, wie sie arbeitet, wie das mit den Registern funzt, was Micro-Code ist, usw.) höchst empfehlenswert.


Also das mag jetzt lächerlich klingen, aber die technischen Grundlagen, wie man z.B. aus Halbleiter-Elementen logische Grundfunktionen bauen kann, und wie sich diese zu Addier-Einheiten zusammenschalten lassen, damit fängt es an, wenn man Begriffe wie T&L und Shader wirklich verstehen möchte.
 
Zuletzt bearbeitet:
Ich bewundere solche Menschen. Wie können die alles in ihren Kopf kriegen.:D
Aber Gott sei dank gibt es solche Menschen die wissen worums geht.
 
Original erstellt von passi
Ich bewundere solche Menschen. Wie können die alles in ihren Kopf kriegen.:D
Aber Gott sei dank gibt es solche Menschen die wissen worums geht.

Hehe, das hab i mir au immer gedacht, bloß bei PHP etc., bis ich angefangen habe es zu lernen, das is jetzt ca. 1 1/2 Jahre her. Und jetzt kann ichs :)

Wers verstehen will, der sollte es am besten lernen :)
 
Original erstellt von TheCounter
Wers verstehen will, der sollte es am besten lernen :)

so ist es, ohne sich mit etwas zu beschäftigen wird man nicht schlau daraus :p
 
@aths:

Die Grundlagen hab ich ja da ich eine Ausbildung zum Fachinformatiker-Systemintegration mache. Mir geht geht es nur um die wichtigsten Begriffe und diese müssten schon genau erklärt sein wie du schon sagst, da ich die in meinen Vortrag über Grafikkarten einbauen will. Und da auf den meisten Sites nur lapidare erklärungen sind fragte ich einfach mal hier nach.
 
Original erstellt von DonRodi
@aths:

Die Grundlagen hab ich ja da ich eine Ausbildung zum Fachinformatiker-Systemintegration mache. Mir geht geht es nur um die wichtigsten Begriffe und diese müssten schon genau erklärt sein wie du schon sagst, da ich die in meinen Vortrag über Grafikkarten einbauen will. Und da auf den meisten Sites nur lapidare erklärungen sind fragte ich einfach mal hier nach.
Kennst du das Falksche Schema ("Matrizenmultiplikation")?
 
@DonRodi

Ich stecke auch in der Ausbildung zu Fachinformatiker SI.
Hab meine Präsentation aber bereits hinter mir. Wenn du willst kann ich sie dir per email zusenden.
In ihr werde Grundbegriffe erklärt.
 
Original erstellt von DonRodi
@aths:

Ja.
G00d. Dann weißt du vermutlich, dass Matrizen als Abbildungsvorschriften aufgefasst werden können. Diese umzusetzen, wird "transformieren" genannt. Das ist erst mal allgemein zu sehen. (Und das Transformierte mit der Inversen der Matrix multipliziert ergibt dann wieder das Original.)

Die Drehung eines Punktes im Raum um eine Achse kann man noch "zu Fuß" mit Sinus und Cosinus machen. Will man um 2 oder 3 Achsen drehen, geht das nicht mehr (jedenfalls nicht mehr so einfach.) Man berechnet also für jede Achse die Transformationsmatrix (wo natürlich Sinus und Cosinus wieder auftreten.) Diese Matrizen multipliziert man, und mit der Ergebnismatrix hat man dann eine Matrix, die man mit dem Vektor multiplizieren kann. Der Ergebnis-Vektor ist dann entsprechend transformiert. Auch Skalierungen und Verschiebungen kann man damit umsetzen, nicht nur Rotationen.

Normalerweise ist ein Objekt um den Koordinaten-Ursprung gedacht. Hat man nur ein Objekt, ist es praktisch gleich, ob man das Objekt oder die Kamera-Position transformiert. Sobald man mehrere Objekte hat, muss die Kamera unabhängig behandelt werden. In praxi fasst man das dann natürlich wieder zusammen, da jedes Objekt aus mehreren Vertices (also Eckpunkten) besteht.

Die T&L-Unit nach DX7 transformiert nun alle ankommenden Vertices mit der vorher auf dem Chip gespeicherten (aber von der CPU berechneten) Transformationsmatrik. Aus Effizienzgründen gibt es auch einen kleinen Vertex-Cache, und man kann (indizierte) Vertices direkt auf die Grafikkarte laden, um die Geometrie-Last über den AGP-Bus zu senken.

Ein Vertex Shader 1.1 kann mehr: Statt nur einer Matrix, lässt sich ein "Programm" auf den Chip laden. Dieses darf bis zu 128 Schritte umfassen. Sprünge und Programmverzweigungen sind nicht erlaubt. Es gibt aber die Möglichkeit, über Umwege in gewissen Grenzen ein "if" quasi zu simulieren.

Jeder Eckpunkt kann nun mehrere Normalen und Material-Farben bekommen. Das lässt sich nutzen, um zusätzliche Informationen dem Vertexshader-Programm zu übergeben, welcher dann diese Variablen je nach dem Shader speziell auswertet. Die CPU kann hier von echter Arbeit befreit werden, zumal auch, was die Beleuchtung angeht, komplexere Dinge möglich sind. (So richtig gut wird das aber erst im Zusammenspiel mit dem Pixelshader, welcher ja auf bestimmte Werte, die aus dem Vertexshader rauskommen, zurück greift.)

Praktisch ist das alles etwas aufwändiger, der Vertex Shader kann mit Vektoren (mit 4 Komponenten) und Skalaren (einzelnen Zahlen) umgehen. Sinus kennt erst der Vertex Shader 2.0. Um einen Sinus auf VS.1.1 umzusetzen, wird mit einigen Befehlszeilen die Taylorsche Reihe angenähert, womit sich ganz gut Näherungswerte berechnen lassen. Der VS.2.0, der Sinus (und Cosinus) nativ unterstützt, hätte hingegen die Möglichkeit, per Lookup-Table (am besten mit 2 Werten, und nachfolgender Interpolation) einen Sinus deutlich schneller zu berechnen, ganz exakt ist dieses Verfahren aber auch nicht. (Vorberechnete Matrizen können nach wie vor durchaus noch von der CPU kommen.)
 
Zuletzt bearbeitet:
Zurück
Oben