186.162 Seminar (mit Bachelorarbeit) 186.175 Seminar aus Computergraphik SS 2011
V11-Shader - Goethe University Frankfurt...7/3/2008 1 Einführungin die Computergraphik Shader...
Transcript of V11-Shader - Goethe University Frankfurt...7/3/2008 1 Einführungin die Computergraphik Shader...
7/3/2008
1
Einführung in die Computergraphik
Shader
25.06.2008
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
Übersicht‣ Geschichte des Realtimerenderns‣ Shader‣ Geschichte der Shader‣ Shaderprogrammierung‣ Andere Verwendungen von Shadern
2
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
B-CGEinführung in die Computergraphik
(Eine kleine) Geschichte des Realtimerenderns
3
7/3/2008
2
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Vertex Operationen Transformation, Clipping & Projektion‣ Rasterizer Color Interpolation v. Punkte & Linien‣ Fragment Operation Overwrite‣ Zeitraum bis 1987
4
Geschichte des Realtimerenderns I
Wireframe
Bild: “Shutterbug”, Pixar
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik 5
Geschichte des Realtimerenderns I
Alle Bilder: “Shutterbug”, Pixar
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Wenige Details sichtbar‣ Keine Beleuchtung‣ Kann missverständlich interpretiert werden‣ Aber: Echtzeitbetrachtung von 3D-Modellen!
6
Geschichte des Realtimerenderns I
Kritik an Wireframe Bildern
7/3/2008
3
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Vertex Operationen Beleuchtungsrechnung & Gouraud-Shading‣ Rasterizer Depth Interpolation‣ Fragment Operation Depth-Buffer, Color Blending‣ Zeitraum 1987 - 1992
7
Geschichte des Realtimerenderns II
Solidfill
Bild: “Shutterbug”, Pixar
Bild: Test Drive 3, Accolade
Bild: Hard Drivin’, Atari
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik 8
Geschichte des Realtimerenderns II
Alle Bilder: “Shutterbug”, Pixar
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Mehr Details sichtbar‣ Tiefeninformationen werden korrekt angezeigt‣ Einfache Schattierungen möglich‣ Immer noch zu wenige Details‣ Beleuchtungsrechnung minimal
9
Geschichte des Realtimerenderns II
Kritik am Solidfill
7/3/2008
4
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Vertex Operationen Textur-Koordinaten-Transformation‣ Rasterizer Textur-Koordinaten-Interpolation‣ Fragment Operation Textur-Auswertung, Antialiasing‣ Zeitraum 1992 - 1999
10
Geschichte des Realtimerenderns III
Texturierung
Bild: “Shutterbug”, PixarBild: Need For Speed, EA
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik 11
Geschichte des Realtimerenderns III
Bild: “Shutterbug”, Pixar
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Deutlich mehr Details sichtbar‣ Illusion von Geometriekomplexität durch Textur‣ Texturqualität entscheidend‣ Feine Oberflächendetails fehlen‣ Beleuchtung kann problematisch sein
12
Geschichte des Realtimerenderns III
Kritik an Texturierung
7/3/2008
5
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Spotlights‣ Beleuchtungsrechnung erfolgt pro Vertex, nicht pro Pixel!‣ Highlights‣ Auf Vertices werden interpoliert‣ Zwischen Vertices sind nicht sichtbar!
13
Geschichte des Realtimerenderns III
Problemsuche
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Lightmaps!‣ Texturen, die Beleuchtung statisch vorgerendert speichern, werden vermischt und
ggf. platziert
14
Geschichte des Realtimerenderns III
Lösungsidee I
Basistextur Lightmap eines Spotlights Basistextur + Lightmap
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Beleuchtungsrechnung pro Pixel‣ Nähere Immitation der Realität‣ Kein künstliches Herausrechnen von systematischen Fehler‣ Wesentlich höherer Berechnungsaufwand‣ Andere Anforderungen an die Hardware
15
Geschichte des Realtimerenderns III
Lösungsidee II
7/3/2008
6
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
B-CGEinführung in die Computergraphik
Shader
16
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Kleine Programme, die auf der GPU ausgeführt werden und Teile der
Renderpipeline ersetzen‣ Shadertypen:‣ Vertex-Shader‣ Pixel-Shader‣ Geometry-Shader‣ Shader existieren auch in Software für Pixars RenderMan, auf die beziehen wir uns
hier aber nicht!
17
Shader
Definition
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik 18
Shader
Shader in der Renderpipeline
Vertex-Shader
Pixel-Shader
Geometry-Shader
7/3/2008
7
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
Wir für jeden einzelnen Vertex ausgeführt!
19
Shader
Vertex-Shader
VertexShader
Input Output
VertexpositionNormaleTexturkoordinateFarbe
MVP-MatrixLichtpositionBinormale, Tangenteetc…
Finale Vertexposition
Input für Pixel-Shader
GlobaleParameter
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Berechnung der finalen Position des Vertex‣ Manipulation des Vertex‣ Projektion‣ Vorberechnungen für den Pixel-Shader‣ Transformation der Vektoren in Koordinatensysteme‣ Berechnung der Vertexfarbe‣ Generierung von Texturkoordinaten‣ Manipulation von Texturkoordinaten
20
Shader
Aufgaben des Vertex-Shaders
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
Wird für jeden gerasterten Pixel ausgeführt!
21
Shader
Pixel-Shader (= Fragment-Shader)
PixelShader
Input OutputAusgabe des Vertex-Shader
Farbe
Tiefe
GlobaleParameter
7/3/2008
8
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Berechnen der Farbe eines Pixels‣ Beleuchtung‣ Texturierung‣ etc…‣ Manipulation der Tiefe‣ Abbruch der Berechnung‣ Achtung:‣ Ausgaben des Vertexshaders werden ggf. interpoliert! � normalisieren!
22
Shader
Aufgabe des Pixel-Shader
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
Wird für jedes Primitiv aufgetrufen
23
Shader
Geometry-Shader
GeometryShader
Input Output
Bestehende Primitive
Zusammenhangs-Informationen…
(Alle)Primitive
GlobaleParameter
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Erzeugung von Primitiven wie z.B.‣ Punkte‣ Linien‣ Dreiecke
aufgrund von verschiedenen (Nachbarschafts-)Bedingungen, Parametern, …‣ Typische Einsatzgebiete‣ Displacementmapping‣ LOD-Systeme‣ Erzeugung eines Schattenvolumens‣ Partikeleffekte
24
Shader
Aufgabe des Geometry-Shaders
7/3/2008
9
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Texturen‣ 1D, 2D, 3D, Cubemaps‣ Vektoren‣ 1D skalare Werte, …‣ 2D Texturkoordinate, ‣ 3D Farben, Positionen‣ 4D Farben+α, homogene Positionen‣ Matrizen‣ 1x1 … 4x4 in allen Kombinationen‣ Alle Parameter werden für alle Shaderinstanzen mit den gleichen Anfangswerten, die das
Programm gesetzt hat instanziiert
25
Shader
„Globale“ Parameter???
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
B-CGEinführung in die Computergraphik
Geschichte der Shader
26
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Erste Erwähnung des Begriffs Shader von Cook in Pixar’s RenderMan 1984‣ RenderMan: leistungsfähiges Offline Rendersystem‣ Einsatz heute u.a.in Hollywood Filproduktionen‣ Funktionsweise ähnlich den Hardware-Shadern
27
Geschichte der Shader 0
Softwareshader (ab 1984)
Bild: Ratatouille, PixarBild: Transformers, DreamWorks
7/3/2008
10
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Erster Ansatz die “Fixed-Function-Pipeline” flexibler zu machen‣ Beschleunigte Vertex-Transformationen‣ Dynamische Beleuchtungseffekte‣ Konfigurierbar, aber nicht programmierbar!‣ GPUs: ‣ NVidia: GeForce256, GeForce 2‣ ATI: Radeon 7000, Radeon 7500
28
Geschichte der Shader I
T&L, DirectX 7 (1999 – 2000)
Bild: Incoming, Rage
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Einfache Programme in Assembler-basierter Sprache‣ Befehlssequenz für Transformation (a.k.a. Vertex-Shader)‣ Verschiedene Konfigurationen für Beleuchtungsrechnung auf Pixelebene‣ Nicht vollständig Programmierbar‣ GPUs: ‣ NVidia: GeForce 3, GeForce 4Ti‣ ATI: Radeon 8500, Radeon 9200
29
Geschichte der Shader II
ASM Shader, DirectX 8 (2000 – 2002)
Bild: Hitman 2: Silent Assasin, IO Interactive
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Voll programmierbare Shadereinheiten‣ C-ähnliche Hochsprachen: HLSL, GLSL, NVidia Cg‣ Limitierungen:‣ Befehle‣ Zugriffe‣ Register (Variablen)‣ GPUs: ‣ NVidia: GeForce FX‣ ATI: Radeon 9500
30
Geschichte der Shader III
Hochsprachen – DirectX 9 (2002 – 2006)
Bild: ATI DirectX 9 SDK, ATI
7/3/2008
11
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Voll programmierbare Shadereinheiten‣ C-ähnliche Hochsprachen: HLSL, GLSL, NVidia Cg‣ Texturzugriffe im Vertex-Shader‣ Dynamische Generierung von Geometrie‣ Unified Shaderunits‣ Weniger Limitierungen!‣ GPUs: ‣ NVidia: GeForce 8300‣ ATI: Radeon HD 2350
31
Geschichte der Shader IV
Geometry Shader - DirectX 10 (ab 2006)
Bild: CryEngine, Crytek
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik 32
Geschichte der Shader IV
DirectX 9 vs. DirectX 10
Bild: Flight Simulator X, Microsoft Bild: CryEngine, Crytek
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
B-CGEinführung in die Computergraphik
Shaderprogrammierung
33
7/3/2008
12
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Seit DirectX 9 gibt es drei Hochsprachen, um Shader zu schreiben:‣ GLSL OpenGL-ShaderLanguage (OpenGL ARB) OpenGL‣ HLSL HighLevelShaderLanguage (MS) DirectX‣ NVidiaCg C for Graphics (NVidia) OpenGL + DirectX‣ Alle Sprachen sind sich sehr ähnlich und werden zu ASM-Code kompiliert!‣ C-ähnliche Syntax: Typen, Ausdrücke, Funktionen‣ Spezielle Funktionen für Shader: ‣ dot, normalize, cross, lit, mul, tex2D‣ Swizzle für Vektoren und Matrizen
34
Shaderprogrammierung
Hochsprachen
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Die Vertex-Eingabewerte werden von der RenderAPI jedem Vertex zugeordnet‣ Position‣ Normale‣ Texturkoordinate‣ Farbe‣ Binormale, Tangente‣ Die Ausgabe des Vertex-Shaders ist Eingabe für den Pixel-Shader‣ Die Ausgabe des PixelShaders ist eine Farbe‣ 3D: RGB mit α=1‣ 4D: RGBA
35
Shaderprogrammierung
Ein- & Ausgabe
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Da Vertex-Shader Ausgabe und Pixel-Shader Eingabe korrelieren‣ Techniques := {Vertex-Shader + Pixel-Shader}‣ Jede Technique kann aus mehreren Passes bestehen (kommt noch…;))‣ Ergebnis kann auch in Textur gerendert werde‣ Output(Vertex-Shader) >= Input(Pixel-Shader)‣ Der Vertex-Shader kann Werte erzeugen, die nicht benutzt werden‣ Alle benutzten Werte müssen jedoch gesetzt sein!
36
Shaderprogrammierung
Techniques
7/3/2008
13
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Für eine Technique kann man Parameter definieren‣ Die Parameter sind für alle Vertices/Pixel gleich!‣ Parameter sind nur pro Instanz eines Shaders änderbar‣ Auf Texturen werden über Sampler zugegriffen‣ Vektoren speichern sowohl Farben als auch Positionen‣ Farben werden grundsätzlich im Bereich zwischen [0;1] angegeben!
37
Shaderprogrammierung
Variablen & Parameter
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
float4x4 matViewProjection : MODELVIEWPROJECTION;
struct VS_INOUTPUT
{
float4 Position : POSITION0; float2 Texcoord : TEXCOORD0;
};
VS_INOUTPUT vs_main( VS_INOUTPUT Input )
{
VS_INOUTPUT Output;
Output.Position = mul(matViewProjection, Input.Position );
Output.Texcoord = Input.Texcoord;
return( Output );
}
float4 ps_main( VS_INOUTPUT Input ) : COLOR0
{
return float4(1.0f, 0.0f, 0.0f, 1.0f);
}
38
Shaderprogrammierung
Cg im Detail I – Rendern des Modells mit statischer Farbe (rot)
Parameter
Output VSInput PS
Vertexshader
Projektion
Weitergeben
Pixelshader
Ausgabe: RotR G B A
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
void PS_twoTextures(
float2 texCoord1: TEXCOORD0,
float2 texCoord2: TEXCOORD1,
out float4 color: COLOR,
uniform sampler2D decal)
{
float4 color1 = tex2D(decal, texCoord1);
float4 color2 = tex2D(decal, texCoord1);
color = lerp(color1, color2, 0.5);
color.b = 0.0f;
}
39
Shaderprogrammierung
Cg im Detail II – Pixelshader für zwei Texturen
Texturkoordinate 1
Texturkoordinate 2
Ausgabevariable
Textur
Farbe 1
Farbe 2
Linear mischen, 50%
Blauer Farbanteil = 0
Swizzle
7/3/2008
14
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Swizzles helfen beim Zugriff auf die Komponenten eines Vektors bzw. einer Matrix
float4 farbe = float4(1f); farbe.r = 0f; farbe.bg = 0.5f; ‣ Es gibt mehrere Swizzles aufgrund der mehrdeutigen Semantik von Vektoren‣ rgba‣ xyzw‣ Swizzles können ohne Hinblick auf die Semantik genutzt werden.‣ Swizzles dürfen in einer einzelnen Anweisung nicht gemischt werden.
float4 farbe2 = float4(0f); farbe2.xyw = farbe.www;
farbe2[1] = 1f;
40
Shaderprogrammierung
Cg im Detail III - Swizzles
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
B-CGEinführung in die Computergraphik
Shader im Einsatz
41
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ PerPixel Beleuchtungsrechnung‣ Durchführen der Beleuchtungsrechnung an jedem Pixel : Pixelshader
float3 fvLightDirection = normalize(Input.LightDirection );
float3 fvNormal = normalize(Input.Normal );
float fNDotL = dot(fvNormal, fvLightDirection );
float3 fvReflection = reflect(fvNormal, fvLightDirection);
float3 fvViewDirection = normalize(Input.ViewDirection);
float fRDotV = max(0.0f, dot(fvReflection, fvViewDirection));
float4 fvBaseColor = tex2D(baseMap, Input.Texcoord);
float4 fvTotalAmbient = fvAmbient * fvBaseColor;
float4 fvTotalDiffuse = fvDiffuse * fNDotL * fvBaseColor;
float4 fvTotalSpecular = fvSpecular * pow(fRDotV, fSpecularPower);
return(saturate(fvTotalAmbient + fvTotalDiffuse + fvTotalSpecular));
42
Shader im Einsatz I
Einsatz für Materialien & Materialeffekte
Diffuse Beleuchtung
Blinn/Phong Glanzlicht
Skalierung Farbanteile
Aufsummieren
Basisfarbe
7/3/2008
15
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Ziel: Lokale Beleuchtung von rauen Oberflächen‣ Raue Oberfläche � veränderliche Normale‣ Idee: Normalmap‣ Textur speichert die Normale, die in der Beleuchtungsrechnung statt der
Flächennormalen benutzt wird.
43
Shader im Einsatz II
Einsatz für Materialien & Materialeffekte - Bumpmapping
Normale Beleuchtung Normalmap
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Non-Photorealistic-Rendering (NPR)‣ Statt der „normalen“ Beleuchtungsrechnung fließen andere / zusätzliche Werte in
die Farbberechnung ein:‣ Beleuchtungsintensität‣ Anderer Farbraum‣ Kanten‣ Etc…
44
Shader im Einsatz III
Einsatz für Materialien & Materialeffekte - NPR
Bild: ShaderMark v2.1Bild: libsh.orgBild: www.hpi.uni-potsdam.de
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Shadow-Mapping‣ Zwei Renderpasses:‣ Rendern einer Shadow-Map, die die Tiefeninformationen vom Licht aus speichert‣ Normales Rendern: Pro Pixel wird der Abstand zum Licht berechnet und mit dem
korrespondierendem Wert der Shadom-Map vergleichen‣ Ist der Abstand größer als in der Shadow-Map, ist der Pixel schattiert
45
Shaderprogrammierung IV
Einsatz im Multipass-Rendern - Schatten
Normale Szene Schattierte SzeneSzene vom Licht Tiefeninformationen vom Licht
Alle Bilder: NVidia
7/3/2008
16
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Motionblur‣ Mehrere Renderpasses:‣ Rendern von aufeinanderfolgenden Frames in Texturen‣ Vermischen der Texturen‣ Statische Objekte fallen auf-
einander und werden „voll“ an-
gezeigt‣ Bewegte Objekte werden un-
scharf und vermischen sich mit
dem Hintergrund
46
Shaderprogrammierung V
Einsatz als Postprocessingfilter - Motionblur
Bild: Crysis, Crytek
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
B-CGEinführung in die Computergraphik
..and now for something completely different
47
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik 48
…something completely different
Bildbearbeitung
7/3/2008
17
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Zugriff auf Originalbild als Textur‣ Zugriff auf andere Pixel durch Texturzugriffe‣ Verändern der Farbwerte‣ Ausgabe: Rendern in Textur, die bearbeitetes Bild beinhaltet‣ Beispiele:‣ Weichzeichnen‣ Kantenfilter‣ Helligkeit, Kontrast‣ Farbersetzung‣ HDR
49
Bildbearbeitung im Shader
Postprocessing
Kantenfilter – Bild: ATIHDR Effekt - Bild: ATI
Weichzeichner
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik 50
…something completely different
GPGPU
General Purpose GPU
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Shader sind mächtige parallele Vector-Stream-Processors‣ Verarbeiten Vektorendaten‣ Pro GPU mehrere Einheiten‣ Alle Einheiten sind unabhängig voneinander‣ GPGPU nutzt diese Prozessorkraft, um “andere” Probleme zu lösen:‣ Virus Signature Matching‣ AES Verschluesselung‣ Physiksimupaltion‣ Random Number Generator‣ …
51
GPGPU
Streamprocessors
Struktur der GeForce 8800 GPU - Bild: NVidia
7/3/2008
18
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Inputdaten für Shader sind:‣ Vertices‣ Farben‣ Texturen‣ Vektoren‣ Inputdaten der Probleme sind selten vom gleichen Typ‣ Probleme:‣ Konvertierung der Datenmenge erforderlich‣ Zugriffsrestriktionen erfordern evtl. Restrukturierung des Algorithmus
52
GPGPU
Problem: Daten ≠ Daten
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Verschiedene Bibliotheken erleichtern das Schreiben von GPGPU Programmen‣ NVidia CUDA‣ Bibliothek, die einige Transformationen beinhaltet‣ NVidia PhysX‣ Physikalische Transformationen
53
GPGPU
Bibliotheken
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Mandelbrotmenge, Apfelmännchen‣ Berechnung der Mandelbrotmenge im
Pixelshader‣ Je nach Iterationstiefe Farbe auswählen
54
GPGPU
Beipiele I
Mandelbrotmenge als XNA-Shader, Bild: ziggzware.com
7/3/2008
19
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ Stoffe (Cloth)‣ Die Berechnung der Faltung eines „Stoffnetzwerkes“ kann auf die GPU ausgelagert
werden
55
GPGPU
Beispiele II
Bilder: Govindaraju, Lin & Manocha
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
‣ AES Verschlüsselung‣ Die AES-Verschlüsselung kann durch die Auslagerung von Operationen in die GPU
deutlich beschleunigt werden (>= 3x).‣ Virus Signatur Matching‣ Der Signaturenvergleich von Virenscannern lässt sich in die GPU auslagern und so
entweder Ressourcen der CPU freisetzen oder das Verfahren beschleunigen
(parallelisieren).
56
GPGPU
Beispiele III, IV
B-CGEinführung in die Computergraphik
Sebastian Schäfer, Prof. Dr. Detlef KrömkerGraphische Datenverarbeitung, Institut für Informatik
B-CGEinführung in die Computergraphik
Vielen Dank:)
57