Anatomie d`une carte graphique accélératrice 3D
Transcription
Anatomie d`une carte graphique accélératrice 3D
La carte graphique Le pipeline graphique Opérations sur les fragments Evolution Les APIs Anatomie d’une carte graphique accélératrice 3D Jean-Yves Didier Université d’Evry Jean-Yves Didier Anatomie d’une carte 3D Université d’Evry 1/12 La carte graphique Le pipeline graphique Opérations sur les fragments Evolution Les APIs 1 La carte graphique 2 Le pipeline graphique 3 Opérations sur les fragments 4 Evolution 5 Les APIs Jean-Yves Didier Anatomie d’une carte 3D Université d’Evry 2/12 La carte graphique Le pipeline graphique Opérations sur les fragments Evolution Les APIs Carte graphique et accélération 3D Carte graphique Adaptateur générant une image puis un signal compatible avec l’écran. Accélération 3D I Est apparue au début des années 1990 ; I En entrée : un ensemble de primitives 3D : → Sommets (coordonnées 3D), segments, polygones, textures. I En sortie : des pixels ; I Fonction : transformer des données 3D en images 2D : → Notion de pipeline graphique. Jean-Yves Didier Anatomie d’une carte 3D Université d’Evry 3/12 La carte graphique Le pipeline graphique Opérations sur les fragments Evolution Les APIs Le pipeline graphique Point de vue architecture Ensemble de traitements programmables, intercalés avec des traitements déterminés pour produire un rendu graphique. Données vertex Evaluateurs Listes d’ affichage Opérations par sommet et assemblage de primitives Rasterisation Opérations sur les pixels Opérations sur les fragment Framebuffer Assemblage textures Données pixel Jean-Yves Didier Anatomie d’une carte 3D Université d’Evry 4/12 La carte graphique Le pipeline graphique Opérations sur les fragments Evolution Les APIs Le pipeline graphique : point de vue fonctionnel Transformations géométrique Repère objet Repère monde Illumination Transformation de point de vue Repère caméra Troncature (clipping) Projection Repère écran Fragmentation (rasterization) Affichage Jean-Yves Didier Anatomie d’une carte 3D Université d’Evry 5/12 La carte graphique Le pipeline graphique Opérations sur les fragments Evolution Les APIs Le pipeline graphique A l’origine Il est majoritairement logiciel : I Exécution sur le CPU (Central Processing Unit) ; I Processeur non spécialisé. Maintenant Presque entièrement matériel : I Exécution sur le GPU (G = Graphical) ; I Processeur spécialisé ; I Gain en vitesse d’exécution. Jean-Yves Didier Anatomie d’une carte 3D Université d’Evry 6/12 La carte graphique Le pipeline graphique Opérations sur les fragments Evolution Les APIs Opération sur les fragments Scène 3D = polygones + textures. Le travail de la carte graphique 1 Décomposer polygones et textures en fragments (rasterization) ; I Propriétés des fragments : I I 2 1 fragment = 1 pixel dans l’image finale ; Paramètres associés : u, v , profondeur, couleur. Traiter les fragments : I Les fragments passent au travers de différents tamis (buffer) ; I I Jean-Yves Didier Anatomie d’une carte 3D Les tamis sont programmables ; Taille du tamis = taille de l’image finale. Université d’Evry 7/12 La carte graphique Le pipeline graphique Opérations sur les fragments Evolution Les APIs Opérations sur les fragments Les tamis (buffers) usuels Framebuffer : contient l’image finale ; 7 77 7 77 7 7 7 7 7 7 Fragments Z-buffer : test de profondeur ; Stencilbuffer : masque ou pochoir. 5 5 5 55 5 5 5 5 5 7 7 7 5 55 5 5 5 55 5 5 10 Stencilbuffer Z-buffer Framebuffer Jean-Yves Didier Anatomie d’une carte 3D Université d’Evry 8/12 La carte graphique Le pipeline graphique Opérations sur les fragments Evolution Les APIs Évolution des cartes graphiques I 1995-1997 : placage de textures et z-buffer ; I 1999-2000 : transformations géométrique et illumination (T&L : Transform and Lighting) ; I 2001 : vertex shaders programmables ; I 2002-2003 : pixel shaders programmables ; I 2005 : multi-GPU ; Maintenant et dans le futur : I I I La fin de l’antagonie CPU-GPU ? OpenCL (Apple, Kronos), CUDA (NVidia), CTM (ATI). Jean-Yves Didier Anatomie d’une carte 3D Université d’Evry 9/12 La carte graphique Le pipeline graphique Opérations sur les fragments Evolution Les APIs OpenGL et Direct3D Qu’est ce ? I API = Application Programming Interface ; I Des interfaces logicielles (bibliothèques) pour des composants matériels dédiés au rendu graphique ; Derniers standards en date : I I I I OpenGL 3.2 (août 2009) ; DirectX 11 (juillet 2009) ; Interfaces logicielles bas niveau : I I Conçues pour piloter le matériel directement ; Paramètrent un automate qui gère le pipeline graphique. Jean-Yves Didier Anatomie d’une carte 3D Université d’Evry 10/12 EnableClientState DisableClientState The OpenGL Machine EdgeFlagPointer R TexCoordPointer ColorPointer CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CCCC CC CC CC CC CC CC CC CC CC CC CC CC Vertex Array Control IndexPointer NormalPointer VertexPointer InterLeavedArrays ArrayElement DrawElements DrawArrays EdgeFlag t 0 TexCoord2 r 0 TexCoord3 q 1 TexCoord1 TexCoord4 Color3 A 1 Convert Color4 RGBA to float Convert index to float Index Convert normal coords to float Normal3 Vertex2 RasterPos2 Vertex3 RasterPos3 z 0 w 1 Vertex4 RasterPos4 MapGrid EvalMesh EvalPoint Evaluator Control Grid Application Map Evaluation EvalCoord Map Enable/Disable Current Edge Flag Current Texture Coordinates CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC Current RGBA Color Current Color Index Current Normal CC CC CC CC CC CC CC CC CC CC CC OBJECT COORDINATES CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC CCC The OpenGL graphics system diagram, Version 1.1. Copyright 1996 Silicon Graphics, Inc. All rights reserved. Enable/Disable TexGen OBJECT_LINEAR b TexGen EYE_LINEAR A*b A TexGen SPHERE_MAP Texture Matrix Stack TexGen CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC Vertices CC CC CC CC CC CC C C Input C C Conversion C & C C Current C Values C C C C C C Evaluators & Vertex Arrays Enable/Disable ColorMaterial Material Material Parameters Control LightModel Begin/End Light Light Parameters Enable/Disable Material Parameters Light Model Parameters Enable/Disable Clamp to [0,1] RGBA Lighting Equation CC CC CC CC CC CC CC CC CC CC CC b M*b Normalize Mask to M n−1 Color Index Lighting Equation [0,2 M−T M M*b M ] Matrix Control Enable/Disable (Lighting) FrontFace M b Primitive Assembly CC CC CC CC CC CC CC CC C C C C C C C C C Texture Coordinate Generation Lighting Clipping, Perspective, and Viewport Application EYE COORDINATES Rasteriz− ation Feedback & Selection Per−Fragment Operations Texturing, Fog, and Antialiasing Frame Buffer & Frame Buffer Control Pixels Rect Rectangle Generation Primitives Fragments Model View Matrix Stack Key to OpenGL Operations Enable/Disable (Antialiasing/Stipple) MatrixMode PushMatrix PopMatrix ClipPlane Matrix Control Clip M*N N M ShadeModel POLYGONS Scale Rotate Planes Polygon Clipping Projection Matrix Matrix LINE SEGMENTS Line Clipping POINTS RASTER POS. Point Culling Viewport Polygon Mode Rasterization Enable/Disable (Antialiasing) DepthRange LineStipple LineWidth Polygon M M*b View Volume Clipping Line b M*b (Vertex Generators Ortho Polygon Polygon Culling Stack b Flatshading Translate Frustum PolygonMode CullFace b −T M b LoadMatrix MultMatrix PolygonOffset FrontFace M LoadIdentity View Volume Clipping Only) M*b b Line Segment Divide Vertex Coordinates by Apply Viewport Rasterization TexParameter Enable/Disable (Antialiasing) w Point Enable/Disable PointSize View Volume Culling TexEnv Point Rasterization Texel Generation Current Raster Texture Application Enable/Disable Enable/Disable Enable/Disable Enable/Disable Fog Scissor Fog Coverage (antialiasing) Pixel Ownership Test Application Enable/Disable Test StencilOp StencilFunc AlphaFunc Scissor Alpha Test (RGBA only) Stencil Test Enable/Disable Enable/Disable DepthFunc BlendFunc Depth Buffer Test Clear Notes: 1. Commands (and constants) are shown without the gl (or GL_) prefix. 2. The following commands do not appear in this diagram: glAccum, glClearAccum, glHint, display list commands, texture object commands, commands for obtaining OpenGL state (glGet commands and glIsEnabled), and glPushAttrib and glPopAttrib. Utility library routines are not shown. 3. After their exectution, glDrawArrays and glDrawElements leave affected current values indeterminate. 4. This diagram is schematic; it may not directly correspond to any actual OpenGL implementation. Selection Encoding Selection Feedback Control Encoding PassThrough SelectBuffer Selection Name Stack Bitmap Rasterization Masking PixelZoom PolygonStipple FeedbackBuffer DepthMask Values StencilMask Bitmap DrawPixels Unpack Pixels TexImage InitNames Clear Control Clear Pixel ClearStencil Rasterization Pixel Transfer TexSubImage ClearDepth Texture Memory LoadName PopName PushName ClearIndex ClearColor Masking Frame Buffer Control Frame Buffer PixelStore PixelTransfer ColorMask IndexMask PixelMap DrawBuffer Readback Control ReadPixels Pack Pixels CopyPixels CopyTexImage CopyTexSubImage ReadBuffer Enable/Disable Enable/Disable LogicOp Blending (RGBA only) Position RenderMode Dithering Logic Op Vertices CC CC CC CC CC CC C CC Input CC Conversion CC& Current CC Values CC C C C Evaluators & Vertex Arrays Matrix Control CC CC CC CC CC CC CC CC C CC CC CC C C Texture Coordinate Generation Lighting Clipping, Perspective, and Viewport Application Rasteriz− ation Feedback & Selection Pixels Primitives Texturing, Fog, and Antialiasing Per−Fragment Operations Frame Buffer & Frame Buffer Control Fragments TexCoord2 r 0 TexCoord3 q 1 TexCoord4 Color3 A 1 Convert Color4 RGBA to float Convert Index index to float Convert Normal3 normal coords to float Vertex2 RasterPos2 Vertex3 RasterPos3 z 0 w 1 Vertex4 RasterPos4 Rect Rectangle Generation CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC Current Texture Coordinates Current RGBA Color Current Color Index Current Normal OBJECT COORDINATES CCC CCC CCC CCC CCC CCC CCC CCC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC OBJECT_LINEAR TexGen EYE_LINEAR TexGen SPHERE_MAP TexGen Enable/Disable ColorMaterial Material M Par C Light Enable/Disable Enable/Disable b M*b Normalize M M−T M M b M M*b EYE COORDINATES La carte graphique Le pipeline graphique Opérations sur les fragments Evolution Les APIs Les API graphiques 3D La nécessité d’avoir d’autres API I OpenGL et Direct3D restent de trop bas niveau ; I Pourquoi veut on des API de haut niveau : I I I Plus simples ; Moins proches du matériel ; Plus proche de l’humain. API de haut niveau I Virtools (Dassault – propriétaire) ; I OpenInventor (Mercury/SIM – propriétaire/libre) ; I OpenSceneGraph (libre) ; I OGRE (libre), etc. Jean-Yves Didier Anatomie d’une carte 3D Université d’Evry 12/12