Opengl Pipeline Graphique
Total Page:16
File Type:pdf, Size:1020Kb
G´en´eralit´es Pipeline Graphique OpenGL Pipeline Graphique R´emi Synave ([email protected]) ENSEIRB 2009-2010 R´emi Synave OpenGLPipeline Graphique 1 G´en´eralit´es Pipeline Graphique OpenGL, c’est quoi? Ensemble de fonctions regroup´ees dans une biblioth`eque permettant de manipuler la carte graphique Biblioth`eque ´ecrite en C API multi-plateforme Permet de visualiser une sc`ene 3D (et aussi 2D) complexe `a partir de primitives simples R´emi Synave OpenGLPipeline Graphique 2 G´en´eralit´es Pipeline Graphique OpenGL, c’est quoi? Biblioth`eque ind´ependante du mat´eriel utilis´e Sp´ecifications ´evoluent en fonctions du comit´eARB Aujourd’hui, support´ee par toutes les cartes graphiques R´emi Synave OpenGLPipeline Graphique 3 G´en´eralit´es Pipeline Graphique Historique Ann´ees 80 : SGI IRIS GL Biblioth`eque cr´e´ee par Silicon Graphics (SGI) en 1992 : OpenGL 1.0 Cr´eation du standard et des sp´ecifications Machine `a´etats 1993 : premi`ere carte graphique supportant OpenGL 1.0 (station Silicon Graphics Iris 4D/510 Crimson VGXT) 1995 : DirectX/Direct3D 1.0 1999 : 1er pipeline mat´eriel grand public : NVIDIA Geforce ... Aoˆut 2008 : sp´ecifications officielles d’OpenGL 3.0 R´emi Synave OpenGLPipeline Graphique 4 G´en´eralit´es Pipeline Graphique Machines SGI IRIS = Integrated Raster Imaging System Syst`eme d’exploitation : IRIX (IRIS UNIX) SGI Indigo R´emi Synave OpenGLPipeline Graphique 5 G´en´eralit´es Pipeline Graphique Machines SGI SGI Indy R´emi Synave OpenGLPipeline Graphique 6 G´en´eralit´es Pipeline Graphique Machines SGI SGI Onyx R´emi Synave OpenGLPipeline Graphique 7 G´en´eralit´es Pipeline Graphique Machines SGI SGI O2 R´emi Synave OpenGLPipeline Graphique 8 G´en´eralit´es Pipeline Graphique Machines SGI SGI Octane R´emi Synave OpenGLPipeline Graphique 9 G´en´eralit´es Pipeline Graphique Machines SGI SGI Tezro R´emi Synave OpenGLPipeline Graphique 10 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Pipeline g´en´eral Pipeline graphique Chaîne de rendu Données géométriques Assemblage des primitives Rastérisation Élimination − Projection Échantillonnage R´emi Synave OpenGLPipeline Graphique 11 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Donn´ees g´eom´etriques Ensemble de maillages polygonaux ou de primitives : Polygones convexes Sph`ere Cube Tore Cˆone ... R´emi Synave OpenGLPipeline Graphique 12 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Pipeline g´en´eral Pipeline graphique Chaîne de rendu Données géométriques Assemblage des primitives Rastérisation Élimination − Projection Échantillonnage R´emi Synave OpenGLPipeline Graphique 13 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Assemblage des primitives Positionnement/animation des objets grˆace `ades translations et des rotations Utilisation des coordonn´ees homog`enes Repr´esentation des transformations sous forme de matrices R´emi Synave OpenGLPipeline Graphique 14 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Coordonn´ees homog`enes Coordonn´ees homog`enes =6 Coordonn´ees cart´esiennes Permet de d´efinir la position d’un point dans l’espace Ajout d’une composante (dimension) W =6 0 aux classiques (X , Y , Z) → (X , Y , Z, W ) Cart´esienne → Homog`ene (X , Y , Z) (X , Y , Z, 1) Homog`ene → Cart´esienne X Y Z (X , Y , Z, W ) ( W , W , W ) Notation non unique : point(1, 2, 3, 1) = point(2, 4, 6, 2) R´emi Synave OpenGLPipeline Graphique 15 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Coordonn´ees homog`enes Pourquoi ? ? ! ! Permet de repr´esenter les rotations, translations et mises `a l’´echelle par une matrice Application de toutes ces transformations par des multiplications de matrices Combinaison de transformations repr´esent´ee par une seule matrice (multiplication des matrices de chaque transformation) R´emi Synave OpenGLPipeline Graphique 16 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Coordonn´ees homog`enes Matrices de rotation : 10 00 0 cos(α) −sin(α) 0 de αo suivant l’axe X : 0 sin(α) cos(α) 0 00 01 cos(α) 0 sin(α) 0 0 1 0 0 de αo suivant l’axe Y : −sin(α) 0 cos(α) 0 0 0 0 1 R´emi Synave OpenGLPipeline Graphique 17 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Coordonn´ees homog`enes Matrice de rotation : cos(α) −sin(α) 0 0 sin(α) cos(α) 0 0 de αo suivant l’axe Z : 0 0 10 0 0 01 Matrice de translation : 1 0 0 Tx −→ 0 1 0 T d’un vecteur T = (T , T , T ) : y x y z 0 0 1 T z 000 1 R´emi Synave OpenGLPipeline Graphique 18 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Assemblage des primitives Utilisation des matrices en coordonn´ees homog`enes pour le positionnement des objets dans la sc`ene : la multiplication de deux matrices n’est pas commutative ! ! ! translation + rotation =6 rotation + translation rotation de 20o suivant X + rotation de 30o suivant Y =6 rotation de 30o suivant Y + rotation de 20o suivant X L’ordre d’application des transformations est important ! R´emi Synave OpenGLPipeline Graphique 19 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Assemblage des primitives Exemples : Point A(0, 1, 0) → rotation de 90o suivant X puis translation de (0, 2, 0). Point A(0, 1, 0) → translation de (0, 2, 0) puis rotation 90o suivant X. Point A(0, 1, 0) → rotation de 90o suivant Z puis rotation de 90o suivant Y. Point A(0, 1, 0) → rotation de 90o suivant Y puis rotation de 90o suivant Z. Transformation affine d’un point P par une matrice M : M1,1 M1,2 M1,3 M1,4 Px M M M M P 2,1 2,2 2,3 2,4 . y M M M M P 3,1 3,2 3,3 3,4 z M4,1 M4,2 M4,3 M4,4 1 R´emi Synave OpenGLPipeline Graphique 20 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Pipeline g´en´eral Pipeline graphique Chaîne de rendu Données géométriques Assemblage des primitives Rastérisation Élimination − Projection Échantillonnage R´emi Synave OpenGLPipeline Graphique 21 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Elimination´ Polygones invisibles : Polygones vus de l’arri`ere (orientation importante des polygones) : Back face culling Polygones se trouvant derri`ere un autre polygone depuis le point de vue de la cam´era : Z-buffer lors de la rast´erisation R´emi Synave OpenGLPipeline Graphique 22 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Elimination´ Point de vue dans le mˆeme sens que la normale du polygone ? On le voit de derri`ere On le supprime Point de vue dans le sens oppos´e`ala normale du polygone ? Le polygone nous fait face On le conserve R´emi Synave OpenGLPipeline Graphique 23 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Elimination´ P1 (−1,2) p (3,0) (2,1) P2 −→ −→p .P1= −3 < 0 → on conserve le polygone P1 −→ −→p .P2 = 6 > 0 → on supprime le polygone P2 R´emi Synave OpenGLPipeline Graphique 24 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Elimination´ Elimination´ des polygones non visible Faible coˆut par polygone Suffisant pour les mod`eles num´eriques valides imprimables (mod`eles num´eriques sans bord) Etape´ pr´eliminaire pour d’autres algorithmes Economise´ 50% de temps de calcul (en moyenne) R´emi Synave OpenGLPipeline Graphique 25 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Projection Projection Orthogonale : Projection perpendiculaire au plan de projection f R´emi Synave OpenGLPipeline Graphique 26 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Projection f Consid´erons : Point de vue centr´een (0, 0, 0) Plan de projection d’´equation z = f 100 0 010 0 → Matrice de projection : 0 0 0 f 000 1 R´emi Synave OpenGLPipeline Graphique 27 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Projection Projection Perspective : Projection en direction du centre de projection f R´emi Synave OpenGLPipeline Graphique 28 Donn´ees g´eom´etriques G´en´eralit´es Assemblage des primitives Pipeline Graphique Elimination´ - Projection Rast´erisation - Echantillonnage´ Projection f Consid´erons : Point de vue centr´een (0, 0, 0) Plan de projection d’´equation z = f 10 0 0 01 0 0 → Matrice de projection : 00 1 0 1 0 0 f 0 R´emi Synave OpenGLPipeline