Shader › ... › unik_s_gpgpu_shader_folien_ss2006.pdf · Shader 9 Fixed Function Pipeline (7)...

Post on 29-Jun-2020

5 views 0 download

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