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
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
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
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
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)
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
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
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
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
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)