Computer Graphics: Shader Computer Graphics Shader

Click here to load reader

  • date post

    05-Apr-2015
  • Category

    Documents

  • view

    206
  • download

    1

Embed Size (px)

Transcript of Computer Graphics: Shader Computer Graphics Shader

  • Folie 1
  • Computer Graphics: Shader Computer Graphics Shader
  • Folie 2
  • Computer Graphics: Shader 2 Inhalt Pipeline Memory Resources Input-Assembler Vertex-Shader Geometry-Shader & Stream-Output Rasterizer Pixel-Shader Output-Merger Texturen Mipmaps Koordinaten Filtering 3D Rume Object Space World Space View Space Projection Space Screen Space Shader Beispiel
  • Folie 3
  • Computer Graphics: Shader 3 Pipeline Drei programmierbare Stufen Vertex-Shader Geometry-Shader Pixel-Shader Alle anderen Stufen sind nur ber Zustnde einstellbar Quelle: [DX07]
  • Folie 4
  • Computer Graphics: Shader 4 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]
  • Folie 5
  • Computer Graphics: Shader 5 Input-Assembler Liest Daten aus einem Index Buffer und ein oder mehreren Vertex Buffern Setzt die gelesenen Daten zu Primitiven zusammen (assemble): Linien Dreiecken ... Fgt systemgenerierte Daten hinzu, z.B. Vertex ID Gibt die Daten an die Pipeline weiter Quelle: [DX07]
  • Folie 6
  • Computer Graphics: Shader 6 Vertex-Shader Bearbeitet die vom Input Assembler bergebenen Vertices Daraus folgt, dass der Vertex-Shader fr jeden Vertex einmal ausgefhrt wird Zu den Aufgaben gehren: Transformation der Position Bearbeitung der Texturkoordinaten Per Vertex Lichtberechnungen Displacement Mapping ... Quelle: [DX07]
  • Folie 7
  • Computer Graphics: Shader 7 Geometry-Shader & Stream-Output Bearbeitet die vom Vertex-Shader ausgegebenen Vertices, die zu Primitiven zusammengesetzt werden Der Geometry-Shader wird fr jedes Primitiv (Linie, Dreieck,...) einmal ausgefhrt Der Geometry-Shader kann Geometrie hinzufgen bzw. aus der Pipeline entfernen (limited geometry amplification und de-amplification) ber den Stream-Output knnen Geometrie Daten in die Memory Resources geschrieben werden Diese Vorgang unterbricht nicht die Pipeline, sondern findet parallel dazu statt Quelle: [DX07]
  • Folie 8
  • Computer Graphics: Shader 8 Rasterizer Zustndig fr Clipping Abbilden auf den Viewport Rasterung in Pixel Interpolation der Vertex Daten Reicht die interpolierten Daten an den Pixel-Shader weiter Quelle: [DX07]
  • Folie 9
  • Computer Graphics: Shader 9 Pixel-Shader Bearbeitet die vom Rasterizer bergebenen Pixel Der Pixel-Shader wird fr jeden Pixel einmal ausgefhrt Zu den Aufgaben gehren: Color Transformationen Per Pixel Lichtberechnungen Texturen samplen Bump Mapping Evtl. Tiefenwert bearbeiten ... Quelle: [DX07]
  • Folie 10
  • Computer Graphics: Shader 10 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]
  • Folie 11
  • Computer Graphics: Shader 11 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 knnen im Shader beliebig oft gelesen (fetch oder sample) werden Es existieren vier verschiedene Textur-Typen: 1D-Texturen 2D-Texturen 3D-Texturen (Volumetextures) Cubemaps
  • Folie 12
  • Computer Graphics: Shader 12 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 reprsentiert Mit jedem neuen Mipmap-Level wird die Auflsung der Textur halbiert Die Grafikkarte kann feststellen welcher Mipmap-Level die nchste Auflsung zur gewnschten Ausgabe besitzt Verringert Aliasing und erhht damit die Bildqualitt Erhhter Speicherverbrauch
  • Folie 13
  • Computer Graphics: Shader 13 Texturkoordinaten Zum Adressieren einer Textur werden je nach Typ 1 bis 3 Koordinaten bentigt 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]
  • Folie 14
  • Computer Graphics: Shader 14 Filtering In den meisten Fllen wird die Textur beim Lesen magnified oder minified Magnification: Mehrere Pixel werden auf einen Texel abgebildet Ergebnis ist grob Lsung durch Linear- bzw. Bilinear-Filtering Minification: Ein einzelner Pixel wird auf mehrere Texel abgebildet Ergebnis besitzt starkes Aliasing Lsung durch Mipmap-Filtering Quelle: [DX07]
  • Folie 15
  • Computer Graphics: Shader 15 3D Rume Object Space World Space View Space Projection Space Screen Space
  • Folie 16
  • Computer Graphics: Shader 16 Object Space & World Space Object Space Oft Model Space genannt Wird bevorzugt zur Erstellung der Objekte verwendet Objekt wird um den Nullpunkt erstellt, dadurch knnen Transformationen (z.B. Rotation) leichter ausgefhrt werden World Space Raum den sich alle Objekte teilen Modelle Licht Kamera...
  • Folie 17
  • Computer Graphics: Shader 17 View Space Auch oft Camera Space genannt Bestimmt die ueren 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 SpaceView Space
  • Folie 18
  • Computer Graphics: Shader 18 Projection Space & Screen Space Bestimmt die inneren Kameraeinstellungen Field of View, Near Clip Plane und Far Clip Plane Fhrt eine perspektivische Transformation bzw. Projektion aus Objekte nher an der Kamera erscheinen grer als weiter entfernte Objekte Objekte werden anhand ihrer Entfernung zur Kamera (z-Wert im View Space) transformiert View Frustum wird auf einen Einheitswrfel 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 Hhe des Frame Buffers (in Pixel) angibt Positive x-Achse verluft nach rechts Positive y-Achse verluft nach unten
  • Folie 19
  • Computer Graphics: Shader 19 Shader Eingabedaten werden in zwei Kategorien unterteilt: Varying Inputs: Variieren fr 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 fr 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
  • Folie 20
  • Computer Graphics: Shader 20 Beispiel
  • Folie 21
  • Computer Graphics: Shader 21 Quellen [DX07] Direct X Documentation 2007 [AMD07] Harnessing the Power of DirectX 10