PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pixel und Vertexshader?


Unregistered
2003-05-06, 14:51:56
Hallo zusammen!

Mir fallen beim Lesen immer wieder die Begriffe Pixel Shader und Vertex Shader auf; was genau ist das eigentlich? Oder 'advanced pixel shader'? Wie hab ich mir das vorzustellen, ist das hardwaremäßig auf einer GraKa integriert? Was genau bewirken sie? Wieso sind so so entscheidend für die Leistung einer GraKa?

Nach einem der ersten Tests der GeForce FX bescheinigten die Ergebnisse der FX eine schlechte VS- und eine schlechte advanced PS-Leistung; wie kommt das zustande?
http://www.anandtech.com/video/showdoc.html?i=1779&p=6

Thx schomma :)

Thowe
2003-05-06, 15:12:28
Verschoben um ggf. auftretende gegenseitige Meinungen auf einen höheren Niveau zu ermöglichen.

ow
2003-05-06, 17:57:28
Unter Pixel- und Vertexshader versteht man (im Sinne der Hardware) die (3D-) Recheneinheiten eines Grafikchips.

Der Vertexshader ist dabei für die Verarbeitung der Geometriedaten verantwortlich. Diese liegen als Punkte im dreidimensionalen Raum vor (Vertices). Der Vertexshader übernimmt Transformation und Beleuchtung dieser Vertices.

Nachdem die Geometrie fertig berechnet ist übernimmt der Pixelshader (PS) die Arbeit. Ein Pixel ist einfach nur ein Bildpunkt, bei 800x600 Bildpunkten hat man 480000 Pixel.
Der PS berechnet nun die Farbe der Bildpunkte, er kann das auf sehr unterschiedliche Arten tun. Sowohl PS wie auch VS sind recht frei programmierbar.

Die Leistung dieser Recheneinheiten bestimmt natürlich die Leistung des Grafikchips.

Da diese Recheneinheiten weiterentwickelt werden, existieren mittlerweile mehrere Versionen von Vertexshader und Pixelshadern.

Ich hoffe, das war jetzt halbwegs verständlich.:)

Unregistered
2003-05-06, 19:16:24
Mit deiner Erklärung und dem teils komplizierten Englisch mit vielen Fachbegriffen der Seiten welche ich durch google gefunden habe, ist mir jetzt zumindest in etwa klar, was PS und VS bewirken sollen. Was soll ich sagen, ziemlich praktisch (jetzt ist mir auch endlich klargeworden, was die Pixel- und Vertexshadertests im 3dmark 2001 SE sollen) :D

Aber noch ein paar Kleinigkeiten: sind PS und VS nun im Prinzip Programme, die in Treibern enthalten sind, oder sind die auf dem Chip? Es geht mir eigentlich nur darum, was PS und VS nun physikalisch sind: Programme, die im GraKa-Chip drinstecken, oder wie muss ich mir das vorstellen?
Und noch eine Frage zu einer Abkürzung: Was bedeutet API?

ow
2003-05-06, 19:27:25
Die Begriffe PS und VS werden für zweierlei Dinge gebraucht:

Einmal die Hardware im Grafikchip und zum zweiten sind es kleine Programme, die eben auf diesen Hardware-Einheiten im Chip ablaufen (deshalb schrieb ich oben "im Sinne der Hardware").

API steht für application programming interface.

Dies ist die Programmierschnittstelle.
Es programmiert ja heute keiner mehr irgendwelche Chips direkt. Das geschieht alles über (Programmier-) Hochsprachen und einheitliche Schnittstellen.
Im Falle von 3D-Grafik sind die gebrächlichsten APIs heute eben OpenGL und D3D (früher zB. auch Glide auf den 3dfx Chips, und noch ein paar andere gibt´s da).

Unregistered
2003-05-06, 19:32:05
Ajo, das war jetzt verständlich für mich. :) Das reicht mir zum grundsätzlichen Verständnis.

Vielen Dank, ow! =)

Fr3aKa$oiD
2003-05-07, 12:34:54
Originally posted by ow
Die Begriffe PS und VS werden für zweierlei Dinge gebraucht:

Einmal die Hardware im Grafikchip und zum zweiten sind es kleine Programme, die eben auf diesen Hardware-Einheiten im Chip ablaufen (deshalb schrieb ich oben "im Sinne der Hardware").

API steht für application programming interface.

Dies ist die Programmierschnittstelle.
Es programmiert ja heute keiner mehr irgendwelche Chips direkt. Das geschieht alles über (Programmier-) Hochsprachen und einheitliche Schnittstellen.
Im Falle von 3D-Grafik sind die gebrächlichsten APIs heute eben OpenGL und D3D (früher zB. auch Glide auf den 3dfx Chips, und noch ein paar andere gibt´s da).

du hast das so schön erklärt hast du nicht mal lust einen sticky mit den ganzen fachbegriffen ala tmu etc im grafikchips forum zu posten ??

wenn die experten hier am werk sind versteht man nur noch bahnhof , das würde zumindestens einiges erleichtern ;)

betasilie
2003-05-07, 13:00:48
Originally posted by Fr3aKa$oiD


du hast das so schön erklärt hast du nicht mal lust einen sticky mit den ganzen fachbegriffen ala tmu etc im grafikchips forum zu posten ??

:D Wenn ow den kleinen Finger reicht, bekommt er gleich den ganzen Arm abgerissen. ;)

Einer sollte mal einen Artikel schreiben, dass ist besser als ein Sticky.

@Threadstarter
Übrigens sind VS und PS völlig verschiedene Einheiten. Auch wenn der Name ähnlich klingen mag oder beide Einheiten mitlerweile unter einem Überbegriff zusammengefasst werden, sind sie technisch völlig verschieden. Der (die) VS belegen mitlerweile einen großen Anteil der GPU-Fläche, die PS hingegen sind relativ klein, liegen an einer ganz anderen Stelle im logischen Aufbau und sind z.B. für Beleuchtung, Textureffekte, wie Bumbmapping u.ä. verantwortlich.

x-dragon
2003-05-07, 13:12:55
Originally posted by betareverse

:D Wenn man den kleinen Finger reicht, bekommt man gleich den ganzen Arm abgerissen. ;)

Einer sollte mal einen Artikel schreiben, dass ist besser als ein Sticky. Das wäre auf jeden Fall mal eine nette Sache, aber eine Art Lexikon wäre glaube ich auch recht brauchbar :).

aths
2003-05-07, 13:49:47
Originally posted by betareverse
@Threadstarter
Übrigens sind VS und PS völlig verschiedene Einheiten. Auch wenn der Name ähnlich klingen mag oder beide Einheiten mitlerweile unter einem Überbegriff zusammengefasst werden, sind sie technisch völlig verschieden. Der (die) VS belegen mitlerweile einen großen Anteil der GPU-Fläche, die PS hingegen sind relativ klein, liegen an einer ganz anderen Stelle im logischen Aufbau und sind z.B. für Beleuchtung, Textureffekte, wie Bumbmapping u.ä. verantwortlich. Bump Mapping mit p :)

Die PS sind gar nicht so klein. Eine PS-Pipeline ist ein aufwändig, Transistor fressendes Ding. Erst recht, wenn Floating Point Genauigkeit gefordert ist.


Unregistered,

Pixel und Vertex Shader arbeiten mit Registern. Zunächst wird festgelegt, welche Register mit welchen Inhalten gefüllt werden. Dann können die Register-Inhalte mit mathematischen Formel vernüpft bzw. modifiziert werden. Das wird im "Programm" festgelegt, welches ebenfalls "Shader" genannt wird. Bei Pixel Shader 1.0 - 1.3 gibt es einen Block, wo das Textur-Sampling erfolgt, und dann kommen die Verknüpfungs-Befehle. Ab 2.0 können Sampling und Operationen gemischt werden, mit 1.4 hat man immerhin die Möglichkeit, im Shader zwei mal zu sampeln. In jedem Fall gibt es ein Output-Register, dessen Inhalt dann die Pixelfarbe bestimmt.

Vertex Shader transformieren ein Polygon-Eckpunkt. In den Registern stehen also die originalen Eckpunkt-Daten, sowie weitere Parameter, die verwendet werden, um die Transformation vorzunehmen. Dabei ist dank der Programmierbarkeit viel mehr möglich, als eine einfache Matritzenmultiplikation zu bewerkstelligen. Dynamische Geometrie kann z.B. teilweise vom VS berechnet werden, was bei einer klug programmierten Engine die CPU entlastet.

Demirug
2003-05-07, 14:11:51
Als Ergänzung weil die Frage auch gerne kommt.

Ein Vertexshader kann keine Geometrie erzeugen oder löschen. Er kann lediglich die Daten von bereits vorhandene Polygon-Eckpunkte verändert.

Für jeden Polygon-Eckpunkt welcher in den Vertexshader reingeht kommt auch genau wieder ein Eckpunkt heraus.