Anatomie d`une carte graphique accélératrice 3D

Transcription

Anatomie d`une carte graphique accélératrice 3D
La carte graphique
Le pipeline graphique
Opérations sur les fragments
Evolution
Les APIs
Anatomie d’une carte graphique
accélératrice 3D
Jean-Yves Didier
Université d’Evry
Jean-Yves Didier
Anatomie d’une carte 3D
Université d’Evry
1/12
La carte graphique
Le pipeline graphique
Opérations sur les fragments
Evolution
Les APIs
1 La carte graphique
2 Le pipeline graphique
3 Opérations sur les fragments
4 Evolution
5 Les APIs
Jean-Yves Didier
Anatomie d’une carte 3D
Université d’Evry
2/12
La carte graphique
Le pipeline graphique
Opérations sur les fragments
Evolution
Les APIs
Carte graphique et accélération 3D
Carte graphique
Adaptateur générant une image puis un signal compatible avec
l’écran.
Accélération 3D
I Est apparue au début des années 1990 ;
I
En entrée : un ensemble de primitives 3D :
→ Sommets (coordonnées 3D), segments, polygones, textures.
I
En sortie : des pixels ;
I
Fonction : transformer des données 3D en images 2D :
→ Notion de pipeline graphique.
Jean-Yves Didier
Anatomie d’une carte 3D
Université d’Evry
3/12
La carte graphique
Le pipeline graphique
Opérations sur les fragments
Evolution
Les APIs
Le pipeline graphique
Point de vue architecture
Ensemble de traitements programmables, intercalés avec des
traitements déterminés pour produire un rendu graphique.
Données
vertex
Evaluateurs
Listes d’
affichage
Opérations
par sommet
et assemblage
de primitives
Rasterisation
Opérations
sur les pixels
Opérations
sur les
fragment
Framebuffer
Assemblage
textures
Données pixel
Jean-Yves Didier
Anatomie d’une carte 3D
Université d’Evry
4/12
La carte graphique
Le pipeline graphique
Opérations sur les fragments
Evolution
Les APIs
Le pipeline graphique : point de vue fonctionnel
Transformations géométrique
Repère objet
Repère monde
Illumination
Transformation de point de vue
Repère caméra
Troncature (clipping)
Projection
Repère écran
Fragmentation (rasterization)
Affichage
Jean-Yves Didier
Anatomie d’une carte 3D
Université d’Evry
5/12
La carte graphique
Le pipeline graphique
Opérations sur les fragments
Evolution
Les APIs
Le pipeline graphique
A l’origine
Il est majoritairement logiciel :
I
Exécution sur le CPU (Central Processing Unit) ;
I
Processeur non spécialisé.
Maintenant
Presque entièrement matériel :
I
Exécution sur le GPU (G = Graphical) ;
I
Processeur spécialisé ;
I
Gain en vitesse d’exécution.
Jean-Yves Didier
Anatomie d’une carte 3D
Université d’Evry
6/12
La carte graphique
Le pipeline graphique
Opérations sur les fragments
Evolution
Les APIs
Opération sur les fragments
Scène 3D = polygones + textures.
Le travail de la carte graphique
1 Décomposer polygones et textures en fragments
(rasterization) ;
I
Propriétés des fragments :
I
I
2
1 fragment = 1 pixel dans l’image finale ;
Paramètres associés : u, v , profondeur, couleur.
Traiter les fragments :
I
Les fragments passent au travers de différents tamis (buffer) ;
I
I
Jean-Yves Didier
Anatomie d’une carte 3D
Les tamis sont programmables ;
Taille du tamis = taille de l’image finale.
Université d’Evry
7/12
La carte graphique
Le pipeline graphique
Opérations sur les fragments
Evolution
Les APIs
Opérations sur les fragments
Les tamis (buffers) usuels
Framebuffer : contient l’image finale ;
7 77
7 77 7 7
7
7
7
7
Fragments
Z-buffer : test de profondeur ;
Stencilbuffer : masque ou pochoir.
5
5
5 55
5 5
5 5 5
7 7 7 5 55 5
5
5 55 5
5
10
Stencilbuffer
Z-buffer
Framebuffer
Jean-Yves Didier
Anatomie d’une carte 3D
Université d’Evry
8/12
La carte graphique
Le pipeline graphique
Opérations sur les fragments
Evolution
Les APIs
Évolution des cartes graphiques
I
1995-1997 : placage de textures et z-buffer ;
I
1999-2000 : transformations géométrique et illumination
(T&L : Transform and Lighting) ;
I
2001 : vertex shaders programmables ;
I
2002-2003 : pixel shaders programmables ;
I
2005 : multi-GPU ;
Maintenant et dans le futur :
I
I
I
La fin de l’antagonie CPU-GPU ?
OpenCL (Apple, Kronos), CUDA (NVidia), CTM (ATI).
Jean-Yves Didier
Anatomie d’une carte 3D
Université d’Evry
9/12
La carte graphique
Le pipeline graphique
Opérations sur les fragments
Evolution
Les APIs
OpenGL et Direct3D
Qu’est ce ?
I
API = Application Programming Interface ;
I
Des interfaces logicielles (bibliothèques) pour des composants
matériels dédiés au rendu graphique ;
Derniers standards en date :
I
I
I
I
OpenGL 3.2 (août 2009) ;
DirectX 11 (juillet 2009) ;
Interfaces logicielles bas niveau :
I
I
Conçues pour piloter le matériel directement ;
Paramètrent un automate qui gère le pipeline graphique.
Jean-Yves Didier
Anatomie d’une carte 3D
Université d’Evry
10/12
EnableClientState
DisableClientState
The OpenGL Machine
EdgeFlagPointer
R
TexCoordPointer
ColorPointer
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CCCC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
Vertex
Array
Control
IndexPointer
NormalPointer
VertexPointer
InterLeavedArrays
ArrayElement
DrawElements
DrawArrays
EdgeFlag
t
0
TexCoord2
r
0
TexCoord3
q
1
TexCoord1
TexCoord4
Color3
A
1
Convert
Color4
RGBA to float
Convert
index to float
Index
Convert
normal coords
to float
Normal3
Vertex2
RasterPos2
Vertex3
RasterPos3
z
0
w
1
Vertex4
RasterPos4
MapGrid
EvalMesh
EvalPoint
Evaluator
Control
Grid
Application
Map
Evaluation
EvalCoord
Map
Enable/Disable
Current
Edge
Flag
Current
Texture
Coordinates
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
Current
RGBA
Color
Current
Color
Index
Current
Normal
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
OBJECT
COORDINATES
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
The OpenGL graphics system diagram, Version 1.1. Copyright  1996 Silicon Graphics, Inc. All rights reserved.
Enable/Disable
TexGen
OBJECT_LINEAR
b
TexGen
EYE_LINEAR
A*b
A
TexGen
SPHERE_MAP
Texture
Matrix
Stack
TexGen
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
Vertices
CC
CC
CC
CC
CC
CC
C
C
Input
C
C
Conversion
C
&
C
C
Current
C
Values
C
C
C
C
C
C
Evaluators
&
Vertex Arrays
Enable/Disable
ColorMaterial
Material
Material
Parameters
Control
LightModel
Begin/End
Light
Light
Parameters
Enable/Disable
Material
Parameters
Light Model
Parameters
Enable/Disable
Clamp to
[0,1]
RGBA Lighting Equation
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
b
M*b
Normalize
Mask to
M
n−1
Color Index Lighting Equation
[0,2
M−T
M
M*b
M
]
Matrix
Control
Enable/Disable
(Lighting)
FrontFace
M
b
Primitive
Assembly
CC
CC
CC
CC
CC
CC
CC
CC
C
C
C
C
C
C
C
C
C
Texture Coordinate
Generation
Lighting
Clipping, Perspective,
and
Viewport Application
EYE
COORDINATES
Rasteriz−
ation
Feedback
&
Selection
Per−Fragment Operations
Texturing,
Fog,
and
Antialiasing
Frame Buffer
&
Frame Buffer Control
Pixels
Rect
Rectangle
Generation
Primitives
Fragments
Model View
Matrix
Stack
Key to OpenGL Operations
Enable/Disable
(Antialiasing/Stipple)
MatrixMode
PushMatrix
PopMatrix
ClipPlane
Matrix
Control
Clip
M*N
N
M
ShadeModel
POLYGONS
Scale
Rotate
Planes
Polygon
Clipping
Projection
Matrix
Matrix
LINE
SEGMENTS
Line
Clipping
POINTS
RASTER POS.
Point
Culling
Viewport
Polygon
Mode
Rasterization
Enable/Disable
(Antialiasing)
DepthRange
LineStipple
LineWidth
Polygon
M M*b
View Volume
Clipping
Line
b
M*b
(Vertex
Generators
Ortho
Polygon
Polygon
Culling
Stack
b
Flatshading
Translate
Frustum
PolygonMode
CullFace
b
−T
M b
LoadMatrix
MultMatrix
PolygonOffset
FrontFace
M
LoadIdentity
View Volume
Clipping
Only)
M*b
b
Line
Segment
Divide
Vertex
Coordinates
by
Apply
Viewport
Rasterization
TexParameter
Enable/Disable
(Antialiasing)
w
Point
Enable/Disable
PointSize
View Volume
Culling
TexEnv
Point
Rasterization
Texel
Generation
Current
Raster
Texture
Application
Enable/Disable
Enable/Disable
Enable/Disable
Enable/Disable
Fog
Scissor
Fog
Coverage
(antialiasing)
Pixel
Ownership
Test
Application
Enable/Disable
Test
StencilOp
StencilFunc
AlphaFunc
Scissor
Alpha
Test
(RGBA only)
Stencil
Test
Enable/Disable
Enable/Disable
DepthFunc
BlendFunc
Depth
Buffer
Test
Clear
Notes:
1. Commands (and constants) are shown without the
gl (or GL_) prefix.
2. The following commands do not appear in this
diagram: glAccum, glClearAccum, glHint,
display list commands, texture object commands,
commands for obtaining OpenGL state
(glGet commands and glIsEnabled), and
glPushAttrib and glPopAttrib. Utility library
routines are not shown.
3. After their exectution, glDrawArrays and
glDrawElements leave affected current values
indeterminate.
4. This diagram is schematic; it may not directly
correspond to any actual OpenGL implementation.
Selection
Encoding
Selection
Feedback
Control
Encoding
PassThrough
SelectBuffer
Selection
Name
Stack
Bitmap
Rasterization
Masking
PixelZoom
PolygonStipple
FeedbackBuffer
DepthMask
Values
StencilMask
Bitmap
DrawPixels
Unpack
Pixels
TexImage
InitNames
Clear
Control
Clear
Pixel
ClearStencil
Rasterization
Pixel
Transfer
TexSubImage
ClearDepth
Texture
Memory
LoadName
PopName
PushName
ClearIndex
ClearColor
Masking
Frame Buffer
Control
Frame Buffer
PixelStore
PixelTransfer
ColorMask
IndexMask
PixelMap
DrawBuffer
Readback
Control
ReadPixels
Pack
Pixels
CopyPixels
CopyTexImage
CopyTexSubImage
ReadBuffer
Enable/Disable
Enable/Disable
LogicOp
Blending
(RGBA only)
Position
RenderMode
Dithering
Logic Op
Vertices
CC
CC
CC
CC
CC
CC
C
CC
Input
CC
Conversion
CC&
Current
CC
Values
CC
C
C
C
Evaluators
&
Vertex Arrays
Matrix
Control
CC
CC
CC
CC
CC
CC
CC
CC
C
CC
CC
CC
C
C
Texture Coordinate
Generation
Lighting
Clipping, Perspective,
and
Viewport Application
Rasteriz−
ation
Feedback
&
Selection
Pixels
Primitives
Texturing,
Fog,
and
Antialiasing
Per−Fragment Operations
Frame Buffer
&
Frame Buffer Control
Fragments
TexCoord2
r
0
TexCoord3
q
1
TexCoord4
Color3
A
1
Convert
Color4
RGBA to float
Convert
Index
index to float
Convert
Normal3
normal coords
to float
Vertex2
RasterPos2
Vertex3
RasterPos3
z
0
w
1
Vertex4
RasterPos4
Rect
Rectangle
Generation
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
Current
Texture
Coordinates
Current
RGBA
Color
Current
Color
Index
Current
Normal
OBJECT
COORDINATES
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CCC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
CC
OBJECT_LINEAR
TexGen
EYE_LINEAR
TexGen
SPHERE_MAP
TexGen
Enable/Disable
ColorMaterial
Material
M
Par
C
Light
Enable/Disable
Enable/Disable
b
M*b
Normalize
M
M−T
M
M
b
M
M*b
EYE
COORDINATES
La carte graphique
Le pipeline graphique
Opérations sur les fragments
Evolution
Les APIs
Les API graphiques 3D
La nécessité d’avoir d’autres API
I OpenGL et Direct3D restent de trop bas niveau ;
I Pourquoi veut on des API de haut niveau :
I
I
I
Plus simples ;
Moins proches du matériel ;
Plus proche de l’humain.
API de haut niveau
I Virtools (Dassault – propriétaire) ;
I
OpenInventor (Mercury/SIM – propriétaire/libre) ;
I
OpenSceneGraph (libre) ;
I
OGRE (libre), etc.
Jean-Yves Didier
Anatomie d’une carte 3D
Université d’Evry
12/12