Computer Graphics Shader

 Documents

 35 views
of 21
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Description
Computer Graphics: Shader Computer Graphics Shader Computer Graphics: Shader Inhalt ã Pipeline ã Shader – Memory Resources – Beispiel –…
Share
Transcript
Computer Graphics: Shader Computer Graphics Shader Computer Graphics: Shader Inhalt • Pipeline • Shader – Memory Resources – Beispiel – 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 2 Computer Graphics: Shader Pipeline • Drei programmierbare Stufen – Vertex-Shader – Geometry-Shader – Pixel-Shader • Alle anderen Stufen sind nur über Zustände einstellbar Quelle: [DX07] 3 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] 4 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] 5 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] 6 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] 7 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] 8 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] 9 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] 10 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 11 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 12 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] 13 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] 14 Computer Graphics: Shader 3D Räume • Object Space • World Space • View Space • Projection Space • Screen Space 15 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 • ... 16 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 World Space View Space Quelle: [DX07] 17 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 18 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 19 Computer Graphics: Shader Beispiel 20 Computer Graphics: Shader Quellen [DX07] Direct X Documentation 2007 [AMD07] Harnessing the Power of DirectX 10 21
Related Search
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks