Computer Graphics Shader Sven Janusch
Inhalt Fixed Function Pipeline Programmable Pipeline Implementierung Applikation Beispiel Sven Janusch 2
Fixed Function Pipeline T&L Pipeline (Transformation and Lighting) Transformation der Vektoren World View Projection Lichtberechnung (pro Vektor) Ambient Diffuse Specular Fog Festgelegte Transformationen und Beleuchtung Schnell aber unflexibel Sven Janusch 3
Progammable Render-Pipeline Teile der Render-Pipeline sind programmierbar Vertex processing Pixel processing Quelle: NVidia CG Dokumentation Zukunft: Geometry Shader, Unified Shader Sven Janusch 4
Vertex Shader Wird für jeden Vektor eines Objektes (Stream) ausgeführt Ein Vertex Shader ersetzt das Vertex Processing der Fixed Function Transformationen und Lichtberechnungen der Fixed Function werden ingoriert Vertex Shader muss mindestens die Vertex Position in Homogeneous Clip Space ausgeben Alle Operationen sind Vektor basierend Aufgaben Transformation Lighting Fog Sven Janusch 5
Pixel Shader Pixel Shader wird für jeden Pixel ausgeführt Ein Pixel Shader arbeitet direkt mit einem Vertex Shader zusammen, d.h. Ausgabe des Vertex Shaders ist gleich der Eingabe des Pixel Shaders Pixel Shader muss mindestens die Pixel Color ausgeben Alle Operationen sind Vektor basierend Aufgaben Texture Mapping Texture blending Color blending Lighting Der Pixel Shader übernimmt nicht Operationen wie Z-Test, Stencil Test, Alpha-Test und Alpha-Blending Sven Janusch 6
Inhalt Fixed Function Pipeline Programmable Pipeline Implementierung Applikation Beispiel Sven Janusch 7
Implementierung Applikation Setzt den Vertex Shader Setzt den Pixel Shader Setzt die passende Vertex Declaration zum aktuellen Vertex Shader Setzt Konstanten, Texturen und Streams Vertex Declaration Beschreibt den Vertex Stream (Vertex Buffer) Aufbau Attribute eines Vektors und deren Größe/Stelle im Speicher Position, Normale, Tangente, Farbe, Wird benötigt um eine Schnittstelle zum Vertex Shader zu schaffen Wird anstatt des FVF (Felxible Vertex Format) der Fixed Function verwendet Sven Janusch 8
Implementierung Varying Inputs (Stream Data) Daten werden für jeden Vektor einzeln angegeben Vertex: Position, Normal, Tangent, Binormal, Color, Texture Coordinates Uniform Inputs (Constants) Allgemeine Daten (für alle Vektoren gleich) Beispiel: Transformation Matrix Light Position Camera Position Output Von der Grafikkarte benötigte Ausgaben: Position, Fog, Point Size Ausgaben die an den Pixel Shader weitergeleitet werden: Texture Coordinates Color Sven Janusch 9
Implementierung Varying Inputs (Interpolated Data) Daten werden für jedes Element einzeln angegeben Fragment: Interpolated Texture Coordinates Interpolated Colors Uniform Inputs (Constants) Allgemeine Daten (für alle Pixel gleich) Beispiel: Textures Light Color Material Colors Output Color für Framebuffer bzw. Rendertarget 0 4 Tiefe (Depth) kann ausgegeben/überschrieben werden Z-Test wird nach dem Pixel Shader ausgeführt Sven Janusch 10
Programmierung Assembler Hochsprache Cg (C for Graphics) HLSL (High Level Shader Language) Effect File enthält Techniques and Passes Renderstates, Samplerstates, Sven Janusch 11
Inhalt Fixed Function Pipeline Programmable Pipeline Implementierung Applikation Beispiel Sven Janusch 12
Beispiel Sven Janusch 13