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.