Télécharger la version PDF

Transcription

Télécharger la version PDF
U N IVERSIT É
D E R EIMS
C H AMP AGN E-A RD EN N E
Pipeline graphique
Leçon n°2 : concept et organisation
du pipeline graphique de DirectX 9
Année universitaire
2004-2005
Pascal Mignot
[email protected]
U N IVERSIT É
D E R EIMS
C H AMP AGN E-A RD EN N E
Parallélisme et pipelining
graphique
Le temps de traitement de chaque Pi est supposé identique.
Parallélisme: à chaque top, 3 sorties sur laquelle un seul
traitement a été effectuée.
Pipelining: à chaque top, une sortie sur laquelle
3 traitements ont été effectués.
P1
P1
P1
P1 P2 P3
Un pipeline graphique:
• suite de traitements successifs (pipeline et/ou parallèle)
• en entrée: un flux de facettes de propriétés matérielles connues.
• en sortie: des Texels (TExtured piXEL) résultats du traitement du flux
de facettes à travers le pipeline.
Exemple: ATI Radeon 9800 pro, fréquence interne: 380Mhz
huit pipelines parallèles à pixels: 3 gigaPixels/seconde.
quatre pipelines parallèles à sommets.
Geometry
pipeline
Vertex
shader
Viewports and clipping
Multitexturing
Pixel
shader
Fog blending
Alpha, stencil and depth testing
Frame buffer blending
Variable Function Pipeline
Note: le pipeline effectif n'est pas celuici et dépend de l’architecture de la
carte, les unités sont souvent
mélangées entre elles dans des buts
pratiques ou d'optimisation (exemple:
depth testing avant multitexturing).
High-order primitive
tesselation
Transformation
and lighting
Fixed Function Pipeline
En trois phases:
• une unité de traitement
géométrique des
sommets.
• une unité locale de
traitement des pixels.
• une unité globale de
traitement des pixels.
Pixel and texture
blending
C H AMP AGN E-A RD EN N E
Rasterization
U N IVERSIT É
D E R EIMS
Pipeline
Graphique
Théorique
Vertex
data
Pipeline graphique
U N IVERSIT É
D E R EIMS
(avec les doigts)
C H AMP AGN E-A RD EN N E
Pour décrire sommairement les 3 phases:
• phase 1:
transformations et calculs géométriques sur les sommets.
= comment transformer et calculer les propriétés aux
sommets.
• phase 2:
calcul du rendu local et texturage de la facette.
= comment peindre la facette.
• phase 3:
construction et rendu de l'image finale.
= comment afficher et mélanger les facettes.
Pipeline graphique
U N IVERSIT É
D E R EIMS
C H AMP AGN E-A RD EN N E
architecture (exemple du 6800 & 6600)
Vertex Shader Unit : traitement et transformation
des sommets.
Triangle Setup : construction et répartition des
pixels associés à chaque facette.
Shader Instruction Dispatch : répartition des
instructions du PS entre les différents pixel
pipelines.
Pixel Shader Unit : traitement et texturage des
pixels.
Fragment crossbar : assignation de la sortie des
PS à un ROP disponible.
ROP units : opérations de rasterization et de sortie.
Z-Cull : Z/stencil
Memory Partition : RenderTargets
Pipeline géométrique
U N IVERSIT É
D E R EIMS
C H AMP AGN E-A RD EN N E
(geometry pipeline)
Phase pendant laquelle est effectuée:
• les transformations géométriques des sommets
(changements de repère, blending, …).
• les calculs d'illumination en chaque sommet basés sur un
modèle de BRDF (utilise la géométrie locale de la surface
au sommet).
• les simplifications et calculs géométriques liés au point de
vue de l'observateur (culling, clipping).
Le Vertex Shader est une unité complètement programmable
par l'utilisateur qui remplace l'unité TnL*.
* Transformation aNd Lighting.
U N IVERSIT É
D E R EIMS
C H AMP AGN E-A RD EN N E
Transformation & illumination
World
Transform
(détail)
En entrée: sommets dans l'espace du modèle.
Les différentes étapes:
• World Transform : passage du repère local au repère
global (i.e. transformation et positionnement des sommets
de l'objet dans le repère global).
• Vertex Blending: combinaison d'un ou plusieurs
ensemble de sommets (animation, articulations).
• View Transform: passage du repère global au repère de
l'observateur.
• Vertex Fog: calcul de la couleur du brouillard pour chaque
sommet.
• Lighting & Materials: calcul du rendu de couleur en
chaque sommet en utilisant les propriétés des matériaux et
des lampes.
• Projection Transform : passage du repère de
l'observateur à l'espace projeté.
En sortie: sommets avec calculs d'illumination dans l'espace
projeté.
Vertex
Blending
View
Transform
Vertex
Fog
Lighting &
Materials
Projection
Transform
Viewport & clipping
U N IVERSIT É
D E R EIMS
C H AMP AGN E-A RD EN N E
(détail)
Entrée: sommets avec calculs d'illumination dans
l'espace projeté.
Les différentes étapes:
• Clipping: suppression des sommets à l'extérieur du
cône de vision.
• Back-face culling: rejet trivial des facettes non
visibles (normale).
• Homogeneous divide: sortie de l'espace
homogène.
• Viewport scaling: mise à l'échelle de l'espace
projeté au plan de l'écran.
• Triangle setup: préparation des interpolations sur
les facettes pour le calcul des propriétés dans les
pixels associés.
Sortie: sommets avec calculs d'interpolations.
Clipping
Back-face
culling
Homogeneous
divide
Viewport
scaling
Triangle
setup
Mélange pixel-texture
U N IVERSIT É
D E R EIMS
C H AMP AGN E-A RD EN N E
(pixel & texture blending)
Phase pendant laquelle les couleurs diffuses et spéculaires
résultats de la phase précédente sont mélangés avec:
• l'ensemble de textures.
• les effets de brouillard.
Après l'étape de Multitexturing, on obtient les pixels éclairés et
texturés associés à chaque facette.
Aucune transformation géométrique est effectué lors de cette
phase, on travaille pixel par pixel seulement.
Le Pixel Shader est une unité complètement programmable par
l'utilisateur et qui remplace l'unité de texturage, ce qui permet
de faire des calculs géométriques -par exemple per-pixel
lighting- en faisant descendre de la géométrie en utilisant les
coordonnées de texture/textures.
Construction de l'image
U N IVERSIT É
D E R EIMS
C H AMP AGN E-A RD EN N E
(rasterization)
Phase pendant laquelle l'image finale est construite
à partir:
• des pixels texturés et des alphas.
• du contenu du z-buffer.
• des stencils (pochoirs).
• d'autres images (frames).
– FSAA (FullScreen Anti-Aliasing): pour une anti-aliasing
plein écran par moyenne de plusieurs rendus de la
même scène.
– Motion-Blur: pour un flou de mouvement par moyenne
de plusieurs rendus de la scène à des instants
consécutifs.
Le résultat est envoyé sur la sortie souhaitée
("écran", buffer, texture, …).
U N IVERSIT É
D E R EIMS
Traitement des pixels
C H AMP AGN E-A RD EN N E
Les documents techniques de Microsoft font apparaître une
imbrication importante entre les deux dernières phases:
• Multitexturing: composition des textures et des couleurs issues
de l'illumination.
• Alpha test: test permettant d'accepter ou de rejeter le pixel
calculé en fonction de la valeur de son alpha.
• Depth test: test et mise à jour du tampon de profondeur si le
pixel est visible.
• Stencil test: test du pochoir pour savoir si le pixel est dans une
zone qui remplit les conditions d'affichage.
• Per-pixel fog: applique le brouillard sur le pixel.
• Alpha blend: utilise le alpha du pixel pour créer les effets de
transparence ou semi-transparence.
• Dither: mélange des couleurs des pixels adjacents pour obtenir
une couleur plus consistante.
• Gamma: applique la correction gamma définie.
En sortie: le pixel prêt à être affiché relativement à l'état courant de
traitement du flux de sommets.
Multitexturing
Alpha
test
Depth
test
Stencil
test
Per Pixel
fog
Alpha
blend
Dither
Gamma
U N IVERSIT É
D E R EIMS
concept du pipeline
C H AMP AGN E-A RD EN N E
Bien comprendre les différentes phases du pipeline
est important:
• permet d'avoir une idée exacte sur l'ensemble des
traitements appliqués.
• utilisation "futée" des fonctionnalités disponibles
pour exploiter D3D de manière efficace
• des options sont disponibles pour contrôler
quasiment toutes les étapes du rendu.
Les détails techniques pour la suite …
U N IVERSIT É
D E R EIMS
Futur du pipeline graphique
C H AMP AGN E-A RD EN N E
Ce qui nous utilisons aujourd’hui est extrêmement rustre!!!
Avec DirectXNext et WGF (Window Graphic Foundation) ,
• unification de la notion de shader (common shader core): plus de distinction
en pixel/vertex shader et nouveau type de shaders.
• possibilité de faire en plus de la détection de collision ou des calculs
physiques sur le GPU (la puissance de calcul du GPU est plus élevé que
celui du CPU car il est massivement parallèle).
• fin du pipeline graphique fixe (déjà effectif sur les derniers GPU).
• opérations topologiques entre objets (topology processor).
• support direct des surfaces de haut niveaux (amélioration du tesselator).
et la gestion du GPU comme avec un véritable système:
• partage du GPU entre applications.
• mémoire vidéo virtuelle (ressources « illimités », partage entre shaders, ...).
A court terme, il faudra attendre les betas de la Longhorn pour y voir un peu
plus clair.