+ All Categories
Home > Documents > V11-Shader - Goethe University Frankfurt...7/3/2008 1 Einführungin die Computergraphik Shader...

V11-Shader - Goethe University Frankfurt...7/3/2008 1 Einführungin die Computergraphik Shader...

Date post: 18-Mar-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
19
7/3/2008 1 Einführung in die Computergraphik Shader 25.06.2008 B-CG Einführung in die Computergraphik Sebastian Schäfer, Prof. Dr. Detlef Krömker Graphische Datenverarbeitung, Institut für Informatik Übersicht Geschichte des Realtimerenderns Shader Geschichte der Shader Shaderprogrammierung AndereVerwendungenvon Shadern 2 B-CG Einführung in die Computergraphik Sebastian Schäfer, Prof. Dr. Detlef Krömker Graphische Datenverarbeitung, Institut für Informatik B-CG Einführung in die Computergraphik (Eine kleine) Geschichte des Realtimerenderns 3
Transcript

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


Recommended