Shader (HLSL) - Softwarepraktikum · Struktur und Inhalt Einleitung Shader Beispiele Shader in XNA...
Transcript of Shader (HLSL) - Softwarepraktikum · Struktur und Inhalt Einleitung Shader Beispiele Shader in XNA...
Sopra SS08 211.06.2008
Struktur und Inhalt
� Einleitung� Shader� Beispiele� Shader in XNA� NVIDIA FX Composer
Sopra SS08 311.06.2008
Einleitung - Rendering in XNA
� Shader basiertes Rendering� vertex daten � pixel output
� Grafikverarbeitung auf der Grafikkarte� hohe Performance
� XNA „BasicEffect“ oder eigene Shader
Sopra SS08 411.06.2008
Einleitung - Was ist ein Shader?
� beschreibt Darstellung von Vertices und Pixeln
� Möglichkeit Vertex-/Pixeldaten zu manipulieren (Farbe, Position, Textur,…)
� Lighting, Shading, Transparenz, Multitexturing, Postprocessing (z.B. Motion Blur), …
� für fortgeschrittene Grafikelemente ist der „BasicEffect“ von XNA nicht ausreichend
Sopra SS08 511.06.2008
Einleitung - FFP
� vor 2001: Kommunikation mit Grafikhardware über Fixed Function Pipeline (FFP)
� zunehmende Komplexität von Hardware, DirectXAPI, FFP
� neuer Ansatz für individuellere Grafikgestaltung: direkte Ausführung von Assembler Code
� „Shader“
Sopra SS08 611.06.2008
Einleitung - HLSL
� mit Assembler direktes Arbeiten auf der Hardware, aber komplex und aufwendig
� Entwicklung von Hochsprachen für die ShaderProgrammierung
� Microsoft: High Level Shader Language (HLSL)� HLSL .fx Dateien direkt von XNA unterstützt
� HLSL ähnelt stark C#-Syntax (z.B. Kontrollfluss for-/while-/do-Schleifen, if-else etc.)
Sopra SS08 711.06.2008
Struktur und Inhalt
� Einleitung� Shader� Beispiele� Shader in XNA� NVIDIA FX Composer
Sopra SS08 811.06.2008
ShaderZiel: Anzeige verschieden-
farbiger Pixel die eine Spielszene formen
� Bereitstellen von VertexDaten (Manuell / Models / Sprites)
� Übergabe der VertexDaten an die GPU
Sopra SS08 911.06.2008
Shader
� Übergabe von Parametern aus XNA
� Vertex Processing:� Transformation des Vertex
Input
� Rasterization & Interpolation
Sopra SS08 1011.06.2008
Shader
� Pixel Processing:� Verarbeitung jedes
interpolierten Pixels
� Z-Buffer:� Auflösen von
Verdeckungen
� Frame Buffer:� Finales Bild bestehend
aus Pixeln
Sopra SS08 1111.06.2008
Vertex Shader (VS)
� Berechnungen für jeden Vertex der Szene� Manipulation von Vertex Daten� Berechnung von Daten für Pixel Shader� z.B. per-vertex Lighting, Positionierung,
Texturkoordinaten etc.� In/Out: Position, Farbe/Texturkoordinaten,
Normalen…
Sopra SS08 1211.06.2008
Pixel Shader (PS)
� Berechnungen für jeden Pixel der Szene� z.B. per-pixel lighting, Färbung, Texture
Sampling etc.� teurer als per-vertex Berechnungen� In: interpolierter Output vom VS� Out: finale Farbe (des Pixels)
Sopra SS08 1311.06.2008
Techniques / Passes
� Pass: definiert ein Paar von Vertex- und Pixel Shader das im entsprechenden Durchgang genutzt wird
� Technique: beschreibt eine „Maltechnik“ mit mindestens einem Pass
� HLSL Syntax, Typen, intrinsic Functions etc. in den Beispielen
Sopra SS08 1411.06.2008
Struktur und Inhalt
� Einleitung� Shader� Beispiele� Shader in XNA� NVIDIA FX Composer
Sopra SS08 3611.06.2008
Struktur und Inhalt
� Einleitung� Shader� Beispiele� Shader in XNA� NVIDIA FX Composer
Sopra SS08 4011.06.2008
Struktur und Inhalt
� Einleitung� Shader� Beispiele� Shader in XNA� NVIDIA FX Composer
Sopra SS08 4111.06.2008
NVIDIA FX Composer� NVIDIA FX Composer 2.0 / 2.5 Beta 2
� HLSL Syntax Highlighting� Shader Compiler� Shader Datenbank� uvm.
� NVIDIA Shader Debugger Beta 2
� http://developer.nvidia.com/