23
11.06.2008 Benjamin Bäurle 1 Shader (HLSL) Universität Freiburg - Softwarepraktikum SS08

Shader (HLSL) - Softwarepraktikum · Struktur und Inhalt Einleitung Shader Beispiele Shader in XNA NVIDIA FX Composer. 11.06.2008 Sopra SS08 8 Shader Ziel: Anzeige verschieden-farbiger

  • Upload
    others

  • View
    26

  • Download
    0

Embed Size (px)

Citation preview

11.06.2008 Benjamin Bäurle 1

Shader (HLSL)

Universität Freiburg -Softwarepraktikum SS08

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 1811.06.2008

1. Shader - Färben

� Ergebnis:

Sopra SS08 2311.06.2008

2. Shader - Textur

� Ergebnis:

Sopra SS08 2911.06.2008

3. Shader - vertex-based Lighting

� Ergebnis:

Sopra SS08 3411.06.2008

4. Shader - pixel-based Lighting

� Ergebnis:

Sopra SS08 3511.06.2008

Shader Beispiele

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/

Sopra SS08 4211.06.2008

Quellen

� http://www.riemers.net/� http://creators.xna.com/

� Microsoft - XNA Game Studio Creator‘s Guide -An Introduction to XNA Game Programming -Stephen Cawood, Pat McGee

� Microsoft - XNA Unleashed - Graphics and Game Programming for Xbox 360 and Windows - Chad Carter