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