69
1 Grundlagen der 3D-Grafik 08.05.2006 Dominik Bossdorf Christian Schulze Marco Sebastiao Seminar „Programmierung von Grafikkarten“

Grundlagen der 3D-Grafik - Universität Kassel: Aktuelles · Rotation des Vektor um die y –Achse so dass der Vektor in der xz–Ebene liegt 3. Rotation des Vektor um die x –Achse

  • Upload
    hakhanh

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

1

Grundlagen der 3D-Grafik

08.05.2006

Dominik BossdorfChristian SchulzeMarco Sebastiao

Seminar „Programmierung von Grafikkarten“

2

Inhalt

� Grafikhardware� Rendering Pipeline am Beispiel OpenGL� 3D Theorie mit homogenen Koordinaten

3

Grafikhardware

4

Übersicht

5

GPU

6

AGP

http://www.elektronik-kompendium.de/sites/com/0312031.htm

7

PCI Express

Klassisches Bridge-Modell(Bus-Topologie)

Modernes Switch-Modell(Stern-Topologie)

http://www.elektronik-kompendium.de/sites/com/0904051.htm

8

3,7 GByte/s

16x2,1 GByte/s

8x

32x

8x

4x

1x

PCIe

7,5GByte/s

1,9 GByte/s

1,06 Gbyte/s

4x

930MByte/s

532 MByte/s

2x266 MByte/s

64 Bit

230 MByte/s

266 MByte/s

1x133 MByte/s

32 Bit

AGPPCI

9

Übersicht

10

PipeLine

http://isgwww.cs.uni-magdeburg.de/~spindler/wiki/ShaderSeminar2005/index.php?n=Projects.IntroductionGPGPU#sm

11

http://isgwww.cs.uni-magdeburg.de/~spindler/wiki/ShaderSeminar2005/index.php?n=Projects.IntroductionGPGPU#gpu

12

Graphic Rendering PipeLine

� Application Stage� Geometry Stage� Rasterizer Stage

13

Application Stage (Software)

� Kollisionserkennung� Eingabeverarbeitung von der Tastatur &

Maus

� Aufgaben dieser Ebene stark Implementationsabhängig

14

Geometry Stage (Hardware)

� Model & View Tansform� Lighting and Shading� Projection� Clipping� Screen Mapping

15

Rasterizer Stage

� Richtige Farbe für den jeweiligen Pixel ermitteln und die Objekte danach einfärben

16

RAMDAC

� Random Access Memory Digital Analog Converter

� Wandelt die digitalen Steuer- und Synchronisierungs-Bildschirminformationen Pixelweise in Analoge Signale um.

� Steuert die Bildschirmwiederholfrequenz

17

FrameBuffer

� Beinhaltet ein Abbild von dem was auf dem Monitor abgebildet wird.

� Die benötigte Größe errechnet sich folgendermaßen:

� Erforderlicher Bildspeicher = Auflösung x Farbtiefe

18

RAMDAC-Aufbau

http://www.gotfrag.com/portal/story/29627/

19

Wozu Speicher?

http://www.elektronik-kompendium.de/sites/com/0506191.htm

20

VRAM

� Wird auch bezeichnet als „Dual PortedRam“

� GENIAL: Gleichzeitige Lese- und Schreibzugriffe möglich

� Besteht aus zwei Teilen:� SAM (serial access memory)� DRAM (dynamic random access memory)

21

Verbesserungen

� SGRAM (Synchronous Graphic Ram)� Ermöglicht blockweißes Lesen und Schreiben

� MDRAM (Multi-Bank DRAM)� Ist als Feld aufgebaut, dies ermöglicht eine Hohe

Parallelisierung

� 3D RAM� Speicherbausteine mit Integrierter Logik, dadurch

sind manche Operationen (z.B.: Z-Buffer-Test) direkt im RAM möglich.

22

VGA-BIOS

� Ist eine Bibliothek von Funktionen die eine rudimentäre Schnittstelle zur Grafikkarte bietet

� Features�Verschiedene Video-Modis CGA / EGA / VDA

�POST Power On Self Test�Support von verschiedenen Schnittstellen &

Erweiterungen (z.B. VBE, DDC)

23

Was ist OpenGL

- Open Graphics Library- Schnittstelle zur Hardware- Weiterentwicklung von IrixGL- plattformunabhängig- Zustandsautomat

24

OpenGL Rendering Pipeline

Pixel-Operations

Texture-assembly Per-Vertex

Operations +Primitive assembly

Per-fragmentoperations

Framebuffer

Rasterization

Evaluators

Pixeldata VertexdataDisplay-

Lists

25

OpenGL Rendering Pipeline

Pixel-Operations

Texture-assembly Per-Vertex

Operations +Primitive assembly

Per-fragmentoperations

Framebuffer

Rasterization

Evaluators

Pixeldata VertexdataDisplay-

Lists

26

Pixeldata

- Unterschied zw. Bitmaps und Image-data- Bitmap für jedes Pixel 1 Bit an Daten- Rechteckigens Array aus 0,1 (Bitmaske)- Image-Data mehr Informationen pro Pixel

( RGBA, …)

27

OpenGL Rendering Pipeline

Pixel-Operations

Texture-assembly Per-Vertex

Operations +Primitive assembly

Per-fragmentoperations

Framebuffer

Rasterization

Evaluators

Pixeldata VertexdataDisplay-

Lists

28

VertexdataPrimitiven- Einfache geometrische Daten- Punkt, Linie, Dreieck, Quadrat- Durch Koordinaten der Eckpunkte

repräsentiert.(Verticles)

29

OpenGL_Primitiven

TheRedBook http://www.opengl.org/documentation/red_book/

30

OpenGL Rendering Pipeline

Pixel-Operations

Texture-assembly Per-Vertex

Operations +Primitive assembly

Per-fragmentoperations

Framebuffer

Rasterization

Evaluators

Pixeldata VertexdataDisplay-

Lists

31

Framebuffer

Daten aus der Rasterization werden hier gespeichert

Besteht aus verschiedenen Buffers - Color-buffer (Farbwerte)- Stencil-buffer (Schablone)- Depth-buffer (Tiefeninformationen)- Accumulation-buffer (weitere Farbwerte)

32

OpenGL Rendering Pipeline

Pixel-Operations

Texture-assembly Per-Vertex

Operations +Primitive assembly

Per-fragmentoperations

Framebuffer

Rasterization

Evaluators

Pixeldata VertexdataDisplay-

Lists

33

Display-List

- OpenGL-Befehle werden zur späteren Verwendung zwischengespeichert

- Im Gegensatz zum immediate-mode- z.B. zur Mehrfachverwendung vom

Objekten

34

OpenGL Rendering Pipeline

Pixel-Operations

Texture-assembly Per-Vertex

Operations +Primitive assembly

Per-fragmentoperations

Framebuffer

Rasterization

Evaluators

Pixeldata VertexdataDisplay-

Lists

35

Pixel operations

- Bilddaten werde entpackt- Pixeldaten werden skaliert- Anwendung von Pixelmap

36

OpenGL Rendering Pipeline

Pixel-Operations

Texture-assembly Per-Vertex

Operations +Primitive assembly

Per-fragmentoperations

Framebuffer

Rasterization

Evaluators

Pixeldata VertexdataDisplay-

Lists

37

Texture-assembly

- Rechteckige Arrays von Daten- z.B. Farbwerte, Farbe und Alphawert- Texel = einzelnes Element dieses Arrays- In OpenGL 1D, 2D oder 3D

38

Texture-Mapping

- Textur-Objekt erstellen (rgba,z-wert…)- Textur auf jedes Pixel anwenden

.replace mode

.modulate(lightning)

.blending ( basierend auf fragmentFarbe)

39

Texture-Mapping

Textur muss auf das zu „beklebende“Fragment abgestimmt werden.

Zusammenhang zwischen Textur und Fragment-Koordinaten

40

OpenGL Rendering Pipeline

Pixel-Operations

Texture-assembly Per-Vertex

Operations +Primitive assembly

Per-fragmentoperations

Framebuffer

Rasterization

Evaluators

Pixeldata VertexdataDisplay-

Lists

41

Evaluators

Umrechnung von beschreibenden Gleichungen in OrtsvektorenFür komplexere geometr. Formen wir Kurven und Kugeln

42

OpenGL Rendering Pipeline

Pixel-Operations

Texture-assembly Per-Vertex

Operations +Primitive assembly

Per-fragmentoperations

Framebuffer

Rasterization

Evaluators

Pixeldata VertexdataDisplay-

Lists

43

Per-vertex Operations and primitive assembly

Modelviewmatrix

Projectionmatrix

Perspectivedivision

ViewportTransformation

ObjektCoord.

Vertex-data

Eye-coordinate

Clipcoordinate

NormalizedDevice coord.

Windowcoordinate

44

Per-vertex Operations and primitive assembly

Modelviewmatrix

Projectionmatrix

Perspectivedivision

ViewportTransformation

ObjektCoord.

Vertex-data

Eye-coordinate

Clipcoordinate

NormalizedDevice coord.

Windowcoordinate

45

Per-vertex Operations

Viewing- and modeling-transformation- Kamera wird positioniert- Objekt wird in der Szene positioniert- viewing- und modelling-Transformation

werden in der modelview-Matrixgespiechert

- Beleuchtung- Ergebnis Eye-coordinates

46

Per-vertex Operations and primitive assembly

Modelviewmatrix

Projectionmatrix

Perspectivedivision

ViewportTransformation

ObjektCoord.

Vertex-data

Eye-coordinate

Clipcoordinate

NormalizedDevice coord.

Windowcoordinate

47

Primitive Assembly

Projection Transformation- Projection-matrix bestimmt die Form der

Viewing-Volume- Clipping- Objekte außerhalb der VV werden

„abgeschnitten“- Unterschied zwischen perspective und

orthographic Projection

48

Projection transformation

TheRedBook http://www.opengl.org/documentation/red_book/

49

Per-vertex Operations and primitive assembly

Modelviewmatrix

Projectionmatrix

Perspectivedivision

ViewportTransformation

ObjektCoord.

Vertex-data

Eye-coordinate

Clipcoordinate

NormalizedDevice coord.

Windowcoordinate

50

Primitive Assembly

- Perspective Division- Coordinaten werden durch w geteilt- Ergebniss normalized device Coord.

51

Per-vertex Operations and primitive assembly

Modelviewmatrix

Projectionmatrix

Perspectivedivision

ViewportTransformation

ObjektCoord.

Vertex-data

Eye-coordinate

Clipcoordinate

NormalizedDevice coord.

Windowcoordinate

52

Primitive assembly

Viewport transformation- Viewport beschreibt die Position und Form

des Darstellungsbereiches- Vergrösserung/Verkleinerung

53

3D - Theorie

54

3D – Transformationen- kartesische Koordinaten -

=

+

'

'

'

z

y

x

z

y

x

z

y

x

a

a

aTranslation (Verschiebung) :

=

z

y

x

s

s

s

z

y

x

z

y

x

00

00

00

'

'

'Skalierung (Streckung/Stauchung):

−=

z

y

x

z

y

x

)cos()sin(0

)sin()cos(0

001

'

'

'

αααα

Rotation (Drehung):

um die x - Achse

55

3D – Transformationen- Homogene Koordinaten -

P = ( x, y, z, W )P = ( x, y, z )

ℜ∈⋅= λλ , )',',','(),,,( WzyxWzyx

( 4, 6, 8, 2 ) = ( 8, 12, 16, 4 )

1

W

z

W

y

W

x

56

3D – Transformationen- Homogene Koordinaten -

Translation (Verschiebung):

=

1

z

y

x

1000

100

010

001

1

'

'

'

z

y

x

t

t

t

z

y

x

( ) ( ) en. verschiebttt Tnsvektor Translatio um zyx P zyx=

57

3D – Transformationen- Homogene Koordinaten -

Rotation (Drehung):

( ) rden.gedreht we den Winkel um soll x αzyP

−=

1

z

y

x

1000

0)cos()sin(0

0)sin()cos(0

0000

1

'

'

'

αααα

z

y

xDrehung um die x – Achse:

−=

1

z

y

x

1000

0)cos(0)sin(

0010

0)sin(0)cos(

1

'

'

'

αα

αα

z

y

xDrehung um die y – Achse:

58

3D – Transformationen- Homogene Koordinaten -

( ) rden.gedreht we den Winkel um soll x αzyP

Rotation (Drehung):

=

1

z

y

x

1000

0100

00)cos()sin(

00)sin()cos(

1

'

'

'

αααα

z

y

xDrehung um die z – Achse:

59

3D – Transformationen- Homogene Koordinaten -

Rotation (Drehung):

Rotation um eine beliebige Achse

1. Translation der Rotationsachse, d.h. Punkt P in den Ursprung

2. Rotation des Vektor um die y – Achse so dass der Vektor in der xz – Ebene liegt

3. Rotation des Vektor um die x – Achse so dass der Vektor in der z - Achse liegt

4. Rotation um die z – Achse mit dem gewünschten Winkel

5. Inverse Transformation aus Schritt 3

6. Inverse Transformation aus Schritt 2

7. Translation der Rotationsachse an den ursprünglichen Punkt P

60

+

+−++−

−+−+−+

++−+−+

+

1000

01

)cos())cos(1()sin(1

)sin(1

)cos(

0))cos(1()sin()cos())cos(1()sin(

01

)sin(1

)cos())cos(1()sin(1

)cos(

2

2

222

22

22

22

2

2

222

xzyx

zyxzx

zyxyyxz

zxyxzxzyx

vd

vvvvvvvv

d

B

d

A

vvvvdlvvv

vvd

B

d

Avvvv

d

vvv

ααααα

ααααα

ααααα

3D – Transformationen- Homogene Koordinaten -

Rotation (Drehung):

Rotation um eine beliebige Achse

Allgemeine Form

61

OpenGL Rendering Pipeline

Pixel-Operations

Texture-assembly Per-Vertex

Operations +Primitive assembly

Per-fragmentoperations

Framebuffer

Rasterization

Evaluators

Pixeldata VertexdataDisplay-

Lists

62

RasterizationUmwandlung von Pixel- und Vertex-data in

FragmenteFragment entspricht quadratischer Fläche,

die ein Pixel belegtFragmente

-Position-Farbwert-Alphawert-Tiefe

63

Rasterization

- Antialising- Texturierung- „Eckpunkte“ werden verbunden- Flächen werden gefüllt

64

OpenGL Rendering Pipeline

Pixel-Operations

Texture-assembly Per-Vertex

Operations +Primitive assembly

Per-fragmentoperations

Framebuffer

Rasterization

Evaluators

Pixeldata VertexdataDisplay-

Lists

65

Per-Fragment-Tests

Verschiedene Tests auf jedes Pixelfragment

- Scissortest- Stenciltest- Depthbuffertest- Alphatest

66

Depht-Buffer-Test

- auch „z-Buffer-Test“- Zur Sichtbarkeitsprüfung von Objekten- Pixel die näher am Betrachtungspunkt

liegen überdecken dahinter liegende.

67

Per-Fragment Operations

- Fogging (Nebeleffekte)- Dithering (zur Farbmischung)- Blending (Transparenz)

68

Fazit

� Aufbau und Funktion einer Grafikkarte� Rendering Pipeline� Homogene Koordinaten

69

Quellen

Literatur:

� Lehrbuch der Grafikprogrammierung, Klaus Zeppenfeld

� Real-Time Rendering, Thomas Akenine-Möller ; Eric Haines

� The OpenGl Programming Guide

Bildquellen:

� TheRedBook http://www.opengl.org/documentation/red_book/