Computergrafik: Was ist der Unterschied zwischen Vertex-Shadern und Pixel-Shadern?


Antwort 1:

Grafik-Pipeline

Vertex-Shader

  • Programme, die einmal pro Scheitelpunkt zu Beginn der Pipeline ausgeführt werden. Scheitelpunkte können nicht erstellt oder zerstört werden. Weiß nicht, zu welchem ​​Grundelement sie gehören.

Pixel-Shader

  • Programme werden einmal pro Fragment spät in der Pipeline ausgeführt. Sie können nicht auf andere Scheitelpunkte oder Pixel zugreifen. Berechnet Opazität, Farbe, Z-Wert und Texturkoordinaten.

Feng Shading

Feng-Schattierung

pro Pixel;

Phong Reflexionsmodell

  • Transformieren Sie an jedem Scheitelpunkt die Position und Normalen vom Objektraum in den Weltraum. Interpolieren und normalisieren Sie bei jedem Pixel die Oberflächennormalen und addieren Sie die verschiedenen Beleuchtungskomponenten (Umgebung + diffus + spiegelnd), um die endgültige Pixelfarbe zu berechnen.

OpenGL-Tutorials

variierendes vec3 N; variierendes vec3 v; void main (void) {v = vec3 (gl_ModelViewMatrix * gl_Vertex); N = normalisieren (gl_NormalMatrix * gl_Normal); gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; }}
variierendes vec3 N; variierendes vec3 v; void main (void) {vec3 L = normalisieren (gl_LightSource [0] .position.xyz - v); vec3 E = normalisieren (-v); vec3 R = normalisieren (-reflektieren (L, N)); // ambient vec4 Iamb = gl_FrontLightProduct [0] .ambient; // diffuse vec4 Idiff = gl_FrontLightProduct [0] .diffuse * max (Punkt (N, L), 0.0); Idiff = Klemme (Idiff, 0,0, 1,0); // specular vec4 Ispec = gl_FrontLightProduct [0] .specular * pow (max (Punkt (R, E), 0,0), 0,3 * gl_FrontMaterial.shininess); Ispec = Klemme (Ispec, 0,0, 1,0); // Gesamtfarbe gl_FragColor = gl_FrontLightModelProduct.sceneColor + Iamb + Idiff + Ispec; }}

Antwort 2:

Was ist ein Vertex Shader?

Vertex Shader

Beachten Sie, dass die Shader Tessellation und Geometry optional sind.

Vertex Shader-Eingaben

Attribute

Uniformen

Schreibgeschützt

Positionen, Normalen und UV-Koordinaten

ALLE

Vertex Shader-Ausgaben

gl_Position

Schreibgeschützt

variieren / aus

Attribute

variieren / aus

Uniform

Was ist ein Fragment Shader (auch bekannt als Pixel Shader)?

Uniform

Rasterizer

Eingaben in einen Fragment Shader

Scheitel

Tessellation

Geometrie-Shader

eben

variieren / aus

  • Texturkoordinaten: Wird als einer der Parameter in der Funktion textur () verwendet. Per-Vertex-Reflexionsvektoren: Wird bei Umgebungszuordnungen, Würfelzuordnungen oder Operationen mit Reflexion verwendet. Per-Vertex-Refraktionsvektoren: Werden bei Würfelzuordnungen oder Operationen mit Refraktionen verwendet Geometrische Koordinaten in Modell- oder Ansichtskoordinaten. Lichtintensität: Wird in Szenen mit Scheitelpunktbeleuchtung verwendet. Entfernungsvektoren von Scheitelpunkten zu Lichtquellen: Wird für Punktbeleuchtung / Phong-Schattierung verwendet.

Ausgaben eines Fragment Shader

vec4

Graphics Shaders: Theorie und Praxis, Zweite Ausgabe: Mike Bailey, Steve Cunningham: 9781568814346: Amazon.com: Books


Antwort 3:

Was ist ein Vertex Shader?

Vertex Shader

Beachten Sie, dass die Shader Tessellation und Geometry optional sind.

Vertex Shader-Eingaben

Attribute

Uniformen

Schreibgeschützt

Positionen, Normalen und UV-Koordinaten

ALLE

Vertex Shader-Ausgaben

gl_Position

Schreibgeschützt

variieren / aus

Attribute

variieren / aus

Uniform

Was ist ein Fragment Shader (auch bekannt als Pixel Shader)?

Uniform

Rasterizer

Eingaben in einen Fragment Shader

Scheitel

Tessellation

Geometrie-Shader

eben

variieren / aus

  • Texturkoordinaten: Wird als einer der Parameter in der Funktion textur () verwendet. Per-Vertex-Reflexionsvektoren: Wird bei Umgebungszuordnungen, Würfelzuordnungen oder Operationen mit Reflexion verwendet. Per-Vertex-Refraktionsvektoren: Werden bei Würfelzuordnungen oder Operationen mit Refraktionen verwendet Geometrische Koordinaten in Modell- oder Ansichtskoordinaten. Lichtintensität: Wird in Szenen mit Scheitelpunktbeleuchtung verwendet. Entfernungsvektoren von Scheitelpunkten zu Lichtquellen: Wird für Punktbeleuchtung / Phong-Schattierung verwendet.

Ausgaben eines Fragment Shader

vec4

Graphics Shaders: Theorie und Praxis, Zweite Ausgabe: Mike Bailey, Steve Cunningham: 9781568814346: Amazon.com: Books