Shader › ... › unik_s_gpgpu_shader_folien_ss2006.pdf · Shader 9 Fixed Function Pipeline (7)...
Transcript of Shader › ... › unik_s_gpgpu_shader_folien_ss2006.pdf · Shader 9 Fixed Function Pipeline (7)...
10.05.06Research Group Programming Languages / Methodologies
Shader
1
Shader
Johannes SpohrChristian Niemand
10.05.06Research Group Programming Languages / Methodologies
Shader
2
Inhalt
1. Fixed Function Pipeline2. Entwicklung3. Kommunikation 4. Anwendung
10.05.06Research Group Programming Languages / Methodologies
Shader
3
Fixed Function Pipeline (1)
App.Memory
Per-Vertex Operations
FragmentProcessing
ClipProject
ViewportCull
Rasterize
PrimitiveAssembly
Per-Fragment
Operations
FrameBuffer
Operations
FrameBuffer
TextureMemory
(Geometry)
(Pixel)
(Pixel)
(Geometry)
Pixel(Un)PackTransfer
10.05.06Research Group Programming Languages / Methodologies
Shader
4
Fixed Function Pipeline (2)
App.Memory
Per-Vertex Operations
FragmentProcessing
ClipProject
ViewportCull
Rasterize
PrimitiveAssembly
Per-Fragment
Operations
FrameBuffer
Operations
FrameBuffer
TextureMemory
(Geometry)
(Pixel)
(Pixel)
(Geometry)
Pixel(Un)PackTransfer
10.05.06Research Group Programming Languages / Methodologies
Shader
5
Fixed Function Pipeline (3)
App.Memory
Per-Vertex Operations
FragmentProcessing
ClipProject
ViewportCull
Rasterize
PrimitiveAssembly
Per-Fragment
Operations
FrameBuffer
Operations
FrameBuffer
TextureMemory
(Geometry)
(Pixel)
(Pixel)
(Geometry)
Pixel(Un)PackTransfer
10.05.06Research Group Programming Languages / Methodologies
Shader
6
Fixed Function Pipeline (4)
App.Memory
Per-Vertex Operations
FragmentProcessing
ClipProject
ViewportCull
Rasterize
PrimitiveAssembly
Per-Fragment
Operations
FrameBuffer
Operations
FrameBuffer
TextureMemory
(Geometry)
(Pixel)
(Pixel)
(Geometry)
Pixel(Un)PackTransfer
10.05.06Research Group Programming Languages / Methodologies
Shader
7
Fixed Function Pipeline (5)
App.Memory
Per-Vertex Operations
FragmentProcessing
ClipProject
ViewportCull
Rasterize
PrimitiveAssembly
Per-Fragment
Operations
FrameBuffer
Operations
FrameBuffer
TextureMemory
(Geometry)
(Pixel)
(Pixel)
(Geometry)
Pixel(Un)PackTransfer
10.05.06Research Group Programming Languages / Methodologies
Shader
8
Fixed Function Pipeline (6)
App.Memory
Per-Vertex Operations
FragmentProcessing
ClipProject
ViewportCull
Rasterize
PrimitiveAssembly
Per-Fragment
Operations
FrameBuffer
Operations
FrameBuffer
TextureMemory
(Geometry)
(Pixel)
(Pixel)
(Geometry)
Pixel(Un)PackTransfer
10.05.06Research Group Programming Languages / Methodologies
Shader
9
Fixed Function Pipeline (7)
App.Memory
Per-Vertex Operations
FragmentProcessing
ClipProject
ViewportCull
Rasterize
PrimitiveAssembly
Per-Fragment
Operations
FrameBuffer
Operations
FrameBuffer
TextureMemory
(Geometry)
(Pixel)
(Pixel)
(Geometry)
Pixel(Un)PackTransfer
10.05.06Research Group Programming Languages / Methodologies
Shader
10
Fixed Function Pipeline (8)
App.Memory
Per-Vertex Operations
FragmentProcessing
ClipProject
ViewportCull
Rasterize
PrimitiveAssembly
Per-Fragment
Operations
FrameBuffer
Operations
FrameBuffer
TextureMemory
(Geometry)
(Pixel)
(Pixel)
(Geometry)
Pixel(Un)PackTransfer
10.05.06Research Group Programming Languages / Methodologies
Shader
11
Fixed Function Pipeline (9)
App.Memory
Per-Vertex Operations
FragmentProcessing
ClipProject
ViewportCull
Rasterize
PrimitiveAssembly
Per-Fragment
Operations
FrameBuffer
Operations
FrameBuffer
TextureMemory
(Geometry)
(Pixel)
(Pixel)
(Geometry)
Pixel(Un)PackTransfer
10.05.06Research Group Programming Languages / Methodologies
Shader
12
Problematik
• Unflexibel• Kein dynamischer Workflow• Performance
–Speichertransfers
10.05.06Research Group Programming Languages / Methodologies
Shader
13
Programmable Pipeline
App.Memory
ClipProject
ViewportCull
Rasterize
PrimitiveAssembly
Per-Fragment
Operations
FrameBuffer
Operations
FrameBuffer
TextureMemory
(Geometry)
(Pixel)
(Pixel)
(Geometry)
Pixel(Un)PackTransfer
VertexProcessor
FragmentProcessor
10.05.06Research Group Programming Languages / Methodologies
Shader
14
Vertex Processor
• Vertex Shader• Per Vertex• Transformation• Beleuchtung• Texturkoordinaten• Texture Lookup
(SM 3.0)
• Pixel Shader• Per Pixel• Texture Lookup• Blending• Beleuchtung
FragmentProcessor
10.05.06Research Group Programming Languages / Methodologies
Shader
15
Beleuchtung nach Phong
Quelle [P1]
10.05.06Research Group Programming Languages / Methodologies
Shader
16
Effekt: Detail ohne komplexe Geometrie (1)
Quelle [P6]
10.05.06Research Group Programming Languages / Methodologies
Shader
17
Effekt: Detail ohne komplexe Geometrie (2)
Quelle [P6]
10.05.06Research Group Programming Languages / Methodologies
Shader
18
Effekt: Detail ohne komplexe Geometrie (3)
Quelle [P6]
10.05.06Research Group Programming Languages / Methodologies
Shader
19
Effekt: Detail ohne komplexe Geometrie (4)
Quelle [P6]
10.05.06Research Group Programming Languages / Methodologies
Shader
20
Vergleich
Quelle [P6]
10.05.06Research Group Programming Languages / Methodologies
Shader
21
Kurze Zusammenfassung
• Fixed Function Pipeline• Programmable Pipeline
–Programmierbare Vertex- und Fragmentprozessoren
10.05.06Research Group Programming Languages / Methodologies
Shader
22
Kommunikation
• CPU -> Grafikspeicher (Objektstruktur, Texturen)
• CPU -> GPU (Code, Parameter)• Vertex Shader -> Pixel Shader• Pixel Shader -> Framebuffer
10.05.06Research Group Programming Languages / Methodologies
Shader
23
Kommunikation
• CPU -> Grafikspeicher (Objektstruktur, Texturen)
• CPU -> GPU (Code, Parameter)• Vertex Shader -> Pixel Shader• Pixel Shader -> Framebuffer
10.05.06Research Group Programming Languages / Methodologies
Shader
24
Vertexdaten
• Applikation erstellt Vertexbuffer• Vertexformat / -struktur
–Position, Normalen, Texturkoordinaten...
–Abhängig vom gewünschten Effekt
• Übergabe an API: Drawcall–Zeichnen einer Primitivenliste
10.05.06Research Group Programming Languages / Methodologies
Shader
25
Texturen2D Textur 3D Textur Cubemap
Quelle [P5]
Quelle [P5]
Quelle [P4]
Quelle [P7]
10.05.06Research Group Programming Languages / Methodologies
Shader
26
Kommunikation
• CPU -> Grafikspeicher (Objektstruktur, Texturen)
• CPU -> GPU (Code, Parameter)• Vertex Shader -> Pixel Shader• Pixel Shader -> Framebuffer
10.05.06Research Group Programming Languages / Methodologies
Shader
27
Code
• Programmiersprachen–RenderMan–Assembler–GLSL–Cg / HLSL
• Compiler–Kompilierung zur Ladezeit
• Assembler
10.05.06Research Group Programming Languages / Methodologies
Shader
28
Einschränkungen (1)
Shader 1.1 Shader 2.0 Shader 3.0Pixel Shader Instruktionen 8 96 32000Vertex Shader Instruktionen 128 256 32000Dynamisches Branching Nein Nein JaVerschachtelte Schleifen Nein Ja Ja
Quelle [L1]
10.05.06Research Group Programming Languages / Methodologies
Shader
29
Einschränkungen (2)
• Eingeschränkte Ein-/Ausgabe–Keine Dateianbindung–Kein RAM-Zugriff–Keine Benutzereingabe–Keine Standardausgabe
10.05.06Research Group Programming Languages / Methodologies
Shader
30
Parameter
• Einfache Datentypen– float, int, bool–Vektor, Matrix
• Parametertypen–Uniform–Varying–Attribute
10.05.06Research Group Programming Languages / Methodologies
Shader
31
Uniform
• Applikation -> Shader• Innerhalb eines Drawcalls konstant• In Anwendung & Shader deklariert
–Anwendung schreibt–Shader liest
10.05.06Research Group Programming Languages / Methodologies
Shader
32
Kommunikation
• CPU -> Grafikspeicher (Objektstruktur, Texturen)
• CPU -> GPU (Code, Parameter)• Vertex Shader -> Pixel Shader• Pixel Shader -> Framebuffer
10.05.06Research Group Programming Languages / Methodologies
Shader
33
Varying
• Vertex Shader -> Pixel Shader• Berechnung durch Vertex Shader• Interpolation über Dreiecksfläche• Pixel Shader erhält interpolierten
Wert für den jeweiligen Pixel• In beiden Shadern deklariert
Quelle [P8]
10.05.06Research Group Programming Languages / Methodologies
Shader
34
Attribute
• Vertex Buffer -> Vertex Shader• Mehrere Attribute je Vertex• In Anwendung & Vertex Shader
deklariert
10.05.06Research Group Programming Languages / Methodologies
Shader
35
Vertex Shader
• Wird pro Vertex angewendet• Transformiert Vertex relativ zum
Betrachter• Berechnet Beleuchtung• Texturkoordinaten• Texture Lookup (SM 3.0)
10.05.06Research Group Programming Languages / Methodologies
Shader
36
Morphing
• Ein Objekt oder ein Bild wird in ein anderes Objekt bzw. Bild umgeformt
• Demo
10.05.06Research Group Programming Languages / Methodologies
Shader
37
Skinning• Eingesetzt bei
Charakteranimation
• Objektstruktur wird über animierte Bones (Knochen) gelegt
• Bones haben Einflussvolumen auf Vertices
Quelle [P2] und [P3]
10.05.06Research Group Programming Languages / Methodologies
Shader
38
Pixel Shader
• Wird pro Pixel angewendet• Texture Lookup• Blending• Beleuchtung
10.05.06Research Group Programming Languages / Methodologies
Shader
39
Per Vertex Lighting
Screenshot aus RenderMonkey
10.05.06Research Group Programming Languages / Methodologies
Shader
40
Per Pixel Lighting
Screenshot aus RenderMonkey
10.05.06Research Group Programming Languages / Methodologies
Shader
41
Bump Mapping
Screenshot aus RenderMonkey
10.05.06Research Group Programming Languages / Methodologies
Shader
42
Zusammenfassung (1)
• Shader sind kleine Programme• Operieren auf Vertices oder Pixeln
10.05.06Research Group Programming Languages / Methodologies
Shader
43
Zusammenfassung (2)
Vertex Shader
Uniform
Pixel Shader
Geometrie
Varying
Texturen
Framebuffer
10.05.06Research Group Programming Languages / Methodologies
Shader
44
Quellenangabe (1)• Literatur
– [L1] http://www.bit-tech.net/hardware/2005/07/25/guide_to_shaders/5.html
– [L2] OpenGL Shading Language – Addison Wesley – Autor: Randi J. Rost
– [L3] The Cg Tutorial – Addison Wesley – Autor: Randima Fernando and Mark J. Kilgard
10.05.06Research Group Programming Languages / Methodologies
Shader
45
Quellenangabe (2)• Abbildungen
– [P1] http://www.ixbt.com/cpu/cpurm/general/phong.gif
– [P2] http://www.janikarvonen.com/gfx/3d/elephant_10_skinning_shot_wip.jpg
– [P3] http://www.janikarvonen.com/gfx/3d/elephant_10_skinning_wip.jpg
– [P4] http://wwwisg.cs.uni-magdeburg.de
– [P5] http://www.cambrianlabs.com/mattias/
– [P6] http://graphics.cs.brown.edu/games/SteepParallax/index.html
– [P7] http://www.photoshop-weblog.de/
– [P8] http://www.cscs.ch/~mvalle/Libro/color-interpolation.jpg
10.05.06Research Group Programming Languages / Methodologies
Shader
46
Vielen Dank für ihre Aufmerksamkeit