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

IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Présentations similaires


Présentation au sujet: "IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal."— Transcription de la présentation:

1 IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal

2 Hardware Graphique Graphisme est passé des stations spécialisées coûteuses à tout ordinateur de base Lindustrie du jeu vidéo pousse pour des améliorations constantes des cartes graphiques Performance du GPU double à chaque 12 mois Les nouvelles cartes programmables sont même utilisables comme co-processeur mathématique…

3 State-of-the-Art Real-Time Rendering 2001

4

5

6 nVIDIA

7 Réel Synthétique CryEngine 2

8 Système daffichage CPU Mémoire Périphériques bus (e.g. PCI/AGP/PCI-express)

9 Système daffichage CPU MémoireFrame buffer Contrôleur vidéo Moniteur Périphériques bus (e.g. PCI/AGP/PCI-express) libère laccès au bus avec un bus vidéo CPU fait tout le travail, mais il a toute la flexibilité Dans une configuration double buffer, un multiplexeur alterne entre les deux frame buffers dans les deux sens CPU:GPU v1: 16 lignes à 250 MB/sec v2: 32 lignes à 500 MB/sec

10 Pipeline de base Programme usager Traitement géométrie Traitement pixel primitives (points, lignes, polygones) images (textures, masques) traitement par sommet 3D à 2D pixels à lécran rasterization couleur sortie au frame buffer

11 APIs (OpenGL, DirectX) beginX( ); vertex (x,y,z); … endX( ); déclare et active létat X attributs détat: couleur, normale, uv, données par sommet inactive létat X paramètres détat: lumières, géométries, textures, options de rendu, etc. tout changement détat réduit la performance immediate mode (tout passe par le CPU) optimisation détats, stocké sur carte graphique

12 Améliorer la vitesse de rendu Parallélisme –calcul de matrices, triangles, textures, etc. –complexité (logique et silicon) et coût Pipeline –n étapes devrait être n fois plus rapide –chaque étape peut aussi être un pipeline elle-même, mais elle pourrait aussi être traitée en parallèle pour des besoins accrus en performance –vitesse du pipeline est déterminée par son étape la plus lente (bottleneck) –il est important de réduire le nombre de sommets transmis (triangle strips, triangle fans, quadrilatères…)

13 Triangle Strips v0 v1 v2 v3 v4 v5 v6 v7 T0 T1 T2 T3 T4 T5 T0: v0 v1 v2 T1: v1 v2 v3 T2: v2 v3 v4 T3: v3 v4 v5 T4: v4 v5 v6 T5: v5 v6 v7

14 Generalized Triangle Strips v0 v1 v2 v3 v4 v5 v6 T0 T1T2 T3 T4 T0: v0 v1 v2 T1: v1 v2 v3 Swap v3 v2 (triangle dégénéré) T2: v3 v2 v4 T3: v2 v4 v5 T4: v4 v5 v6 peut même créer des strips déconnectés

15 Triangle Fans v0 v1 v2 v3 v4 v5 v6 T0 T1 T2 T3 T4 T0: v0 v1 v2 T1: v0 v2 v3 T2: v0 v3 v4 T3: v0 v4 v5 T4: v0 v5 v6

16 Triangle Strips et Triangle Fans Plus difficile de trouver des fans que des strips Nombre de sommets envoyés au pipeling pour m triangles Ex: m=10, tris=1.2; m=5, tris=1.4

17 Créer des strips: STRIPE Algorithm Si on permet plus que des triangles, on peut trianguler un polygone de différentes façons Patchification v0v2v4v6v8 v9,v10 v11 v7,v12v5,v14 v13v15 v3,v16 v17 v1,v18 v19 A chaque tournant, 3 swaps ou 2 sommets en extra

18 Vertex arrays Passe au GPU un vecteur de sommets et un vecteur dindices reliant ces sommets en triangles On peut aussi encoder le vecteur dindices en un strip Si la géométrie nest pas modifiée entre deux appels au vecteur, on peut la stocker directement en mémoire du GPU

19 Display Lists displayID = createDisplayList( ); …; endDisplayList; … drawDisplayList (displayID); Conserve simultanément –les données sur les triangles directement sur le GPU –les commandes graphiques (état, texture, etc.) Peut imbriquer des display lists dans des display lists +Optimise (compile) les commandes graphiques pour le hardware graphique -Ne permet pas de modifier nimporte quelle donnée sans briser (et donc recompiler) la display list -Limitations en nombre et en taille

20 Vertex Buffer Objects (VBO) Similaire aux vertex arrays, on peut stocker –les données sur les triangles directement sur le GPU –les commandes graphiques par sommet (état, texture, etc.) +Permet de modifier des sections des vecteurs (indices et contenu) -Commandes ne sont pas optimisées (compilées)

21 Pipeline graphique standard Parcours et traitement de la scène –primitives, couleurs, transformations, textures –Détection/réaction aux collisions, morphing, frustum culling hiérarchique Immediate mode –Flexible mais exigeant pour le CPU Retained mode –Structure de forme display list –Optimisations dans lorganisation des données (compilateur) –CPU ne peut modifier que certaines parties des données Display traversal Modeling transformation Trivial accept/reject Lighting Viewing transformation Clipping Dividing by w Mapping to viewport Rasterization

22 Pipeline graphique standard Espace objet à espace monde (ou pyramide de vue) Sommet transformé par une matrice combinée Normale transformée en fonction du shading (constant/flat ou Gouraud/Phong) Display traversal Modeling transformation Trivial accept/reject Lighting Viewing transformation Clipping Dividing by w Mapping to viewport Rasterization

23 Pipeline graphique standard Test avec le volume de vue Si lobjet est à lextérieur, ce test réduit le travail dans les étapes suivantes Display traversal Modeling transformation Trivial accept/reject Lighting Viewing transformation Clipping Dividing by w Mapping to viewport Rasterization

24 Pipeline graphique standard Si le shading est constant, il ny a quune couleur par polygone et lumière Pour le shading de Gouraud, une couleur par sommet Pour le shading de Phong, il y aura plus de travail à faire lors de létape de rasterization Display traversal Modeling transformation Trivial accept/reject Lighting Viewing transformation Clipping Dividing by w Mapping to viewport Rasterization

25 Pipeline graphique standard Espace monde à espace normalisé de projection Une partie des transformations peut être faite lors de létape de modeling transformation Display traversal Modeling transformation Trivial accept/reject Lighting Viewing transformation Clipping Dividing by w Mapping to viewport Rasterization

26 Pipeline graphique standard Un triangle peut alors résulter en plus de trois sommets Primitives plus complexes peuvent être traitées par scissoring (ne dessine que si non- rejet trivial: rasterization devient moins efficace) On sattend à un maximum de 10% des primitives à découper, sinon pénalité Display traversal Modeling transformation Trivial accept/reject Lighting Viewing transformation Clipping Dividing by w Mapping to viewport Rasterization

27 Pipeline graphique standard Après une transformation de perspective, w est en général différent de 1 Changement déchelle et translation pour le viewport Display traversal Modeling transformation Trivial accept/reject Lighting Viewing transformation Clipping Dividing by w Mapping to viewport Rasterization

28 Pipeline graphique standard Scanconversion Détermination de visibilité –Zbuffer Shading (transparence et texture) Display traversal Modeling transformation Trivial accept/reject Lighting Viewing transformation Clipping Dividing by w Mapping to viewport Rasterization

29 Rasterization (scanconversion) Calcul par pixel –Position 2D, profondeur, couleur, coordonnées de texture –Visibilité Double buffer –Rendu dans back buffer et swap en front buffer (affiché) Transparence –Rendu des objets opaques –Rendu des objets transparents dans lordre derrière-à- devant

30 Buffers Color buffer Zbuffer Single et double buffering Stéréo Stencil et accumulation

31 Color Buffer (Frame Buffer) Color map –Index (1 byte) dans une table de couleurs High color –2 bytes: 32,768 to 65,536 colors True color, RGBA mode –3-4 bytes: 16,777,216 colors –32 bits est souvent optimisé pour le traitement des commandes en hardware

32 Color Buffer (Frame Buffer) True color, RGBA mode –24 bits est satisfaisant pour afficher les couleurs –Accumulation en rendu multi-passes produit de la discrétisation (quantisation) des couleurs résultant en des zones uniformes (banding) –SGI permet de calculer les couleurs en 12+ bits par canal, mais affiche avec 8 bits par canal Overlay plane –1-8 bits, devant le buffer couleur pour menus, cursors, interfaces, highlighting, etc. –Affiche sans affecter le buffer couleur

33 Zbuffer bits (récemment jusquà 96 bits en floating point) Projection orthographique –Distance entre les séparateurs (zones) est la même Projection perspective –Distance est plus petite près de la caméra que loin de la caméra –Essayer de borner daussi près que possible la scène entre lavant-plan et larrière-plan

34 Buffering Single buffer –Dessine les polygones, clear, dessine les polygons, … –Synchroniser le clear avec le vertical retrace du moniteur (Amiga) Double buffer –Image précédente est affichée dans le front buffer pendant que dessine dans le back buffer –Swap buffers (adresse ou BitBLT) durant le vertical retrace

35 Stéréo Rendu dune image pour loeil gauche et une autre image pour loeil droit –Lunettes rouge-vert (images en niveau de gris, possible même en single buffer) –Head-mounted displays (casques) –Shutter glasses (bloque un oeil en synchronisation avec laffichage de limage)

36 Stencil et Accumulation Buffers Même résolution en pixels que le frame buffer Stencil –1-8 bits pour des opérations de masque –Volumes dombre de Crow (complexité de profondeurs de 256 valeurs) Accumulation –Deux fois (typiquement) la résolution de profondeur –Couleurs de chaque image sont combinées avec un opérateur –Profondeur de champ, flou de mouvement, antialiassage, ombres douces, etc.

37 Rendu en multi-passes Une passe: calcule les couleurs et affiche limage Multi-passes: plusieurs itérations des opérations (calcule les couleurs et modifie les couleurs précédentes), ensuite affiche limage Ex: diffus et texture, spéculaire selon texture

38

39

40 Quelques percées Mémoire sur carte –Store géométrie –Store textures 1998: multi-textures 1999: transformation et illumination 2001: shader programmable 2002: shader pixel 2003: langage de programmation high-level 2004: conditions dans les shaders 2006: floating point 2007: shader géométrique 2008: Larrabee (a multi-core architecture)

41 Direct3D 10 Features Input Assembler Vertex Buffer Index Buffer Texture Depth/Stencil Render Target Stream Output Vertex Shader Geometry Shader Rasterizer/ Interpolator Pixel Shader Output Merger

42

43 Unified shader architecture to redistribute shader loads

44 Cg de nVIDIA (vs. HLSL pour Microsoft, GLSL pour OpenGL) Langage similaire à C Un programme Cg est compilé en –DirectX 8,9,10 –OpenGL arb,nvidia Utilisé pour les vertex et fragment shaders Particularités du langage –Opérateurs acceptent/retournent des scalaires et vecteurs –Swizzling de.xyzw et.rgba v3 = s.xxy; // v3.x = s.x; v3.y = s.x ; v3.z = s.y v3.xw = s; // assignation seulement aux composantes xw –Fonctions spéciales (abs, dot, log2, reflect, rsqrt, …) –Aucun: pointeurs, opérations sur bits, unions, aucun C++ avancé, …

45 Vertex Shader Programmes pour modifier –Forme: movements, motion blur, blend, morph, déformations, skinning, volumes dombre, etc. –Couleur/texture: réflexion, bump map, textures projetées Un sommet : vertex shader : un sommet –On doit alors transformer et illuminer le sommet nous- mêmes –Ne permet pas de créer de nouveaux sommets (avant la venue du geometry shader) –Impossible de modifier dautres sommets

46 Vertex Shader Un programme plus long ralentit le pipeline SIMD: chaque instruction sur un vecteur (r.x, r.y, r.z, r.w) est traitée en parallèle GeForce3+4 and Radeon8500/9700: –128/256 instructions par vertex shader

47 Exemples de Pixel Shaders Réflexion par pixel Illumination par pixel (Phong, BRDF) Textures procédurales

48 GPGPU - General Purpose GPU Les premiers environnements de GPGPU –Les tableaux deviennent des textures, le calcul devient une opération de rendu; il faut connaître le graphique –Le pixel shader est souvent préféré pour effectuer autant dopérations en parallèle GPGPU langages: –CUDA (nVIDIA), CAL (AMD), RapidMind platform, Brook project, Microsoft Accelerator GPU est utilisé comme un stream processor Pas tous les problèmes simplémentent efficacement sur GPU –calcul en précision float, pas encore en double –accès mémoire sont limités

49 GPGPU - Exemples dapplications Ray tracing, radiosity, photon mapping Simulations physiques dans les jeux (havok) Simulations selon les équations de Navier-Stokes, Smoothed-particle hydrodynamics, Lattice Boltzmann, équations dEuler (fluides, nuages, etc.) Librairies de FFT et transformées en ondelettes Alignements de protéines Chimie quantique etc.

50 Larrabee (Intel) 32 cores x 16 single-precision float SIMD per core x 2 FLOPS x 2GHz per core = 2 TFLOPS


Télécharger ppt "IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal."

Présentations similaires


Annonces Google