La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Architecture et Fonctionnement d’un GPU Géométrie Rendu.

Présentations similaires


Présentation au sujet: "Architecture et Fonctionnement d’un GPU Géométrie Rendu."— Transcription de la présentation:

1

2

3 Architecture et Fonctionnement d’un GPU
Géométrie Rendu

4 Sommets Sommet : x,y,z,w r,g,b,a Obligatoire Nx,Ny,Nz Couleur u,v
taille poids Obligatoire Couleur Normale Texture Taille du point « vertex blending » pour animation En octets : x,y,z,w : 16 , r,g,b,a : 4, Nx, Ny, Nz : 12, … Idéal : taille = taille du cache les cartes peuvent sans problème gérer des sommets de 64, 128 voire même 256 octets

5 Primitives point : billboards sprites ligne triangle triangle fan
triangle strip etc Indexation : passer les n° des sommets plutôt que les sommets

6 Tessellation deux informations nécessaires : position du sommet et normale But : interpoler la position et la normale  nouveaux sommets entre 2 existants. faire varier le nombre de sommets afin que les objets proches en possèdent beaucoup et que les objets distants en possèdent peu. Idéal : augmenter le nombre afin que chaque sommet = un pixel à l'écran (ressources !) Ex : triangles PN (Point-Normal ) (ATI) RT-Patches (Real-Time Patches) (NVIDIA) Oui en DirectX, Non en OpenGL

7 Vertex Pipeline version fixe : Transformations 3D de base
Eclairage de base Version programmable : Shaders

8 Vertex Pipeline: fixe données peu flexibles : ( couleurs obligatoirement RGBA, coordonnées = (X, Y, Z et W), etc.) Transformations (matrices) = translation, rotation ou échelle simples calculs au niveau de l'éclairage, position de la lumière et la normale

9 Vertex Pipeline : version programmable
énorme flexibilité au niveau des algorithmes de rendu (mais pas temps réel) Registres entrée : v0-v?? (sommet à traiter) récupération : r0-r?? (temporaires) constantes : c0-c?, i0-i?, b0-b? (globales à un shader) échantillonnage : s0-s3 (textures) adressage (a0), compteur de boucle (aL), attribut (p0)

10 Vertex Pipeline : version programmable
Instructions : en nombre limité racines carrées réciproques, des produits scalaires, des multiplications, additions Boucles, branchements conditionnels Vertex shader de réflection/réfraction (nVIDIA) Vertex shader de perturbation des sommets (nVIDIA )

11 Vertex Pipeline: performances
Unités de traitement des sommets (vertex units). unité ≈ vertex pipeline. un vertex pipeline (ou un vertex shader) traite un seul sommet à la fois => plusieurs unités traitent plusieurs sommets (2, 4, 8, 12 ou 16) en parallèle. Taille et vitesse du bus mémoire Taille des sommets Nombre d'instructions d'un shader

12 Clipping, Culling et tramage
Culling : pour éliminer des "faces avant" ou "faces arrière" Clipping : un sommet "hors" écran n'est pas affiché Tramage : construction des primitives à partir des sommets. anti-aliasing possible mais pas anti-aliasing complet (fin du pixel pipeline).

13 Pixel Pipeline le pixel pipeline reçoit un pixel, ainsi que quelques informations l'accompagnant (les coordonnées des textures, par exemple). A partir de ces informations, il va construire un pixel complet

14 Pixel Pipeline : version fixe
Le pixel pipeline s'occupe des textures (l'éclairage a déjà été calculé par le vertex pipeline). Une carte graphique est capable de stocker un nombre important de textures, mais ne peut en utiliser qu'un certain nombre simultanément (autour de 4 à 8 textures simultanées). Accès aux textures Pour chaque texture jeu de coordonnées de texture correspondant (les coordonnées UV). Mélange des textures Pour chaque texture, une opération différente est spécifiée. ex: pour la 1e texture, additionner la couleur actuelle du pixel à la couleur obtenue dans la texture. pour la 2e texture, multiplier la composante alpha (lightmaps).

15 Pixel Pipeline version programmable : pixel shaders
Entrée : données d'un pixel traitement Sortie : valeurs modifiées Instructions Ces instructions réalisent des opérations sur les valeurs qui leur sont fournies (par exemple couleur, UV, …). Texld Cette instruction (texture load) permet d'aller chercher des données dans les textures (couleurs, ou perturbations pour le bump mapping,…) Texkill contrôle le flux du pixel pipeline. En annulant le rendu d’un pixel on augmente les performances (le pixel ne va pas plus loin dans le processus de rendu).

16 Versions Pixel Shaders 1.3 Cette "première" version possédait très peu de registres ainsi que très peu d'instructions => limitée. Pixel Shaders 1.4 utilisée principalement par ATI ( Radeon 8500), elle est beaucoup plus puissante que la version précédente puisqu'elle peut aller chercher les données présentes dans les textures ( pas supportée par les cartes NVIDIA de l'époque). Pixel Shaders 2.0 et 2.x enfin utilisables parce que de nombreuses instructions ont été ajoutées (≈ vertex shaders 1.0) , tout en gardant les possibilités des pixel shaders 1.4 et en les simplifiant. Contrôle de flux avec la version 2.x. Pixel Shaders 3.0 ajout de quelques registres et quelques nouvelles instructions, amenant le jeu d'instructions des pixel shaders 3.0 plus ou moins au même niveau que celui des vertex shaders 3.0, avec évidemment plus d'instructions au niveau de l'accès aux textures.

17 Pixel Pipeline : performances
Plus il y a de pixels à traiter, plus c'est lent. Plus il y a de pipelines capables de les traiter, plus c'est rapide (32 en pratique).

18 Tests Alpha, de profondeur et stencil
Test alpha pour les effets de transparence. contrôle l'affichage des pixels (ne pas afficher les pixels où la composante alpha est à moins de 50%, par exemple). l'utilisation de la transparence consomme une certaine quantité de bande passante, puisqu'il y a techniquement plus de pixels à afficher. Le «fillrate » est donc affecté. Test de profondeur comme le test alpha ne pas afficher les pixels non visibles. Test du Stencil pour créer des ombres ou autres effets où la forme ou le contour d'un objet sont requis Le Z Buffer - (blanc: proche; noir: loin)

19 Brouillard et mélange alpha
≠brouillard volumétrique (technique de rendu) ≈ atténuation géométrique et atmosphérique Mélange de pixels de source et de destination

20 Fenêtre (viewport) Viewport : Anti-aliasing
où les pixels vont se retrouver dans la fenêtre toute la scène affichée sur un morceau de la fenêtre (ex : écran partagé en deux). scène affichée une première fois sur uen moitié, puis une seconde fois sur l’autre moitié. Anti-aliasing "fullscene anti-aliasing" s'applique à toute la scène, ≠ anti-aliasing de lignes, par exemple. Multisampling : scène rendue plusieurs fois, rendus légèrement décalés, valeurs de chaque pixel mélangées Supersampling : scène rendue en plus haute résolution, puis réduite à sa résolution « normale » (valeurs des pixels interpolées => image lissée)


Télécharger ppt "Architecture et Fonctionnement d’un GPU Géométrie Rendu."

Présentations similaires


Annonces Google