PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was sind Shader?


WhiteVelvet
2004-09-03, 12:00:07
Klingt wie eine dumme Frage, aber ich wills nun endlich wissen. Was genau sind Shader? Was machen Pixel- und Vertex-Shader und wo liegt der Unterschied zwischen 1.1 und 3.0 und könnt Ihr mir Beispiele geben, wo sowas in Aktion tritt? Bisher weiss ich nur, dass man Shader zB für spiegelnde Oberflächen wie Wasser braucht, oder auch Lichtreflexionen. Nun will ich es genau wissen :) Schonmal danke für die Aufklärung!

aths
2004-09-03, 12:47:18
Shader sind in diesem Kontext kleine Programme, die Ähnlichkeit mit Assemblercode aufweisen. Höhere Shaderversionen haben einen erweiterten Befehlssatz und teilweise einen anderen Programm-Aufbau.

Vertexshader enthalten Instruktionen, wie genau der Eckpunkt transformiert bzw. beleuchtet wird. Die CPU muss hierfür meistens noch bestimmte Daten berechnen, ehe der Vertexshader in Aktion treten kann.

Dann gibt es Interpolatoren, die Daten die nach der Transformation nur pro Eckpunkt vorliegen, über das gesamte Dreieck interpolieren.

Pixelshader bestimmen, welche Texturen auf welche Art mit den Daten aus den Interpolatoren mathematisch verknüpft werden.

mirp
2004-09-03, 15:35:04
Laufen dann diese Shader auf Shadern? Diese Namensgleichheit finde ich etwas verwirrend.

Kleines Beispiel aus den News vom 1. September 2004:

Gegenüber den x-bit Labs hat nVidia die Zahl von 5 Vertex Shadern bei der GeForce 6800 bestätigt, ohne allerdings auf die GeForce 6800LE einzugehen, welche vermutlich nur deren 4 hat.
Damit sind doch bestimmt keine Programme gemeint. Lange Zeit verband ich mit dem Begriff nur einen Teil einer GPU: programmierbare Einheiten, welche die festverdrahteten Ansätze (T&L, Bumpmapping, etc.) der Vergangenheit ablösen. Aber mit dieser Vorstellung konnte ich einigen Diskussionen kaum folgen. Zum Beispiel bei der bekannten 3DMark03-Debatte um die Mogeleien. Da würden die Treiber Shader austauschen. Was für mich überhaupt keinen Sinn ergab. Bis ich dann irgendwann doch dahintergekommen bin, dass mit Shader eben auch die Programme für diese Einheiten gemeint sind.

DrumDub
2004-09-03, 15:52:48
mirp

ist halt etwas verwirrend, wenn diese verkürzten formen verwendet werden.

natürlich müsste es vertex/pixel shader einheiten bzw. units heißen und vertex/pixel shader programme bzw. programs.

betasilie
2004-09-03, 16:00:22
Jep, Shader sind einerseits Code oder aber es sind die entsprechenden Einheiten auf dem Silizium gemeint, die mit Shadercode gefüttert werden.

Piffan
2004-09-03, 21:20:55
Klingt wie eine dumme Frage, aber ich wills nun endlich wissen. Was genau sind Shader? Was machen Pixel- und Vertex-Shader und wo liegt der Unterschied zwischen 1.1 und 3.0 und könnt Ihr mir Beispiele geben, wo sowas in Aktion tritt? Bisher weiss ich nur, dass man Shader zB für spiegelnde Oberflächen wie Wasser braucht, oder auch Lichtreflexionen. Nun will ich es genau wissen :) Schonmal danke für die Aufklärung!

Pixel- Shader sind für Texturberechnungen, Farbwerte, Transparenzen, Licheffekte und dergl. Die Versionen haben zu tun mit der Präzision und den Programmlängen/Strukturen.

Vertexshader sind für Geometrieberechnungen und können so der CPU ne Menge Arbeit abnehmen.....

Die neuesten Shader- Units der GPUs (das ist die Hardware, die die Shader abarbeitet) sind bedingt programmierbar, so dass sie im Prinzip auch zweckentfremdet werden können. Statt Shader für Grafik jubelt man ihnen halt andere Programme unter. So sollen die neuen Chips bald Videos encoden können (PCI- Express ist angeblich nötig ;)

Oder noch verrückter (Meldung in den 3dcenter- News: Irgend ne Firma will die Grafikhardware zur Berechnung von Soundeffekten nutzen...

Ist zwar recht grob erklärt, aber als Laie reichts bei mir mit dem Verständnis halt nicht für mehr......

aths
2004-09-06, 17:38:05
Na die "Shader-Einheiten" sind eigentlich nur stupide FPUs, die vom Treiber gefüttert werden. Die "5 Vertexshader" (manchmal auch "Vertexshader-Engines" genannt) sind wieder so eine Marketing-Sache. Soweit ich weiß kann NV40 zu jedem Zeitpunkt nur einen Vertexshader ausführen, wobei dieser jedoch für parallele Berechnungen in mehreren Instanzen (auf verschiedenen Einheiten verteilt) laufen kann, wobei sich sogar der Instruction Pointer jeweils unterscheiden darf. Die 5 Vertexshader teilen sich 4 physikalische TMUs, der vollständige 3.0-compliant VS ist physikalisch nicht 5x (oder gar 6x) vorhanden.