Professional Documents
Culture Documents
–
C H A P I T R E
2
M O D U L E
1
PROCESSEURS
GRAPHIQUES
ET
PIPELINE
Automne
2014
–
Université
de
Sherbrooke
Olivier
Vaillancourt,
Olivier
Godin
2014-‐09-‐26
1
2014-‐09-‐26
• Architectures graphiques
2
2014-‐09-‐26
3
CONCEPT
DE
PIPELINE
2014-‐09-‐26
4
2014-‐09-‐26
5
2014-‐09-‐26
6
2014-‐09-‐26
7
2014-‐09-‐26
8
2014-‐09-‐26
9
2014-‐09-‐26
11
ÉTUDE
DÉTAILLÉE
DU
PIPELINE
GRAPHIQUE
2014-‐09-‐26
12
2014-‐09-‐26
Étapes conceptuelles du pipeline graphique, respec1vement : étape d’applica1on, étape de géométrie, étape de rastérisa1on (RTR3, p.13, 2008)
13
2014-‐09-‐26
• ApplicaJon
:
L’étape
d’applica1on
s’exécute
sur
le
processeur
central
de
l’ordinateur.
C’est
dans
ceNe
étape
que
le
développeur
fournit
à
la
carte
graphique,
via
l’API
de
programma1on
et
les
pilotes
vidéos,
l’informaJon
géométrique
à
rendre
et
la
configuraJon
des
états
de
la
carte
vidéo.
Le
pilote
vidéo
est
une
couche
logicielle
permeNant
le
passage
entre
l’étape
d’applica1on
et
l’étape
de
géométrie.
• Géométrie
:
L’étape
de
géométrie
est
exécutée
à
l’intérieur
du
processeur
graphique.
Elle
est
cons1tuée
des
manipula1ons
et
transforma1ons
géométriques
effectuées
sur
chaque
vertex
envoyé
à
la
carte
graphique.
14
2014-‐09-‐26
15
2014-‐09-‐26
• Projec1on
Étapes de fonc1onnelles du pipeline géométrique. (Real-‐Time rendering 3, p.16, 2008)
16
2014-‐09-‐26
TransformaJon
modèle-‐vue
:
CeNe
étape
consiste
simplement
à
mul1plier
chaque
vertex
envoyé
au
processeur
graphique
par
la
matrice
modèle-‐vue
spécifiée
au
moment
de
l’entrée
du
vertex
dans
la
carte
vidéo.
Notons
que
la
matrice
modèle-‐
vue
est
la
combinaison
de
la
matrice
«
modèle
»,
permeNant
de
passer
de
l’espace
objet
à
l’espace
monde,
et
de
la
matrice
«
vue
»,
représentant
le
mouvement
de
la
caméra
(permeNant
de
passer
de
l’espace
monde
à
l’espace
caméra).
Note:
Ces
matrices
sont
purement
conceptuelles
même
si
elles
sont
groupées
dans
un
contexte
de
pipeline
de
rendu
fixe.
La
no1on
de
matrice
modèle-‐vue
disparaît
dans
un
pipeline
programmable.
Éclairage
et
teinte
des
vertex:
CeNe
étape
consiste
à
appliquer
le
calcul
des
informa1ons
par
vertex
qui
seront
interpolées
lors
de
la
rastérisa1on.
Ces
informa1ons
englobent,
par
exemple,
l’éclairage,
la
couleur
du
vertex
ou
le
calcul
des
coordonnées
de
texture.
17
2014-‐09-‐26
ProjecJon
:
La
projec1on
consiste
à
prendre
les
vertex
en
espace
caméra
(transformés
à
l’étape
de
la
transforma1on
modèle-‐vue)
et
de
les
transformer,
à
l’aide
de
la
matrice
de
projec1on,
vers
un
espace
normalisé
cubique.
Les
limites
de
cet
espace
sont
de
(-‐1,-‐1,-‐1)
à
(1,1,1)
sous
OpenGL
et
(-‐1,-‐1,0)
à
(1,1,1)
sous
Direct3D.
Après
la
transforma1on
de
projec1on,
les
coordonnées
des
vertex
sont
dites
être
en
coordonnées
normalisées
d’affichage.
Notons
aussi
que
la
projec1on
doit
idéalement
tenir
compte
de
la
dimension
du
canevas
d’affichage
en
pixels
afin
de
s’assurer
que
le
passage
des
vertex
en
fragments,
plus
tard
dans
le
pipeline,
correspondra
aux
bonnes
coordonnées
pixel.
Dans
tous
les
cas,
la
sorJe
de
cebe
étape
demeure
une
coordonnée
homogène,
ce
n’est
qu’à
l’étape
de
conversion
en
coordonnées
fenêtres
que
les
composantes
inu1les
des
vertex
sont
enlevées.les
trois
premières
étapes
géométriques
Notons
que
les
trois
étapes
précédentes
sont
des
étapes
dites
programmables,
car
elles
peuvent
être
remplacées
par
un
nuanceur
(shader).
Plus
d’informa1on
sur
les
nuanceurs
seront
données
au
chapitre
suivant.
18
2014-‐09-‐26
Tronquage
de
vision
:
CeNe
étape
consiste
à
éliminer
tous
les
éléments
situés
à
l’extérieur
du
cube
unitaire
créé
à
l’étape
de
projec1on.
En
effet,
la
totalité
des
éléments
que
l’u1lisateur
pourra
voir
dans
la
scène
se
trouve
dans
ce
volume
en
par1culier.
Les
éléments
à
l’extérieur
n’ont
pas
besoin
d’être
rendus,
car
ils
se
trouvent
à
l’extérieur
du
champ
de
vision.
On
tronque
donc
les
éléments
en
ques1on.
Plus
important
encore,
notons
que
le
tronquage
de
vision
s’effectue
à
ce
moment
dans
le
pipeline
graphique
parce
qu’il
permet
de
rendre
le
problème
de
tronquage
consistant.
En
effet,
le
tronquage
est
toujours
effectué
par
rapport
à
un
cube
de
vision
unitaire,
ce
qui
permet
un
calcul
plus
rapide
du
tronquage
que
s’il
était
effectué
plus
tôt
dans
le
pipeline.
(Les
calculs
sont
op1misés
du
fait
qu’on
travaille
toujours
avec
un
volume
unitaire
ou
demi-‐unitaire
aligné.)
Notons
aussi
qu’il
ne
peut
être
effectué
avant
dans
une
carte
vidéo
moderne
puisque
le
nuanceur
(shader)
de
vertex
peut
modifier
la
posi1on
de
ceux-‐ci
dans
l’espace,
ce
qui
modifierait
aussi
leur
posi1on
dans
le
volume
de
vision
normalisé,
modifiant
par
le
fait
même
le
tronquage.
19
2014-‐09-‐26
20
2014-‐09-‐26
21
2014-‐09-‐26
22
2014-‐09-‐26
• Combinaison
Étapes fonc1onnelles du pipeline de rastérisa1on. (Real-‐Time Rendering, p22, 2008)
23
2014-‐09-‐26
PréparaJon
des
triangles
:
CeNe
étape
sert
à
générer
des
données
d’interpola1on
et
à
précalculer
des
données
u1lisées
dans
l’étape
qui
suivra.
Elle
est
complètement
intégrée
au
matériel
du
processeur
graphique
et
s’effectue
automa1quement.
Elle
dépend
énormément
de
la
structure
interne
du
processeur
graphique
et
de
l’organisa1on
de
ses
tampons
de
mémoire
temporaires.
De
ce
fait,
elle
dépend
donc
beaucoup
du
modèle
et
du
constructeur
du
processeur
graphique.
Le
développeur
n’a
naturellement
pas
de
contrôle
sur
ceNe
étape
et
elle
demeure
transparente
à
celui-‐ci.
RastérisaJon
:
La
rastérisa1on
des
triangles
consiste
à
prendre
les
triangles
et
à
les
conver1r
en
fragments.
Pour
chaque
fragment
généré,
on
lui
associe
les
données
des
vertex
correspondants
après
les
avoir
interpolées.
(Coordonnées
textures,
normale,
couleur,
etc.)
Ces
informa1ons
seront
u1lisées
à
l’étape
suivante.
Note:
On
parle
ici
de
fragments
plutôt
que
de
pixels,
car
l’écriture
de
ces
derniers
dans
le
tampon
image
n’est
pas
encore
garan1e.
24
2014-‐09-‐26
ColoraJon
des
pixels
:
Les
deux
étapes
précédentes
sont
directement
intégrées
et
effectuées
dans
les
circuits
imprimés
dédiés
du
processeur
graphique.
Contrairement
à
ces
dernières,
la
colora1on
des
pixels
est
habituellement
programmable
et
s’effectue
à
l’aide
d’un
nuanceur
de
fragment
(fragment
shader).
C’est
à
ceNe
étape
que
s’effectue
la
colora1on
finale
du
pixel,
en
fonc1on
des
données
fournies
par
la
rastérisa1on,
par
les
textures,
etc.
Note:
Malgré
le
nom
de
l’étape,
on
parle
encore
ici
de
fragments
plutôt
que
de
pixels.
25
2014-‐09-‐26
Combinaison
:
La
dernière
et
plus
importante
étape
du
pipeline
de
rastérisa1on
est
l’étape
de
combinaison.
Dans
ceNe
étape
se
résolvent
plusieurs
éléments
au
niveau
de
la
visibilité
et
de
l’affichage,
et
s’inscrivent
plusieurs
informa1ons
dans
les
différents
tampons
de
mémoire
de
la
carte
vidéo.
On
compte
notamment
:
•
Test
pochoir
et
écriture
dans
le
tampon
pochoir
(stencil
buffer).
•
Test
de
visibilité
et
écriture
dans
le
tampon-‐z
(Z-‐buffer)
•
Mélange
de
couleur
et
écriture
dans
le
tampon
de
couleur
(blending).
•
Écriture
dans
le
canal
de
couleur
de
transparence
si
applicable.
Si
un
fragment
passe
les
tests
pochoir
et
le
test
de
visibilité
du
tampon-‐z,
il
est
écrit
dans
le
tampon
de
couleur.
C’est
uniquement
à
ce
moment
que
le
fragment
devient
un
pixel.
Avant
de
poursuivre,
regardons
en
détail
les
possibilités
d’u1lisa1on
des
éléments
précédents.
26
2014-‐09-‐26
En
jouant
avec
ces
op1ons
de
configura1on,
il
est
possible
d’obtenir
différents
effets
lors
du
rendu.
Notons
que
le
tampon-‐z
peut
être
reconfiguré
de
différentes
façons
à
l’intérieur
du
rendu
d’une
même
image.
27
2014-‐09-‐26
28
2014-‐09-‐26
ExplicaJons
:
Les
par1cules
se
mélangent
les
unes
aux
autres
indépendamment
de
leur
profondeur
puisque
l’écriture
dans
le
tampon-‐z
est
désac1vée
pour
leur
rendu.
Elles
sont
néanmoins
cachées
par
les
éléments
opaques
puisque
le
test
de
profondeur
demeure
ac1vé
et
que
les
éléments
opaques
ont
été
précédemment
rendus
dans
le
tampon-‐z.
29
2014-‐09-‐26
31
2014-‐09-‐26
32
2014-‐09-‐26
33
2014-‐09-‐26
34
2014-‐09-‐26
36
2014-‐09-‐26
• Si le test pochoir est passé et le test de profondeur a échoué.
37
2014-‐09-‐26
38
2014-‐09-‐26
39
2014-‐09-‐26
40
GESTION
DE
LA
MÉMOIRE
VIDÉO
2014-‐09-‐26
41
2014-‐09-‐26
42
2014-‐09-‐26
43
2014-‐09-‐26
Ceci
étant
dit,
il
faut
garder
en
tête
que
l’informa1on
lue
sur
la
carte
vidéo
a
souvent
préalablement
été
écrite
dans
ceNe
dernière
à
par1r
de
la
mémoire
vive.
La
lecture
de
la
mémoire
vidéo
est
donc
plus
rapide
que
la
lecture
dans
la
mémoire
vive
seulement
si
l’informaJon
lue
n’a
pas
besoin
d’être
mise
à
jour
(réécrite)
à
parJr
de
la
mémoire
vive
trop
souvent.
44
2014-‐09-‐26
45
2014-‐09-‐26
Les
types
d’accès
en
mémoire
se
divisent
quant
à
eux
en
trois
catégories
:
•
Lecture
seule
•
Écriture
seule
•
Lecture
et
écriture
Le
type
d’accès
en
mémoire
représente
le
type
d’accès
aux
données
par
l’applicaJon
et
non
par
le
processeur
graphique.
46
2014-‐09-‐26
2. Données
de
vertex
staJques
envoyés
en
écriture/lecture
:
Le
pilote
vidéo
stocke
les
données
en
mémoire
vidéo
puisqu’elle
est
sta1que,
mais
garde
aussi
une
copie
en
mémoire
vive.
Lorsqu’elle
doit
être
mise
à
jour,
la
copie
en
mémoire
vive
est
u1lisée
puis
transférée
vers
la
copie
en
mémoire
vidéo
de
manière
asynchrone
dans
un
moment
opportun
de
la
boucle
de
rendu.
48
2014-‐09-‐26
49
ARCHITECTURES
GRAPHIQUES
2014-‐09-‐26
50
2014-‐09-‐26
Modèle simplifié d’une architecture de rendu (Real-‐Time Rendering 3, p.842, 2008)
51
2014-‐09-‐26
2014-‐09-‐26
53
2014-‐09-‐26
54
2014-‐09-‐26
2. On
effectue
le
strict
minimum
de
calcul
requis
sur
les
vertex
pour
les
emmener
en
espace
image.
3. On divise l’image en tuiles et on associe un groupe de calcul à chaque tuile.
4. On
envoie
chaque
triangle
aux
unités
de
calcul
correspondant
aux
tuiles
où
ils
sont
affichés.
On
y
effectue
le
reste
de
l’étape
de
géométrie
et
la
rastérisa1on.
5. Lorsqu’une
unité
de
calcul
a
fini
de
rendre
sa
tuile,
elle
renvoie
ceNe
dernière
à
une
unité
centrale
qui
s’occupe
de
posi1onner
les
tuiles
dans
l’image.
55
2014-‐09-‐26
4. On
envoie
chaque
triangle
déjà
transformé,
en
coordonnée
fenêtre,
aux
unités
de
calcul
de
rastérisa1on
correspondant
aux
tuiles
où
ils
sont
affichés.
5. Lorsqu’une
unité
de
calcul
a
fini
de
rendre
sa
tuile,
elle
renvoie
ceNe
dernière
à
une
unité
centrale
qui
s’occupe
de
posi1onner
les
tuiles
de
manière
à
former
une
image
complète.
56
2014-‐09-‐26
57
2014-‐09-‐26
[Equalizergraphics.com, 2009]
58
2014-‐09-‐26
2. On effectue la totalité de la par1e géométrique du pipeline.
4. L’espace
3D
du
volume
canonique
de
vision
est
divisé
en
différentes
régions.
On
associe
un
groupe
de
calcul
pour
le
«
shading
»
et
le
mélange
de
chaque
région.
5. Tous
les
fragments
se
trouvant
dans
une
certaine
région
spa1ale
sont
envoyés
à
l’unité
de
calcul
associée
à
ceNe
région.
(Chaque
unité
de
calcul
possède
son
propre
tampon
de
couleurs
(frame
buffer)
et
son
propre
tampon-‐z
(z-‐buffer)).
6. Une
fois
tous
les
fragments
générés,
on
combine
les
images
produites
à
l’aide
des
tampons
de
couleur
et
des
tampon-‐z
générés
dans
chaque
image.
(On
se
sert
de
ceux-‐ci
pour
résoudre
la
visibilité
si
des
fragments
sont
superposés.)
59
2014-‐09-‐26
2. On procède au rendu complet pour chaque unité de calcul.
3. Chaque
unité
de
calcul
possède
son
propre
tampon
image
(frame
buffer)
et
écrit
dans
celui-‐ci
de
manière
désordonnée.
Comme
pour
l’architecture
précédente,
chaque
unité
possède
son
propre
tampon-‐z.
4. On
combine
les
images
en
les
superposant
et
en
tenant
compte
de
la
profondeur
via
le
tampon-‐z
préservé
de
chaque
image.
61
2014-‐09-‐26
62
2014-‐09-‐26
63
ANNEXE
:
ÉTUDE
DE
CAS,
XBOX
360
2014-‐09-‐26
64
2014-‐09-‐26
65
2014-‐09-‐26
66
2014-‐09-‐26
67
2014-‐09-‐26
Représenta1on schéma1que de l’architecture matérielle de la Xbox 360 (RTR3, p.860, 2008)
68
2014-‐09-‐26
3. Les
données
sont
ensuite
envoyées
au
séquenceur
qui
s’occupe
d’ini1aliser
les
programmes
des
nuanceurs
(shaders)
et
d’aller
meNre
en
cache
les
textures
u1les
au
rendu.
69
2014-‐09-‐26
5. Lorsque
le
nuanceur
de
vertex
a
terminé
son
exécu1on,
les
vertex
sortants
passent
par
l’export
de
nuanceur
et
sont
envoyés
à
un
assembleur
de
primiJves
(primiJve
assembler)
qui
prend
les
coordonnées
et
les
transforme
en
coordonnées
fenêtres.
L’assembleur
de
primi1ve
s’occupe
aussi
de
faire
la
prépara1on
des
triangles
et
le
tronquage
de
vision.
70
2014-‐09-‐26
8. Si
le
fragment
n’a
pas
été
détruit
à
l’étape
précédente,
on
le
renvoie
à
l’ALU
pour
exécuter
ceNe
fois
le
nuanceur
de
fragment.
CeNe
étape
correspond
à
l’étape
fonc1onnelle
de
colora1on
des
pixels.
9. Les
fragments,
après
avoir
passé
dans
l’ALU
sont
renvoyés
à
l’export
de
nuanceur
(shader
export).
11. Une
fois
tous
les
fragments
écrits
dans
le
tampon
de
couleur,
l’image
est
affichée
et
le
rendu
est
terminé.
71
2014-‐09-‐26
72
2014-‐09-‐26
74