Frage

Was ist Vertex und Pixel Shadern?

Was ist der Unterschied zwischen ihnen? Welches ist die beste?

War es hilfreich?

Lösung

Pixel Shader ist eine GPU (Graphic Processing Unit) Komponente, die so programmiert werden können, zu bedienen auf einer pro-Pixel-Basis und kümmert sich um Dinge wie Beleuchtung und Bump Mapping.

Vertex Shader ist auch GPU-Komponente und ist so programmiert, auch eine bestimmte Montage-ähnliche Sprache mit , wie Pixel-Shadern, sondern auf die Szenengeometrie orientiert sind und Dinge wie das Hinzufügen von cartoony Silhouettenkanten zu Objekten tun, etc.

Weder ist besser als die andere, sie haben jeweils ihre spezifische Anwendungen. Die meisten modernen Grafikkarten DirectX 9 oder besser unterstützen, gehören diese Fähigkeiten.

Es gibt mehrere Ressourcen im Internet für die Gewinnung eines besseres Verständnis dafür, wie diese Dinge zu verwenden. NVidia und ATI vor allem sind gute Ressourcen für Dokumente zu diesem Thema.

Andere Tipps

DirectX 10 und OpenGL 3 eingeführt, um den Geometrie-Shader als dritter Typ.

In Rendering-Pipeline, um -

Vertex Shader - nimmt einen einzigen Punkt und kann es anpassen. Kann verwendet werden, um herauszufinden Komplex ** Vertex Beleuchtung calcs als Einrichtung für die nächste Stufe und / oder verziehen die Punkte um (Wobble, Maßstab, etc.).

jedes resultierende primitive wird auf den übergebenen

Geometry Shader - nimmt jeder transformierte primitive (Dreieck, etc.) und kann auf sie Berechnungen durchführen. Dies können neue Punkte hinzufügen, nehmen Sie sie weg oder sie bewegen sich je nach Bedarf. Dies kann verwendet werden Detailebene hinzuzufügen oder zu entfernen dynamisch aus einem einzigen Basisnetz, erstellen mathematische Maschen basierend auf einem Punkt (für komplexe Partikelsysteme) und andere ähnliche Aufgaben.

jeder resultierende primitiv wird Abtastzeile umgewandelt und jedes Pixel der Spannen Abdeckungen durch die

übergeben werden

Pixel Shader (Fragment Shader in OpenGL) - Berechnet die Farbe eines Pixels auf dem Bildschirm auf das, was der Vertex-Shader geht in gebundenen Texturen und benutzer addierten Daten. Dies kann nicht den aktuellen Bildschirm überhaupt lesen, nur herausfinden, was Farbe / Transparenz, die Pixel für das aktuelle primitive sein sollte.

diese Pixel dann auf dem aktuellen Zugspeicher gestellt bekommen (Bildschirm, Backbuffer, render-to-Textur, was auch immer)

Alle Shadern können globale Daten zugreifen wie die Weltsicht Matrix und der Entwickler in einfachen Variablen passieren kann sie für die Beleuchtung oder andere Zwecke zu verwenden. Shaders werden in einer Assembler-ähnlichen Sprache verarbeitet, aber die moderne DirectX und OpenGL-Versionen haben in High-Level-c-ähnlichen Sprache Compiler eingebaut genannt HLSL und GLSL bzw. gebaut. NVidia auch einen Shader-Compiler CG genannt, die auf beiden APIs funktionieren.

[bearbeiten die falsche Reihenfolge zu reflektieren ich vorher hatte (Geometrie-> Vertex-> Pixel), wie in einem Kommentar zur Kenntnis genommen.]

Es gibt jetzt 3 neue Shader in DirectX 11 für Tessellation verwendet. Der neue komplette Shader-Auftrag ist Vertex-> Rumpf-> Tessellation-> Domain-> Geometrie-> Pixel. Ich habe nicht diese neuen und doch so nicht das Gefühl qualifiziert verwendet, um sie genau zu beschreiben.

Vertex und Pixel Shader bietet verschiedene Funktionen innerhalb der Pipeline-Grafiken. Vertexshader nehmen und Prozess Vertex-Daten (Positionen, Normale, texcoords).

Pixel (oder genauer gesagt, Fragment) Shadern nehmen Werte von den in der Vertex-Shader verarbeitet werden interpoliert und Pixelfragmente erzeugen. Die meisten der „cool“ Zeug ist in Pixel-Shadern gemacht. Dies ist, wo Dinge wie Textur-Lookup und Beleuchtung statt.

DirectX Spezifisch:

Shader:

Set von Programmen, die zusätzlich grafische Funktionen zu den Objekten implementiert, die nicht in der festen Rendering-Pipeline definiert ist. Aus diesem Grund können wir unsere eigene grafische Effekte nach unseren Bedürfnissen haben -. Dh sind wir nicht mehr auf vordefinierte begrenzt „fixiert“ Operationen.

HLSL (High Level Shading Language):

HLSL ist eine Programmiersprache wie C ++, die verwendet wird Shadern (Pixel Shaders / Vertex Shaders) zu implementieren.

Vertex Shaders:

Ein Vertex-Shader ist ein Programm auf der Grafikkarte des GPU ausgeführt, einzeln arbeitet auf jedem Scheitelpunkt. Dies erleichtert wir können unseren eigenen benutzerdefinierten Algorithmus schreiben mit der Vertex an der Arbeit.

Pixel Shaders:

Ein Pixel-Shader ist ein Programm auf der Grafikkarte des GPU ausgeführt während die Rasterisierungsprozess für jedes Pixel. Es gibt uns eine Möglichkeit, den Zugang / einzelne Pixel direkt manipulieren. Dieser direkte Zugriff auf Pixel ermöglicht es uns, eine Vielzahl von Spezialeffekten, wie Multitexturing zu erreichen, pro Pixel-Beleuchtung, Tiefenschärfe, Wolkensimulation, Brandsimulation und ausgefeilte Schattentechniken.

Hinweis: sollten vor der Verwendung Sowohl Vertex Shaders und Pixel Shaders (Programme) kompiliert werden mit spezifischer Version von Compiler. Compilation kann wie ein Aufruf einer API mit erforderlichen Parameter wie Dateiname, Haupteingabefunktion usw. erfolgen,

In Bezug auf die Entwicklung ein Pixel-Shader ist ein kleines Programm, das individuell auf jedes Pixel arbeitet, ähnlich ein Vertex-Shader auf jeden Vertex arbeitet individuell.

Diese können verwendet werden, um spezielle Effekte zu erzeugen, Schatten, Beleuchtung, etc ...

Da jedes Pixel / Vertex auf betrieben wird individuell diese Shadern eignen sich für die hochparallele Architektur moderner Grafikprozessoren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top