Computer Graphics: Shader Computer Graphics Shader.

21
Computer Graphics: Shader Computer Graphics Shader

Transcript of Computer Graphics: Shader Computer Graphics Shader.

Page 1: Computer Graphics: Shader Computer Graphics Shader.

Computer Graphics: Shader

Computer GraphicsShader

Page 2: Computer Graphics: Shader Computer Graphics Shader.

2

Computer Graphics: Shader

Inhalt

• Pipeline– Memory Resources– Input-Assembler– Vertex-Shader– Geometry-Shader & Stream-Output– Rasterizer– Pixel-Shader– Output-Merger

• Texturen– Mipmaps– Koordinaten– Filtering

• 3D Räume– Object Space– World Space– View Space– Projection Space– Screen Space

• Shader– Beispiel

Page 3: Computer Graphics: Shader Computer Graphics Shader.

3

Computer Graphics: Shader

Pipeline

• Drei programmierbare Stufen– Vertex-Shader– Geometry-Shader– Pixel-Shader

• Alle anderen Stufen sind nur über Zustände einstellbar

Quelle: [DX07]

Page 4: Computer Graphics: Shader Computer Graphics Shader.

4

Computer Graphics: Shader

Memory Resources

• Symbolisiert den Arbeitsspeicher der Grafikkarte

• Ressourcen:– Vertex Buffer– Index Buffer– Texturen– Shaderkonstanten– Stateblocks– ...

• Stateblocks werden unterteilt in:– Rasterizer States– Depth-Stencil States– Sampler States– Blend States

Quelle: [DX07]

Page 5: Computer Graphics: Shader Computer Graphics Shader.

5

Computer Graphics: Shader

Input-Assembler

• Liest Daten aus einem Index Buffer und ein oder mehreren Vertex Buffern

• Setzt die gelesenen Daten zu Primitiven zusammen (assemble):

– Linien– Dreiecken– ...

• Fügt systemgenerierte Daten hinzu, z.B. Vertex ID

• Gibt die Daten an die Pipeline weiter

Quelle: [DX07]

Page 6: Computer Graphics: Shader Computer Graphics Shader.

6

Computer Graphics: Shader

Vertex-Shader

• Bearbeitet die vom Input Assembler übergebenen Vertices

• Daraus folgt, dass der Vertex-Shader für jeden Vertex einmal ausgeführt wird

• Zu den Aufgaben gehören:– Transformation der Position– Bearbeitung der Texturkoordinaten– Per Vertex Lichtberechnungen– Displacement Mapping– ...

Quelle: [DX07]

Page 7: Computer Graphics: Shader Computer Graphics Shader.

7

Computer Graphics: Shader

Geometry-Shader & Stream-Output

• Bearbeitet die vom Vertex-Shader ausgegebenen Vertices, die zu Primitiven zusammengesetzt werden

• Der Geometry-Shader wird für jedes Primitiv (Linie, Dreieck, ...) einmal ausgeführt

• Der Geometry-Shader kann Geometrie hinzufügen bzw. aus der Pipeline entfernen (limited geometry amplification und de-amplification)

• Über den Stream-Output können Geometrie Daten in die Memory Resources geschrieben werden

– Diese Vorgang unterbricht nicht die Pipeline, sondern findet parallel dazu statt

Quelle: [DX07]

Page 8: Computer Graphics: Shader Computer Graphics Shader.

8

Computer Graphics: Shader

Rasterizer

• Zuständig für „Clipping“• Abbilden auf den Viewport• Rasterung in Pixel• Interpolation der Vertex Daten• Reicht die interpolierten Daten an

den Pixel-Shader weiter

Quelle: [DX07]

Page 9: Computer Graphics: Shader Computer Graphics Shader.

9

Computer Graphics: Shader

Pixel-Shader

• Bearbeitet die vom Rasterizer übergebenen Pixel

• Der Pixel-Shader wird für jeden Pixel einmal ausgeführt

• Zu den Aufgaben gehören:– Color Transformationen– Per Pixel Lichtberechnungen– Texturen samplen– Bump Mapping– Evtl. Tiefenwert bearbeiten– ...

Quelle: [DX07]

Page 10: Computer Graphics: Shader Computer Graphics Shader.

10

Computer Graphics: Shader

Output-Merger

• Kombiniert die vom Pixel-Shader ausgegebenen Farben mit den bereits vorhanden Farben des Buffers (Blending)

• Schreibt den neuen Wert auf den Buffer

Quelle: [DX07]

Page 11: Computer Graphics: Shader Computer Graphics Shader.

11

Computer Graphics: Shader

Texturen

• Ansammlung von “Texel“• Ein Texel bildet die kleinste Einheit einer Textur

– Besteht aus 1 bis 4 Komponenten (je nach Format: RGBA, R, GR, ...)

• Texturen können im Shader „beliebig“ oft gelesen (fetch oder sample) werden

• Es existieren vier verschiedene Textur-Typen:– 1D-Texturen– 2D-Texturen– 3D-Texturen (Volumetextures)– Cubemaps

Page 12: Computer Graphics: Shader Computer Graphics Shader.

12

Computer Graphics: Shader

Mipmaps

• Stammt aus dem lateinischen „multum in parvo“, bedeutet übersetzt soviel wie „Viel in Kleinem“

• Bilden eine Anreihung von Texturen, bei der jede Folgetextur immer das gleiche Bild repräsentiert

• Mit jedem neuen Mipmap-Level wird die Auflösung der Textur halbiert• Die Grafikkarte kann feststellen welcher Mipmap-Level die nächste

Auflösung zur gewünschten Ausgabe besitzt• Verringert Aliasing und erhöht damit die Bildqualität• Erhöhter Speicherverbrauch

Page 13: Computer Graphics: Shader Computer Graphics Shader.

13

Computer Graphics: Shader

Texturkoordinaten

• Zum Adressieren einer Textur werden je nach Typ 1 bis 3 Koordinaten benötigt

• Die Koordinaten werden meistens als u, v und w bezeichnet• Linear adressiert von:

– 0 bis 1 bei 1D-Texturen– (0, 0) bis (1, 1) bei 2D-Texturen– (0, 0, 0) bis (1, 1, 1) bei 3D-Texturen

• Unterschied zwischen DX9 und DX10 in der Adressierung. Unter DX10 befindet sich der erste Texel auf der Koordinate (0, 0)

Quelle: [DX07]

Quelle: [AMD07]

Page 14: Computer Graphics: Shader Computer Graphics Shader.

14

Computer Graphics: Shader

Filtering

• In den meisten Fällen wird die Textur beim Lesen „magnified“ oder „minified“

• Magnification: Mehrere Pixel werden auf einen Texel abgebildet– Ergebnis ist grob– Lösung durch Linear- bzw. Bilinear-Filtering

• Minification: Ein einzelner Pixel wird auf mehrere Texel abgebildet– Ergebnis besitzt starkes Aliasing– Lösung durch Mipmap-Filtering

Quelle: [DX07]

Page 15: Computer Graphics: Shader Computer Graphics Shader.

15

Computer Graphics: Shader

3D Räume

• Object Space

• World Space

• View Space

• Projection Space

• Screen Space

Page 16: Computer Graphics: Shader Computer Graphics Shader.

16

Computer Graphics: Shader

Object Space & World Space

• Object Space– Oft Model Space genannt– Wird bevorzugt zur Erstellung der Objekte verwendet– Objekt wird um den Nullpunkt erstellt, dadurch können Transformationen

(z.B. Rotation) leichter ausgeführt werden

• World Space– Raum den sich alle Objekte teilen

• Modelle• Licht• Kamera• ...

Page 17: Computer Graphics: Shader Computer Graphics Shader.

17

Computer Graphics: Shader

View Space

• Auch oft Camera Space genannt• Bestimmt die äußeren Kameraeinstellungen

– Position und Ausrichtung• Die Kamera bildet den Ursprung im View Space• Die Ausrichtung der Kamera bildet die z-Achse des View Space

Quelle: [DX07]

World Space View Space

Page 18: Computer Graphics: Shader Computer Graphics Shader.

18

Computer Graphics: Shader

Projection Space & Screen Space

• Bestimmt die inneren Kameraeinstellungen– Field of View, Near Clip Plane und Far Clip Plane

• Führt eine perspektivische Transformation bzw. Projektion aus– Objekte näher an der Kamera erscheinen größer als weiter entfernte Objekte– Objekte werden anhand ihrer Entfernung zur Kamera (z-Wert im View Space)

transformiert

• View Frustum wird auf einen „Einheitswürfel“ abgebildet– In diesem besitzen alle sichtbaren Objekte:

• x- und y-Werte zwischen -1 und +1• z-Werte zwischen 0 und 1

• Screen Space– Bestimmt die Position auf dem Frame Buffer– Die linke, obere Ecke bildet den Ursprung mit der Koordinate (0, 0)– Der letzte Punkt im Raum wird durch Koordinate (w-1, h-1) definiert, wobei w die Breite

des Frame Buffers und h die Höhe des Frame Buffers (in Pixel) angibt– Positive x-Achse verläuft nach rechts– Positive y-Achse verläuft nach unten

Page 19: Computer Graphics: Shader Computer Graphics Shader.

19

Computer Graphics: Shader

Shader

• Eingabedaten werden in zwei Kategorien unterteilt:– Varying Inputs:

• Variieren für jeden Vertex bzw. Pixel• Per Vertex Daten: Position, Normale, Texturkoordinaten, ...• Per Pixel Daten: Texturkoordinaten, Normale, ...• Werden über spezielle Eingaberegister an den Shader übergeben

– Uniform Inputs: • Sind für alle Vektoren, Pixel und Primitive gleich und variieren beim Durchlaufen

der Pipeline nicht• Shaderkonstanten

– Lichtposition– Kameraposition– Transformationsmatrizen– ...

• Texturen

• Ausgabedaten werden über spezielle Ausgaberegister an die Pipeline weitergegeben

Page 20: Computer Graphics: Shader Computer Graphics Shader.

20

Computer Graphics: Shader

Beispiel

Page 21: Computer Graphics: Shader Computer Graphics Shader.

21

Computer Graphics: Shader

Quellen

[DX07] Direct X Documentation 2007

[AMD07] Harnessing the Power of DirectX 10