RV01 A15_Optimisation 3D - RV 01 – Réalité virtuelle
Transcription
RV01 A15_Optimisation 3D - RV 01 – Réalité virtuelle
RV01 Réalité virtuelle, mixte, augmentée Resp: [email protected] D1 [email protected] D2 [email protected] D3 [email protected] Indira Thouvenin 1 Plan A ) Les optimisations principales: méthodes et principes B) Gérer les collisions C) Calcul parallèle D) Cartes graphiques et gestion des optimisations Plan A ) Les optimisations principales: méthodes et principes 1. objectif général 2. Alléger les modèles 3D: maillage 3. Gérer les textures: mip mapping 4. Remplacer par des leurres: billboards ou « imposteurs » 5. Afficher selon la distance à la caméra: LOD B) Gérer les collisions C) Calcul parallèle D) Cartes graphiques et gestion des optimisations A ) Les optimisations principales: méthodes et principes 1. – Objectif général Afficher à la bonne vitesse les images exemple 1:BB samples\optimizations\time settings.cmo frame rate ou FPS = nombre d’images par seconde tableau « time settings array » voir les détails du profiler soit on gère le frame rate, soit on gère le temps possible synchroniser avec l’écran (par ex. 75Hz) : inutile au delà – Alléger la mémoire centrale Calculer plus vite 2. Alleger les maillages 5 2. Alléger les modèles 3D: maillage • • • Géométrie discrète Divise la scène en zones concentriques centrées sur la position de la caméra virtuelle Rayon des scènes concentriques défini par l’utilisateur Modèles des objets chargés dynamiquement selon distance à la caméra 2. Alléger les modèles 3D: maillage • • Rendu effectué en temps réel selon modélisation (maillage) Changements de représentation en fonction – de la distance entre l’objet et le point de vue – de la taille de la projection de l’objet sur l’écran – du type d’interaction Améliorer le maillage simplifé 8 5. Niveau de détail ou LOD (level of detail) EXEMPLES UNITY Indira Thouvenin 9 4. Remplacer par des leurres: billboards ou « imposteurs » • • Polygones faisant toujours face à la caméra Utilisation de textures • Les imposteurs peuvent ou non être des billboards / « Décors de théâtre » • Les performances dépendent des cartes graphiques (geometrie vs bitmap) Exemples de Billborads 11 Combinaison pour le LOD avec Billboards 12 Polypostors 13 SKYBOX 14 4. Remplacer par des leurres: billboards ou « imposteurs » EXEMPLE UNITY 4. Remplacer par des leurres: billboards ou « imposteurs » EXEMPLE UNITY 5. Niveau de détail ou LOD (level of detail) Def: La gestion du niveau de détail combine les méthodes utilisées pour améliorer le pipeline graphique à travers le choix approprié du niveau de détail des objets. (Burdéa & Coiffet 2003) Principe:inutile d’afficher tous les polygones d’un objet distant de l’observateur, il suffit de lui fournir une représentation simplifiée. Plusieurs types de gestion du LOD: statique ou adaptative, 5. Niveau de détail ou LOD (level of detail) 5. Niveau de détail ou LOD (level of detail) LOD 10 50 G7 G1 G2 G3 G4 G5 G6 Martin Hachet U. Bordeaux 5. Niveau de détail ou LOD (level of detail) a) Gestion statique du LOD Géométrie discrète Alpha blending •Plusieurs représentations par objet dans la BDD Morphing Vertex optimization Unity Indira Thouvenin 21 LOD Transitions Unity 22 LODGroup Unity • http://docs.unity3d.com/ScriptReference/LOD Group.html 23 5. Niveau de détail ou LOD (level of detail) – Problème des transitions / buffer d’hystérésis – Problème des sauts: • Alpha blending: gestion de la transparence/ distance caméra • Morphing: simplification du maillage en fonction distance à la caméra Augmenter la vitesse de calcul 5. Niveau de détail ou LOD (level of detail) b) Gestion adaptative du LOD – Résolvent problèmes non résolus en LOD statique – Tenir compte de l’information d’illumination locale – Méthode du pré calcul – Méthode de la valeur de l’objet 5. Niveau de détail ou LOD (level of detail) b) Gestion adaptative du LOD Plan A ) Les optimisations principales: méthodes et principes B) Gérer les collisions Un objet dynamique dans objets statiques Plusieurs objets dynamiques C) Calcul parallèle D) Cartes graphiques et gestion des optimisations RV01 Automne 2008 I.Thouvenin B) Gérer les collisions Un objet dynamique dans objets statiques Objet se déplace dans boîte englobante Collisions\ Box box intersection.cmo Calcul intersection entre boites englobantes fixes et celle de l’avatar Collisions\ object slider.cmo Autre exemple: floor / attribut Collisions\ declare floors RV01 Automne 2008 I.Thouvenin B) Gérer les collisions Plusieurs objets dynamiques Collisions\ sphere sphere intersection.cmo Tests à différents niveaux: boites, faces, portions de faces Partition de l’espace pour optimiser calculs (voir cours Ray Tracing) RV01 Automne 2008 I.Thouvenin Plan A ) Les optimisations principales: méthodes et principes B) Gérer les collisions Un objet dynamique dans objets statiques Plusieurs objets dynamiques C) Calcul parallèle D) Cartes graphiques et gestion des optimisations RV01 Automne 2008 I.Thouvenin c)Calcul parallèle C1 Pipelining - succession de traitements en série - comparaison : assemblage d’une automobile/ chaîne de production/chaque poste est occupé tout le temps Objets écartés Objets Transformations (translation, rotations, projections,homothéties) Construction du volume englobant Test d’intersection Clipping et pipeline:même durée pour chaque étape Objets intersectés c)Calcul parallèle C2 Traitement des données par processeurs multiples - idée de base : les tâches sont divisées et traités en parallèles Ray packets rayon1 Processeur 1 Objet 1 rayon 2 Processeur 2 Objet 2 Ray Tracing et calcul parallèle rayon n Processeur n Objet n Object packets c)Calcul parallèle Conclusion: fonctionnalités qui peuvent être programmées Ou réalisées par la machine Software vs hardware Cartes graphiques : à exploiter au maximum en privilégiant les fonctionnalités les mieux traitées par la carte Evolution des cartes graphiques, 2D-3D Performances selon critères variés: parfois beaucoup d’efforts pour rien…attention aux goulets d’étranglement RV01 Automne 2008 I.Thouvenin Plan A ) Les optimisations principales: méthodes et principes B) Gérer les collisions C) Calcul parallèle D) Cartes graphiques et gestion des optimisations 1 Historiques et modes graphiques 2 Architecture-évolution des composants RAMDAC (CRT/DVI) Bus Mémoire Accélérateur graphique/GPU Shaders 1 Historiques et modes graphiques A) Définitions versions originales et “clones” ou copies • ex: une carte est créée par Nvidia ; une autre société Duchmol offre une carte dont l’aspect et le fonctionnement est semblable. Cette carte est un clone de l’original. • pour raisons juridiques, interdiction de copier une carte à 100% Réalisation technique d’un clone doit différer de l’original: pour certaines parties le clone fonctionne comme l’original, mais n’est pas identique à lui. On dit que le clone est « compatible » avec l’original. 1 Historiques et modes graphiques B) Généralités Les types de cartes graphiques: - cartes simples: suffisent pour applications bureautiques (SVGA 8 Mo) - cartes accélératrices 2D-3D pour applications en 2 ou 3 dimensions comme CAO, DAO, PAO, ou RV, jeu, … Cartes accélératrices: minimum 16 Mo, mais la plupart 32/ 64 Mo SDRAM ou DDRAM Différence entre ces cartes: processeur graphique intégré dans les cartes accélératrices RV01 Automne 2008 I.Thouvenin 1 Historiques et modes graphiques B) Généralités Mémoire centrale Carte graphique simple Carte mère CPU Blitter CPU: Central process Unit/ Unité centrale Blitter: Bit bLock Transfert/ transfert de blocs de bits RV01 Automne 2008 I.Thouvenin Afficher des caractères à un endroit précis/ Afficher des images 1 Historiques et modes graphiques B) Généralités Frame buffer Bus AGP Carte graphique accélératrice GPU Principe GPU (Graphic Process Unit) Conversion A/N Mémoire vidéo Moniteur ou autre système d’affichage 1 Historiques et modes graphiques 1981: 1ère carte graphique par IBM,mode texte uniquement 80x25 caractères à 50Hz, port imprimante 2015: Carte Nvidia GeForce Plan A ) Les optimisations principales: méthodes et principes D) Cartes graphiques et gestion des optimisations 1 Historiques et modes graphiques 2 Architecture-évolution des composants RAMDAC (CRT/DVI) Bus Mémoire Accélérateur graphique/GPU Vertex Shader Pixel Shader RV01 Automne 2008 I.Thouvenin 2 Architecture-évolution des composants Mémoire centrale BUS Accélérateur Graphique GPU Mémoire vidéo DVI RAMDAC CRT RAMDAC (CRT vs DVI) Bus Mémoire Accélérateur Graphique (2D)/GPU (3D) Architecture - RAMDAC • RAMDAC « Random Access Memory Digital to Analogic Converter » • Numérique -> Signal analogique pour périphérique CRT(Cathode Ray Tube) • Fréquence interne liée à la fréquence de rafraîchissement du moniteur • Accès à la mémoire vidéo (« framebuffer ») Architecture - RAMDAC Du « framebuffer » au RAMDAC: • • • • Le RAMDAC peut recevoir les formats suivants: «True Color»: 1 octet/composante et RGB donc 3 composantes => 24bits «HiColor»: 5bits (rouge et bleu)-6bits (vert) =>16 bits (65536 couleurs) ou 5 bits/composante => 15 bits soit 2 octets (32768 couleurs) RGBA: «True Color» avec canal Alpha (32 bits) Fausses Couleurs: Indexation d’une palette de couleur (24bits/couleur) => envoi des couleurs indexées (look Cours sur couleur et codage Architecture - RAMDAC • Persistance rétinienne => rémanence visuelle => effet d’animation (25Hz – 30Hz) • Fréquence de rafraîchissement de l’image au minimum 50Hz (entrelacé*) Confort des yeux à fréquence >= 72Hz => Fréquence interne élevé (en Mhz) => Accès mémoire très fréquent RV01 Automne 2008 I.Thouvenin 44 Architecture - RAMDAC Calcul théorique de la fréquence interne: Taille de l’écran: largeur x hauteur Fréquence visuelle (ex: 75Hz): freq Freq. interne=largeur x hauteur x freq x 1.32 Raison du facteur 1.32: Canon à électron perd ~32% du temps pour les déplacements horizontaux et verticaux RV01 Automne 2008 I.Thouvenin 45 Architecture - RAMDAC • • DVI (Digital Video Interface) – Specif. par ‘Digital Display Working Group’(DDWG) – Accomodation pour périph. digital ET analogique – 3 normes: • DVI-A: signaux analogiques en sortie • DVI-D: signaux digitaux en sortie • DVI-I (‘Integrated’): fait pour les 2 types de sortie DVI-D & DVI-I: périph. digital (écran plat…) => Pas de RAMDAC ! RV01 Automne 2008 I.Thouvenin Architecture - RAMDAC BUS Mémoire centrale Accélérateur Graphique GPU Mémoire vidéo DVI RAMDAC CRT RAMDAC (CRT vs DVI) Bus Mémoire Accélérateur Graphique (2D)/GPU (3D) RV01 Automne 2008 I.Thouvenin Architecture Bus • PCI (Peripheral Component Interconnect): – En 1993 par Intel en réponse au VLB – PCI 1.0: 32bits - 33Mhz => 132Mo/s (le + courant) – PCI 2.0: 64bits (33 ou 66 ou133Mhz) pour serveurs – Meilleur que le VLB car certaines fonctionnalités: • Bus Master (transfert direct entre 2 périph. PCI) • ‘Look Ahead’ (anticipation) • ‘buffering’ (stockage temporaire de l’information => meilleur débit… – Incompatible avec l’ISA => Slots PCI+ISA – Devenu un standard, mais goulet d’étranglement ! RV01 Automne 2008 I.Thouvenin Architecture Bus • Port AGP (Accelerated Graphics Port): – Fin 1997 par Intel (palier au pb du PCI) – Spécifique aux cartes graphiques – Basé sur le standard PCI2.1 => 66Mhz – Architecture 32 bits RV01 Automne 2008 I.Thouvenin Architecture Bus • Port AGP: – 1x: débit de 264Mo/s (codage sur les fronts montant) – 2x: débit de 528Mo/s (codage sur les deux fronts) • PIPE: envoie donnée+contrôle multiplexé… • SBA: envoie donnée+contrôle démultiplexé – 4x: débit 1Go/s (double les infos sur chaque front) • => mémoire suffisamment rapide (DDR ou RAMBUS) • «Fast Write»: accès direct mémoire vidéo – 8x: débit 2Go/s (quadruple les infos sur chaque front) Mais gain minuscule de 5% par rapport au 4x. Nvidia RV01 Automne 2008 I.Thouvenin Architecture Bus • Port AGP: – Bus Mastering (accès direct à la mémoire) – Pipelining: requête en série (≠ PCI attente ) – SBS (Side Band Signaling) ou SBA(Sideboard Adressing): 32bits du bus + 8bits (broches latérales) pour le contrôle (requêtes) et la synchro AGP<>Carte graphique – 2 modes de fonctionnement: • Mode DMA ou PIPE(local texturing): accès direct à la mémoire centrale • Va être remplacé par PCI Express ? PCI Express slots (from top to bottom: x4, x16, x1 and x16), compared to a traditional 32-bit PCI slot (bottom) RV01 Automne 2008 I.Thouvenin Architecture Bus • PCI Express appelé 3GIO (3rd generation I/O) • Est une implementation du bus PCI qui utilise les concepts de programmation PCI concepts, • Se base sur un protocole de communication complètement différent RV01 Automne 2008 I.Thouvenin Architecture Mémoire centrale BUS Accélérateur Graphique GPU Mémoire vidéo RAMDAC RAMDAC (CRT vs DVI) Bus Mémoire Accélérateur Graphique (2D)/GPU (3D) RV01 Automne 2008 I.Thouvenin DVI CRT Architecture - Mémoire • • DRAM EDO (DRAM Extended Data Out): – 400Mo/s (inadaptée pour des fréquence > 66Mhz) – Accès réduit à 50-60ns (système de cache de l’adresse de la prochaine cellule à lire/écrire) – Surtout employé par 3DFX (Diamond Monster 3D et Diamond Monster 3D II) mais aussi par S3 (Virge 3D). VRAM (VideoRAM): – 625Mo/s (30% + chère que DRAM) – Jusqu’à 80Mhz - Temps d’accès 20-25ns – « Dual Port » (grâce à 1 registre à décalage) RV01 Automne 2008 I.Thouvenin Architecture - Mémoire • SDRAM (SynchronousDRAM): – Apparue en 1997 – Synchronisée avec le bus mémoire – Temps d’accès: 10-12ns – Fréquence 66Mhz à 133Mhz – 500,800,1.060 Mo/s -> 66,100,133Mhz RV01 Automne 2008 I.Thouvenin Architecture - Mémoire • DDR-SDRAM(Double Data Rate SDRAM): – 2 informations transférées par cycle: • Front montant • Front descendant – Temps d’accès: 6ns – Fréquence de 100Mhz à 200Mhz – Débit de 1.5Go/s à 3Go/s – Exemple: GeForce FX (DDR400) RV01 Automne 2008 I.Thouvenin Architecture Mémoire centrale BUS Accélérateur Graphique GPU Mémoire vidéo DVI RAMDAC CRT RAMDAC (CRT vs DVI) Bus Mémoire Accélérateur Graphique (2D)/GPU (3D) RV01 Automne 2008 I.Thouvenin Architecture – 2D • Ancêtre des accélérateurs Graphiques: – Cartes à coprocesseur graphique (carte programmable) – Début 90 avec TIGA (TMS34020), ou P9000 (Carte Diamond Viper) – Dépassé ensuite par les cartes accélératrices – MAIS principe d’architecture graphique programmable réutilisé + tard en 3D RV01 Automne 2008 I.Thouvenin Architecture – 2D • • • • • • • Accélération des traitements 2D: ligne, rectangle, curseur souris, overlay, bitBLT (Bit BLock Transfert: transfert de blocs de bits) Décompression MPEG2 (DVD) Tuner TV Acquisition vidéo Cartes 2D seules n’existent plus Carte 3D pure (3dfx voodoo) Maintenant, carte 2D/3D RV01 Automne 2008 I.Thouvenin Architecture – GPU (3D) • Pipeline de rendu 3D (triangle en entrée): – Transformation et éclairement – Culling, clipping,… – Triangle setup – Texturing, Fog – Rasterization (Alpha, Stencil, Depth test -> Alpha blending -> Dithering -> Channel mask) -> Framebuffer RV01 Automne 2008 I.Thouvenin Architecture – GPU ->Transform • « Planter le décor »: – Placer l’objet courant dans la scène par rapport à la caméra… – Opérations matricielles 3d (homogène) – Translations, rotations, mise à l’échelle, projection RV01 Automne 2008 I.Thouvenin Architecture – GPU ->Lighting • Modèle de Phong – Éclairement ambiant • Propriété générale de l’environnement – Éclairement diffus • Existe pour chaque source lumineuse – Éclairement spéculaire • Existe pour chaque source lumineuse RV01 Automne 2008 I.Thouvenin Architecture – GPU ->Calcul de la couleur • Combinaison couleur d’éclairement / textures • Filtrage des textures (bilinéaire, tri linéaire…) • Différentes possibilités de combinaison • Possibilité de combinaison différente à chaque étage de texture (=> possibilité de gérer un bump-mapping) • Effet de brouillard (fog) RV01 Automne 2008 I.Thouvenin Architecture – GPU ->Lighting • Éclairement ambiant: – Caf=Ca*la • Éclairement diffus: – Cdf=sum( Cd*Lid* (n.lidir) ) n ldir RV01 Automne 2008 I.Thouvenin Architecture – GPU ->culling, clipping… • • • • • Culling: Orientation de la face (Counter Clock Wise) Clipping: Découpe du triangle dans le volume de vision (frustum) Projection sur l’écran (division par w) Viewport mapping (coordonnées écran) Préparation des données pour l’étage du calcul des couleurs: – Délimitation du triangle par ses bords pour chacune de ses lignes (scanline) – Interpolation linéaire des données le long des bords (couleurs, z, coordonnées de textures…) Architecture – GPU ->Rasterization • • • • • Dernière étape du pipeline 3D Gestion de la profondeur - ensemble de test libre => effet Alpha test -> Stencil test -> Depth test Blending (Transparence) -> FRAME BUFFER Architecture – GPU -> Vertex Shader • • Remplace l’étape de T&L Possibilités: – Position Procédurale – Position Blend – Position Morphing – Position Déformation – Tissu, peau, interpolation, displacement maps… – Coordonnées de texture – Brouillard particulier – Taille d’affichage d’un point • Exemple simple de vertex shader: déformation surfacique (onde) – Dauphin (Direct3D) Bibliographie • Interactive Computer Graphics Functional,procedural and device-level methodsPeter Burger, Duncan Gillies. Addison-Wesley Publishing Company • Le traité de la réalité virtuelle Tome 2 à télécharger en écrivant à P. Fuchs (pour étudiants uniquement) Préparation final/ atelier • Faire un QCM avec 10 questions/ cours • Proposer sur votre projet une structure permettant une optimisation • Préparer le schéma de l’architecture de votre, projet