IFT3355: Infographie Pipeline graphique

Slides:



Advertisements
Présentations similaires
( Application Programming Interface)
Advertisements

Architecture de machines Le microprocesseur
Carsten Dachsbacher Christian Vogelgsang Marc Stamminger
Hierarchical Z-Buffer Visibility
Plan Rappels La chaîne d’affichage Evolutions Fonctionnement de l’œil
DirectX Guillaume Randon Microsoft Services
Fanny CHEVALIER Guillaume CAURANT
RENDU DE TERRAIN Problématique : Rendre une très large zone de terrains en la simplifiant au maximum pour réduire le nombre de polygones à afficher. A.Bailly.
Unstructured Lumigraph Rendering
The Reyes Image Rendering Architecture
Accélération du Rendu Volumique basée sur la Quantification des Voxels
Technique des Surfels Surfels: Surface Elements as Rendering Primitives SIGGRAPH 2000 H.Pfiste, J.van Baar, M.Zwicker, M.Gross.
Ray Tracing Acceleration Techniques A Survey of Ray Tracing Acceleration Techniques James Arvo et David Kirk Ray Tracing on Programmable Graphics Hardware.
Rendu de pierres taillées en temps réel Stéphane Guy Directeur de stage: Cyril Soler.
IMAGIS-GRAVIR / IMAG Rendu de forêts en temps-réel iMAGIS / GRAVIR Franck Sénégas DEA IVR Tuteur: Fabrice Neyret.
Lancer de rayons interactif
جامعــــــة محمد خيضــــــــــــر
1 Visualisation avec OpenGL Jérémie Allard 4 Novembre 2002.
Technique et cas d‘applications
Programmation des logiciels infographiques interactifs 2D et 3D, et le OpenGL.
INF-1019 Programmation en temps réel
IFT3730: Infographie 3D Transformations Géométriques
Exposé réalisé par: ABID RIM TAIEB IMEN.
SUJETS SPÉCIAUX EN INFORMATIQUE I PIF Contenu du cours Transformations géométriques des objets –Transformations 2D –Transformations entre systèmes.
Algorithmique et Programmation
Optimisation et parallélisation de code pour processeur à instructions SIMD multimedia François Ferrand.
IFT3730: Infographie 3D Illumination locale
Ombres en temps-réel Nicolas Holzschuch Cours dOption Majeure 2
Images synthètiques de haute qualité
Introduction au multimédia
IFT3730 : Infographie 3D Systèmes et modèles graphiques Pierre Poulin, Derek Nowrouzezahrai Hiver 2013 DIRO, Université de Montréal.
IFT2740 : Outils de l'infographie 3D Systèmes et modèles graphiques
IFT3730 : Infographie 3D Plan de cours
IFT3355: Infographie Illumination globale
IFT3355: Infographie Visualisation
Position en fonction du temps
IFT3355: Infographie Visibilité
IFT3355: Infographie Transformations Géométriques
IFT3730: Infographie Projections
PROTOTYPE D’UN PROGRAMME ÉCRIT EN C++ BASÉ SUR OPENGL
IFT3355: Infographie Illumination locale
Traitement d’images sur carte 3D
1 Modèles de particules Reeves, W. T., "Particle Systems - A technique for Modeling a Class of Fuzzy Objects," SIGGRAPH 83, Reeves, W. T., and.
Les Cartes Graphiques. Plan I / Introduction DéfinitionHistorique Les Modes II / Constitution d’une carte et son fonctionnement ProcesseurMémoire Le bus.
Les images de synthèses Duprat Anatole. Les images de synthèses consistent en la création assistée par ordinateur, d'images numériques. Il existe différentes.
Création en images de Synthèse Modèles de rendu d’une scène 3D
GRAPHISME PAR ORDINATEUR
Projet Lancer de Rayons
Introduction aux Cartes Graphiques
Synthèse d’images 4. Animation
OpenGL Shading Language Introduction. But de ce cours  Non-buts  Spécialistes GLSL  Experts en GLSL  Exploration du pipeline graphique  Séparation.
Credits : Joëlle Thollot, Hector Briceño, Edmond Boyer
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 10 Textures –Définir la texture –Superposition d’une texture sur une surface plane –Superposition.
Les Cartes Graphiques.
Evaluation de PhysX pour le rendu d’océan Mini Projet 2008/2009 Vidal Clément Roudaut Prigent.
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 8 Rendu de surfaces –Modèles de rendu de surfaces –Illumination de la scène –Sources lumineuses –Composante.
Diagramme de Gantt. Groupe Core Module de vecteur de ℝ ² utilisé pour représenter toutes les coordonnées et leur appliquer des transformations. Ré-implémentation.
Les cartes graphiques Introduction Histoire Aujourd’hui
Architecture et Fonctionnement d’un GPU Géométrie Rendu.
Simulation réaliste de ruisseaux en temps réel Stage de M2R IVR 2005 Frank Rochet sous la direction de Fabrice Neyret GRAVIR / IMAG-INRIA.
Présentation de la carte graphique
Plan du cours Cours 1,2 : le pipeline graphique
Visualisation des flots optiques en 3D
Projet LIF Eduardo San Martin Morote Yoann Maret-Verdant
GRAPHISME PAR ORDINATEUR
IFT3355: Infographie Plan © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.
Éclairage, ombrage Fiat lux !.
Introduction aux technologies du jeux-vidéo Steve Gury
Transcription de la présentation:

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

Hardware Graphique Graphisme est passé des stations spécialisées coûteuses à tout ordinateur de base L’industrie 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…

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

nVIDIA

CryEngine 2 Synthétique Réel

Système d’affichage CPU Périphériques bus (e.g. PCI/AGP/PCI-express)‏ Mémoire

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

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

APIs (OpenGL, DirectX)‏ déclare et active l’état X attributs d’état: couleur, normale, uv, données par sommet inactive l’état X beginX( ); vertex (x,y,z); … endX( ); 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

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…)‏

Triangle Strips T0: v0 v1 v2 T1: v1 v2 v3 T2: v2 v3 v4 T3: v3 v4 v5

Generalized Triangle Strips v1 v3 v4 T1 T2 v6 T4 v0 T0 T3 v2 v5 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

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

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

Créer des strips: STRIPE Algorithm Si on permet plus que des triangles, on peut trianguler un polygone de différentes façons Patchification v0 v2 v4 v6 v8 v1,v18 v9,v10 v3,v16 v5,v14 v7,v12 v19 v17 v15 v13 v11 A chaque tournant, 3 swaps ou 2 sommets en extra

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

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 n’importe quelle donnée sans briser (et donc recompiler) la display list - Limitations en nombre et en taille

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)‏

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 l’organisation des données (compilateur)‏ CPU ne peut modifier que certaines parties des données Display traversal Modeling transformation Trivial accept/reject Lighting Viewing Clipping Dividing by w Mapping to viewport Rasterization

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 Clipping Dividing by w Mapping to viewport Rasterization

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

Pipeline graphique standard Si le shading est constant, il n’y a qu’une 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 Clipping Dividing by w Mapping to viewport Rasterization

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 Clipping Dividing by w Mapping to viewport Rasterization

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 s’attend à un maximum de 10% des primitives à découper, sinon pénalité Display traversal Modeling transformation Trivial accept/reject Lighting Viewing Clipping Dividing by w Mapping to viewport Rasterization

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 Clipping Dividing by w Mapping to viewport Rasterization

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

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 l’ordre derrière-à- devant

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

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

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

Zbuffer 16-32 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 d’aussi près que possible la scène entre l’avant-plan et l’arrière-plan

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

Stéréo Rendu d’une image pour l’oeil gauche et une autre image pour l’oeil 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 l’affichage de l’image)‏

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 d’ombre 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.

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

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)

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

Unified shader architecture to redistribute shader loads

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é, …

Vertex Shader Programmes pour modifier Forme: movements, motion blur, blend, morph, déformations, skinning, volumes d’ombre, 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 d’autres sommets

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

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

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 d’opé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 s’implémentent efficacement sur GPU calcul en précision float, pas encore en double accès mémoire sont limités

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

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