Shader Programmierung Flashcards

(24 cards)

1
Q

Was sind Shader?

A

Shader sind Programme, die auf der GPU ausgeführt werden, um Grafikeffekte wie Beleuchtung, Texturierung und Oberflächeneffekte effizient zu berechnen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Wo werden Shader in der Grafikpipeline verwendet?

A
  1. Vertex Shader – Verarbeitet jeden Vertex, transformiert ihn und interpoliert Attribute.
  2. Fragment Shader (Pixel Shader) – Berechnet für jedes Pixel die endgültige Farbe basierend auf Licht, Texturen und Materialien.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wie ist die Interaktion zwischen CPU und GPU bei Shadern?

A
  • CPU: Definiert die Geometrie, setzt Shader-Parameter und sendet Zeichenbefehle.
  • GPU: Führt die Vertex Shader und Fragment Shader aus, um das endgültige Bild zu berechnen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie ist ein typischer Ablauf in einer Shader-basierten Anwendung?

A
  1. Initialisierung: Vertex-Shader und Fragment-Shader werden kompiliert und an die GPU übergeben.
  2. Vertex-Transformation: Die Vertex-Daten werden verarbeitet und in Bildschirmkoordinaten umgerechnet.
  3. Rasterisierung: Polygone werden in Pixel umgewandelt.
  4. Fragment-Shader: Berechnung der Farbwerte pro Pixel.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Welche Shader-Sprachen gibt es?

A
  • GLSL (Graphics Library Shading Language) OpenGL/WebGL
  • HLSL (High-Level Shader Language) DirectX
  • WGSL (WebGPU Shader Language) WebGPU
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Welche speziellen Datentypen gibt es in GLSL?

A
  • vec2, vec3, vec4 – Vektoren
  • mat2, mat3, mat4 – Matrizen
  • sampler2D – Textur-Sampler
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Welche wichtigen GLSL-Funktionen gibt es?

A
  • dot(v1, v2) – Skalarprodukt
  • normalize(v) – Normierung eines Vektors
  • reflect(I, N) – Reflexionsberechnung
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Welche Variablentypen gibt es in GLSL?

A
  • attribute (in WebGL1) / in (WebGL2)
    -> Eingabedaten für den Vertex Shader (Position, Texturkoordinaten).
  • uniform
    -> Konstante Werte, die für alle Vertices oder Pixel gelten (z. B. Transformationsmatrizen, Lichtquellen).
  • varying (WebGL1) / out (WebGL2)
    -> Übergangsvariablen zwischen Vertex- und Fragment-Shader.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was ist gl_Position?

A

Eine Pflichtvariable im Vertex Shader, die die Bildschirmposition eines Vertexes angibt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was ist gl_FragColor?

A

Eine Pflichtvariable im Fragment Shader (WebGL1), die die endgültige Farbe eines Pixels angibt.
In WebGL2 wird gl_FragColor durch out vec4 fragColor ersetzt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was ist die Aufgabe eines Vertex Shaders?

A
  • Transformiert Vertex-Koordinaten in Bildschirmkoordinaten.
  • Interpoliert Normalen, Texturkoordinaten und andere Attribute.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Welche Transformationen finden im Vertex Shader statt?

A
  1. Modelltransformation 𝑀_Model– Bringt das Objekt ins Weltkoordinatensystem.
  2. View-Transformation 𝑀_View– Transformiert Weltkoordinaten in Kamerakoordinaten.
    3.Projektions-Transformation 𝑀_Proj– Wandelt Kamerakoordinaten in Bildschirmkoordinaten um.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wie sieht eine Vertex-Shader-Funktion aus?

A

uniform mat4 modelViewProjectionMatrix;
attribute vec3 position;
void main() {
gl_Position = modelViewProjectionMatrix * vec4(position, 1.0);
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Was ist die Aufgabe eines Fragment Shaders?

A
  • Berechnet die Farbe jedes Pixels.
  • Nutzt Lichtquellen, Texturen und Materialien für die Farbwerte.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wie sieht eine einfache Fragment-Shader-Funktion aus?

A

precision mediump float;
uniform vec4 color;
void main() {
gl_FragColor = color;
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was ist ein Diffuse Shader?

A

Berechnet nur die diffuse Reflexion nach dem Lambert’schen Reflexionsgesetz:
𝐼_𝑑=𝐼_𝑙⋅𝑘_𝑑⋅max(0,𝑛⃗⋅𝑙⃗)

17
Q

Was ist ein Phong Shader?

A

Kombiniert ambiente, diffuse und spekuläre Beleuchtung nach dem Phong-Reflexionsmodell:
𝐼=𝐼_𝑎+𝐼_𝑑+𝐼_𝑠

18
Q

Was ist ein Bump Mapping Shader?

A

Simuliert Oberflächenunebenheiten durch Modifikation der Normalen mit einer Textur.

19
Q

Was ist ein Discard Shader?

A

Entfernt Pixel basierend auf einer Bedingung, z. B. Transparenz:

if (texture2D(tex, uv).a < 0.1)
discard;

Warnung: Zu viele discard-Operationen können die Performance negativ beeinflussen.

20
Q

Was ist ein Wave Shader?

A

Erzeugt wellenartige Effekte, indem die Vertex-Position verändert wird:

float wave = sin(time + position.x) * 0.1;
gl_Position.y += wave;

Anwendungen: Wasseranimationen, organische Bewegungen.

21
Q

Wie optimiert man Shader für bessere Performance?

A
  • Vermeidung von zu vielen Berechnungen pro Pixel.
  • Nutzen von Lookup-Tabellen statt teurer Berechnungen (z. B. Sinuswerte aus einer Textur).
  • Reduzierung von Texture-Lookups in Schleifen.
  • Vermeidung unnötiger Discard-Operationen.
22
Q

Was ist der Unterschied zwischen Low-, Medium- und High-Precision in GLSL?

A
  • lowp – Geringste Genauigkeit, spart Rechenleistung.
  • mediump – Gute Balance zwischen Leistung und Präzision.
  • highp – Höchste Präzision, aber teuer in der Berechnung.
23
Q

Welche Shader-Typen gibt es in der Grafikpipeline?

A
  1. Vertex Shader – Transformiert Geometrie.
  2. Fragment Shader – Berechnet Pixel-Farben.
  3. Geometry Shader – Erstellt zusätzliche Geometrie (nicht in WebGL verfügbar).
  4. Compute Shader – Führt GPU-Berechnungen außerhalb der Grafikpipeline aus (nur WebGPU).
24
Q

Was sind die Vorteile von Shadern?

A
  • Ermöglichen realistische Grafikeffekte in Echtzeit.
  • Nutzen die massive Parallelverarbeitung der GPU.
  • Flexibel für viele Anwendungsfälle (z. B. Beleuchtung, Wasser, Schatten).