Introduction aux Cartes Graphiques GRAPHIX 2006/2007
Plan du cours Modes graphiques Architecture d’une carte graphique Historique Architecture d’une carte graphique Vue globale Ramdac DVI Mémoire vidéo Bus Accélérateur graphique 2D/3D
Première partie: Modes graphiques
Modes graphiques (1/12) Première carte graphique: CGA HGC EGA VGA SVGA Par IBM en 1981 MDAs: Monochrome Display Adapters Mode texte uniquement 80x25 caractères à 50Hz Port imprimante CGA HGC EGA VGA SVGA Standard: XGA, SXGA, UXGA Wide screen: WXGA, WSXGA, WUXGA (16/9ème 16/10ème ) Quad format: QXGA, QSXGA, QUXGA
Modes graphiques (2/12) MDAs CGA: HGC CGA EGA VGA SVGA En 1981 (avec arrive des Personal Computer) Mode Graphique Couleur 320x200x4 couleurs Essentiellement jeux vidéos Manque de résolution pour bureautique HGC CGA EGA VGA SVGA Standard: XGA, SXGA, UXGA Wide screen: WXGA, WSXGA, WUXGA (16/9ème 16/10ème ) Quad format: QXGA, QSXGA, QUXGA
Modes graphiques (3/12) MDAs CGA HGC: EGA VGA SVGA Par Hercules (fondé en 1982) Hercules Graphics Card (compatible MDAs) Mode graphique monochrome 720x348 EGA VGA SVGA Standard: XGA, SXGA, UXGA Wide screen: WXGA, WSXGA, WUXGA (16/9ème 16/10ème ) Quad format: QXGA, QSXGA, QUXGA
Modes graphiques (4/12) MDAs CGA HGC EGA (Enhanced Graphics Adapter): Par IBM en 1984 Résolution max: 640x350x16 couleurs Palette de 64 couleurs Fréquence de 60Hz VGA SVGA Standard: XGA, SXGA, UXGA Wide screen: WXGA, WSXGA, WUXGA (16/9ème 16/10ème ) Quad format: QXGA, QSXGA, QUXGA
Modes graphiques (5/12) MDAs CGA HGC EGA VGA (Video Graphic Array): Par IBM en 1987 Résolution 640x480x16 – 720x400 (mode texte) Résolution 320x200x256 (Mode MCGA: Multi Colour Graphics Array) Palette de 262.144 couleurs (6 bits par couleur) 1er standard vidéo à fonctionner en analogique SVGA Standard: XGA, SXGA, UXGA Wide screen: WXGA, WSXGA, WUXGA (16/9ème 16/10ème ) Quad format: QXGA, QSXGA, QUXGA
Modes graphiques (6/12) MDAs CGA HGC EGA Amélioration du VGA par IBM: 1024x768x256 43.5Hz entrelacé 640x480 60Hz non-entrelacé SVGA Standard: XGA, SXGA, UXGA Wide screen: WXGA, WSXGA, WUXGA (16/9ème 16/10ème ) Quad format: QXGA, QSXGA, QUXGA
Modes graphiques (7/12) MDAs CGA HGC EGA Amélioration du VGA par IBM: XGA (eXtended Graphics Array): Introduit en 1990, successeur du 8514/A 512Kb/1Mb VRAM 1024x768x256 – 640x480x16bits SVGA Standard: XGA, SXGA, UXGA Wide screen: WXGA, WSXGA, WUXGA (16/9ème 16/10ème ) Quad format: QXGA, QSXGA, QUXGA
Modes graphiques (8/12) MDAs CGA HGC EGA Amélioration du VGA par IBM: XGA2: XGA avec fréquence plus élevées 1024x768x16bits -> 65535 couleurs 800x600x24bits -> 16 millions de couleurs SVGA Standard: XGA, SXGA, UXGA Wide screen: WXGA, WSXGA, WUXGA (16/9ème 16/10ème ) Quad format: QXGA, QSXGA, QUXGA
Modes graphiques (9/12) MDAs CGA HGC EGA VGA SVGA (SuperVGA): Basé sur le VGA avec spécifications du constructeur Reconnu standard du mode 800x600 Manque de standardisation => Consortium des principaux constructeurs ‘Video Electronics Standards Association’ (VESA) propose une interface logiciel standard Standard: XGA, SXGA, UXGA Wide screen: WXGA, WSXGA, WUXGA (16/9ème 16/10ème ) Quad format: QXGA, QSXGA, QUXGA
Modes graphiques (10/12) MDAs CGA HGC EGA VGA SVGA Standard: XGA, SXGA, UXGA UVGA (UltraVGA) et XGA: standard 1024x768 SXGA (SuperXGA): standard 1280x1024 UXGA (UltraXGA): standard 1600x1200 Wide screen: WXGA, WSXGA, WUXGA (16/9ème 16/10ème ) Quad format: QXGA, QSXGA, QUXGA
Modes graphiques (11/12) MDAs CGA HGC EGA VGA SVGA Standard: XGA, SXGA, UXGA Wide screen: WXGA, WSXGA, WUXGA (16/9ème 16/10ème) WXGA (Wide eXtended Graphics Array): standard 1280x800 WSXGA (Wide Super eXtended Graphics Array): standard 1600x1024 WUXGA (Wide Ultra eXtended Graphics Array): standard 1920x1200 Quad format: QXGA, QSXGA, QUXGA
Modes graphiques (12/12) MDAs CGA HGC EGA VGA SVGA Standard: XGA, SXGA, UXGA Wide screen: WXGA, WSXGA, WUXGA (16/9ème 16/10ème ) Quad format: QXGA, QSXGA, QUXGA QXGA (Quad eXtended Graphics Array): standard 2048x1536 QSXGA (Quad Super eXtended Graphics Array): standard 2560x2048 QUXGA (Quad Ultra eXtended Graphics Array): standard 3200x2400
Deuxième partie: Architecture
Architecture - Vue globale Ramdac DVI Bus Mémoire DVI CRT Mémoire Centrale GPU Mémoire vidéo Ramdac Carte graphique Unité centrale Moniteurs BUS
Archi. - RAMDAC (1/4) Random Access Memory Digital to Analogic Converter Convertisseur numérique à analogique pour périphérique CRT(Cathodic Ray Tube) Fréquence interne liée à la fréquence de rafraîchissement du moniteur Accès à la mémoire vidéo (framebuffer) Possède sa propre mémoire vive pour stocker les palettes de conversion Mémoire Centrale BUS GPU Mémoire vidéo DVI Ramdac CRT
Archi. - RAMDAC (2/4) Le RAMDAC peut recevoir les formats suivants: True Color : 1 octet/composante 24 bits HiColor : 2 modes 2 x 5bits (rouge et bleu) + 6bits (vert) 16 bits (65536 couleurs) 5 bits par composante 15 bits (32768 couleurs) RGBA True Color : ajout du canal alpha 32 bits Fausses couleurs : indexation d’une palette de couleurs (24bits/couleur) envoi des couleurs indexées DVI CRT Mémoire Centrale GPU Mémoire vidéo Ramdac BUS
Archi. - RAMDAC (3/4) Fonctionnement de l’œil (persistance rétinienne): une image perçue reste environ 0,1 sec sur la rétine rémanence visuelle en enchaînant les images à une fréquence de 25Hz à 30Hz effet d’animation Fréquence de rafraîchissement de l’image au minimum 50Hz en entrelacé (affichage des lignes impaires puis paires) Confort des yeux pour f > 72hz Fréquence interne élevée (MHz) Accès mémoire très fréquent DVI CRT Mémoire Centrale GPU Mémoire vidéo Ramdac BUS
Archi. - RAMDAC (4/4) Calcul théorique de la fréquence interne: Taille de l’écran: largeur x hauteur Fréquence visuelle (ex: 75 Hz): freq Fréquence interne: freq. int. = largeur x hauteur x freq x 1.32 Facteur 1.32: le canon à électrons perd environ 32% du temps pour les déplacements horizontaux et verticaux Radeon 9800 ou GeForce FX 5900: Bi-Ramdac 400Mhz 1600 x 1200 120 Hz 2048 x 1536 85 Hz Pour résolution de 1600x1200 à 85hz il faut un RAMDAC de 1600x1200x85x1.32 = 205 Hz Problème: limitation des moniteurs actuels DVI CRT Mémoire Centrale GPU Mémoire vidéo Ramdac BUS
Archi. - DVI Digital Video Interface : spécifié par Digital Display Working Group pour périphériques numériques et analogiques 3 normes existantes: DVI-A: signal analogique en sortie DVI-D: signal numérique DVI-I (I = integrated): prend en charge les 2 types de sortie DVI-D et DVI-I pour les périphériques numériques (écran plat, …) pas de RAMDAC DVI CRT Mémoire Centrale GPU Mémoire vidéo Ramdac BUS
Archi. - Mémoire Vidéo (1/5) Besoin d’un débit soutenu: Résolution 1024x768 en true color à 70Hz => débit de 1024x768x3x70 = 157 Mo/s Accès multiple du GPU et du RAMDAC latence Nombreux types de mémoire: DRAM, VRAM, SDRAM, RAMBUS, ... DVI CRT Mémoire Centrale GPU Mémoire vidéo Ramdac BUS DRAM DRAM EDO VRAM WRAM MDRAM SDRAM SGRAM RAMBUS DDR-SDRAM
Archi. - Mémoire Vidéo (2/5) DRAM (Dynamic RAM): type FPM (Fast Page Mode): rafraîchi très souvent latence (+ asynchrone) accès en 70 ns 225 Mo/s (33Mhz-50MHz) type de mémoire lente et dépassée DVI CRT Mémoire Centrale GPU Mémoire vidéo Ramdac BUS DRAM EDO (DRAM Extended Data Out): 400 Mo/s (inadaptée pour des fréquences > 66 MHz) accès réduit à 50-60 ns (système de cache de l’adresse de la prochaine cellule à lire/écrire) surtout employé par 3DFX (Diamond Monster) mais aussi par S3 (Virge 3D) DRAM DRAM EDO VRAM WRAM MDRAM SDRAM SGRAM RAMBUS DDR-SDRAM DRAM DRAM EDO VRAM WRAM MDRAM SDRAM SGRAM RAMBUS DDR-SDRAM
Archi. - Mémoire Vidéo (3/5) VRAM (Video RAM): 625 Mo/s (30% plus chère que DRAM) Jusqu’à 80 MHz - temps d’accès 20-25 ns Dual Port (grâce à un registre à décalages) DVI CRT Mémoire Centrale GPU Mémoire vidéo Ramdac BUS WRAM (Windows RAM): 960 Mo/s VRAM avec circuit 32 bits Fonctionnalités 2D (transfert de mémoire, …) Matrox (Millénium II) DRAM DRAM EDO VRAM WRAM MDRAM SDRAM SGRAM RAMBUS DDR-SDRAM DRAM DRAM EDO VRAM WRAM MDRAM SDRAM SGRAM RAMBUS DDR-SDRAM DRAM DRAM EDO VRAM WRAM MDRAM SDRAM SGRAM RAMBUS DDR-SDRAM MDRAM (Multi-bank DRAM): Accès simultanés 500 Mo/s Cartes S3, Hercules Dynamite 128, Tseng Labs ET6000
Archi. - Mémoire Vidéo (4/5) SDRAM (Synchronous RAM): apparue en 1997 synchronisée avec le bus mémoire temps d’accès 10-12 ns Fréquence 66-133 Mhz 500, 800, 1.060 Mo/s 66, 100, 133 Mhz DVI CRT Mémoire Centrale GPU Mémoire vidéo Ramdac BUS SGDRAM (Synchronous Graphic RAM): SDRAM dédié pour la vidéo Single Port synchronisé au bus mémoire (<100MHz) techniques: Masked write: modification en 1 cycle Mode rafale (Block write): récupération/modification par blocs entiers exemple: Matrox Mystique DRAM DRAM EDO VRAM WRAM MDRAM SDRAM SGRAM RAMBUS DDR-SDRAM DRAM DRAM EDO VRAM WRAM MDRAM SDRAM SGRAM RAMBUS DDR-SDRAM
Archi. - Mémoire Vidéo (5/5) RAMBUS: soutenue par Intel à 300 MHz, 1.2 Go/s à 400 MHz, 1.6 Go/s énorme latence DVI CRT Mémoire Centrale GPU Mémoire vidéo Ramdac BUS DDR-SDRAM (Double Data Rate SDRAM): 2 informations transférées par cycle (1 front montant / 1 front descendant) temps d’accès : 6 ns fréquence de 100 - 500 MHz débit de 1.5 - 3 Go/s exemple : GeForce 6800 - Radeon X800 DRAM DRAM EDO VRAM WRAM MDRAM SDRAM SGRAM RAMBUS DDR-SDRAM DRAM DRAM EDO VRAM WRAM MDRAM SDRAM SGRAM RAMBUS DDR-SDRAM
Archi. - Bus (1/10) ISA (Industry Standard Architecture): 1981: 8 bits à 4.7 MHz (8086) 1994: 16 bits à 6 puis 8 MHz (80286) débit maximal de 5.5Mo/s Goulot d’étranglement dès l’arrivée du 80386 Propriétés: : facilement utilisable et peu coûteux : bus très lent Mémoire Centrale BUS GPU Mémoire vidéo DVI Ramdac CRT ISA MCA EISA VLB PCI AGP PCIe
Archi. - Bus (2/10) MCA (Micro Channel Architecture): développé et utilisé par IBM (avec ses PS/2) incompatibilité avec l’ISA monopole d’IBM 1er bus à 32bits - 10 Mhz (40 Mo/s) Mémoire Centrale BUS GPU Mémoire vidéo DVI EISA (Enhanced ISA): sorti en 1988 développé par des constructeurs (Compaq, …) pour contre-attaquer le MCA architecture 32bits, compatible ISA 8/16 bits 8.33 Mhz (compatibilité ISA) - 33 Mhz utilisation: applications lourdes (serveurs de fichiers, …) Ramdac CRT ISA MCA EISA VLB PCI AGP PCIe ISA MCA EISA VLB PCI AGP PCIe
Archi. - Bus (3/10) VLB (VESA Local Bus) : sorti en 1992 développé par ‘Video Electronic Standard Association’ extension du bus local du processeur (port ISA étendu) spécifique aux cartes graphiques bus de 32bits fréquence externe du processeur : 33 à 50 Mhz débit théorique : 130 Mo/s (40Mo/s en pratique) VLB 2.0 fonctionne en 64 bits Mémoire Centrale BUS GPU Mémoire vidéo DVI Ramdac CRT ISA MCA EISA VLB PCI AGP PCIe
Archi. - Bus (4/10) PCI (Peripheral Component Interconnect ): réponse d’Intel au VLB (1993) PCI 1.0: 32bits - 33MHz 132 Mo/s (le plus courant) PCI 2.0: 64 bits (33, 66, 133 MHz) pour serveurs fonctionnalités que ne possède pas le VLB: Bus Master : transfert entre 2 périphériques PCI Look Ahead : anticipation Buffering : stockage temporaire de l’information meilleur débit incompatible avec ISA carte-mère avec slots PCI et ISA devenu un standard … et un goulet d’étranglement ! Mémoire Centrale BUS GPU Mémoire vidéo DVI Ramdac CRT ISA MCA EISA VLB PCI AGP PCIe
Archi. - Bus (5/10) AGP (Accelerated Graphics Port) 1997: bus spécifique aux cartes graphiques / archi 32bits basé sur le PCI 2.1 66 MHz existence d’une version professionnelle (110 W au lieu de 50W) SBA (Side Board Addressing): données chargées sur le bus AGP + utilisation du PCI pour signaux de contrôle Fonctionnalités: Bus mastering accès direct à la mémoire Pipelining : requêtes en série ( PCI avec attente d ’ACK) 2 modes de fonctionnements: Mode PIPE (local texturing): utilisation d’un DMA pour transfert vers mémoire locale (2 cycles pour afficher) Mode DIME (Direct Memory Execute): traitement des textures en mémoire centrale (1 cycle pour afficher) Mémoire Centrale BUS GPU Mémoire vidéo DVI Ramdac CRT ISA MCA EISA VLB PCI AGP PCIe
Archi. - Bus (6/10) AGP (Accelerated Graphics Port): ... débits: 1x: 264Mo/s (codage sur les fronts montants) 2X: 528Mo/s (codage sur les deux fronts): PIPE: envoie donnée+contrôle multiplexé… SBA: envoie donnée+contrôle dé-multiplexé 4x: 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: 2Go/s (quadruple les infos sur chaque front) mais gain minuscule de 5% par rapport au 4x Mémoire Centrale BUS GPU Mémoire vidéo DVI Ramdac CRT ISA MCA EISA VLB PCI AGP PCIe
Archi. - Bus (7/10) PCI express (PCIe) objectifs: bande passante élevée (jusqu’à 8Gb/s) fournir une qualité de service: intégrité des données/détection d’erreurs priorité des données branchement à chaud (hot plug) gestion de l’alimentation Mémoire Centrale BUS GPU Mémoire vidéo DVI Ramdac CRT ISA MCA EISA VLB PCI AGP PCIe
Archi. - Bus (8/10) interface série décomposée en plusieurs niveaux: Couche physique: Bus constitué de 2 paires de signaux (1 émission, 1 réception) Bande passante peut-être augmentée linéairement par ajout de paires de lignes (x1 x32) Couche de données Couche de transactions Mémoire Centrale BUS GPU Mémoire vidéo DVI Ramdac CRT ISA MCA EISA VLB PCI AGP PCIe
Archi. - Bus (9/10) interface série décomposée en plusieurs niveaux: Couche physique Couche de données: Responsable de l’intégrité des données Protocole de contrôle de flux pour s’assurer que le paquet n’est émis que lorsqu’un buffer de réception est disponible Couche de transactions Mémoire Centrale BUS GPU Mémoire vidéo DVI Ramdac CRT ISA MCA EISA VLB PCI AGP PCIe
Archi. - Bus (10/10) interface série décomposée en plusieurs niveaux: Couche physique Couche de données Couche de transactions: paquets supportent adressage de 32bits / 64bits étendu paquets peuvent avoir des attributs (priorité,…) encapsulation des niveaux: Mémoire Centrale BUS GPU Mémoire vidéo DVI Ramdac CRT ISA MCA EISA VLB PCI AGP PCIe Début trame Fin trame 3. Couche Physique CRC Num. Séquence 2. Couche de données Données En-tête 1.Couche de transactions
Troisième partie: Accélérateur graphique
Accélérateur graphique Accélérateur 2D Pipeline de rendu 3D Accélération matérielle du pipeline 3D
Accélérateur 2D (1/2) 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
Accélérateur 2D (2/2) Accélération des traitements 2D: ligne, rectangle, curseur souris, overlay, bitBLT Décompression MPEG2 (DVD) Tuner TV Acquisition vidéo Cartes 2D seules n’existent plus Carte 3D pure (3dfx voodoo) Maintenant, carte 2D/3D
Principe du rendu projectif: le pipeline de rendu 3D Vertices Transform & Lighting Face Culling User Clip Planes & Frustum Clipping Homogenous Divide Viewport Mapping Geometric pipeline Vertex Operations Triangle Setup Texturing Fog Effects Alpha Test Stencil, Depth Test Pixel Operations Rasterization Alpha Blending Dithering Channel Mask Framebuffer
Principe du rendu projectif: le pipeline de rendu 3D Planter le décor: ‘Transform’ placer l’objet dans la scène par rapport à la caméra: opérations matricielles 3D translation, rotation, mise à l’échelle, projection Vertices Transform & Lighting Face Culling User Clip Planes & Frustum Clipping Homogenous Divide Viewport Mapping Geometric pipeline Vertex Operations Triangle Setup Allumer les lumières: ‘Lighting’ modèle de Phong éclairement ambiant éclairement diffus éclairement spéculaire Texturing Fog Effects Alpha Test Stencil, Depth Test Pixel Operations Rasterization Alpha Blending Dithering Channel Mask Framebuffer
Principe du rendu projectif: le pipeline de rendu 3D Inutile de dessiner ce que l’on ne voit pas: ‘face culling’: orientation arrière ‘clipping’: hors champ ‘Homogenous divide’: projection 3D->2D ‘Viewport mapping’: placement dans la fenêtre Vertices Transform & Lighting Face Culling User Clip Planes & Frustum Clipping Homogenous Divide Viewport Mapping Geometric pipeline Vertex Operations Triangle Setup Texturing Fog Effects Alpha Test Stencil, Depth Test Pixel Operations Rasterization Alpha Blending Dithering Channel Mask Framebuffer
Principe du rendu projectif: le pipeline de rendu 3D ‘Triangle setup’ = préparation du triangle: Délimitation du triangle par ses bords pour chacune de ses lignes (scanline) Interpolation bilinéaire des attributs des sommets pour chaque pixel: Couleur Profondeur (z) Coordonnées de texture UV … Vertices Transform & Lighting Face Culling User Clip Planes & Frustum Clipping Homogenous Divide Viewport Mapping Geometric pipeline Vertex Operations Triangle Setup Texturing Fog Effects Alpha Test Stencil, Depth Test Pixel Operations Rasterization Alpha Blending Dithering Channel Mask Framebuffer
Principe du rendu projectif: le pipeline de rendu 3D ‘Texturing’: Combinaison de couleurs: Couleur d’éclairement Couleur de la texture Filtrage des textures: Bi-linéaire Tri-linéaire (mip mapping) Multitexturing Techniques basées sur des textures: Light mapping, Bump mapping, Shadow mapping… Vertices Transform & Lighting Face Culling User Clip Planes & Frustum Clipping Homogenous Divide Viewport Mapping Geometric pipeline Vertex Operations Triangle Setup Texturing Fog Effects Fog Effects Alpha Test Stencil, Depth Test Pixel Operations Rasterization Alpha Blending ‘Fog effects’: brouillard Altération de la couleur basé sur la profondeur ‘z’ du pixel Dithering Channel Mask Framebuffer
Principe du rendu projectif: le pipeline de rendu 3D Tests éliminatoires: ‘Alpha test’: seuil sur le canal alpha ‘Stencil test’: Stencil Buffer (effets) ‘Depth test’: Z-Buffer (test de profondeur ‘z’) Vertices Transform & Lighting Face Culling User Clip Planes & Frustum Clipping Homogenous Divide Viewport Mapping Geometric pipeline Vertex Operations ‘Alpha blending’: Transparence Mixe ancienne couleur (Framebuffer) + nouvelle couleur Triangle Setup Texturing Fog Effects ‘Dithering’: Illusion de couleur, motif… Utile pour les résolutions à faible nombre de couleur ou palettiser Alpha Test Stencil, Depth Test Pixel Operations Rasterization Alpha Blending Alpha Blending Dithering Dithering ‘Channel Mask’: filtre sur les canaux de couleur (rouge, vert, bleu, alpha) Channel Mask Channel Mask Framebuffer Framebuffer
Accélérateur 3D ‘Transform & Lighting’ (en soft): 3D Now, MMX… 31 août 1999: GeForce256 (nVidia) GPU (Graphics Processing Unit): pipeline 100% hard (T&L, culling, clipping…) Vertices Vertex Shader T & L Culling, Clipping Vertex Triangle Setup Reg. combiners Texturing Pixel Shader Améliorations matérielles du pipeline 3D: Registers combiners (GeForce256): Circuit câblé paramétrable pour le calcul de la couleur (texture…) Obsolète Fog Pixel Rasterization Framebuffer Shader (Vertex & Pixel) (GeForce3): Circuit programmable remplaçant une partie du pipeline 3D
GPU - Shader Architecture SIMD Nombre d’instructions limité 128: GeForce3-4 – Radeon8500 1024: GeForceFX Programmation: bas niveau (assembleur) haut niveau (C) ou langages dédiés (HLSL, Cg, GLSL) Vertices Vertex Shader Culling, Clipping Vertex Triangle Setup Pixel Shader Pixel Rasterization Framebuffer
GPU - Vertex shader Architecture: Registres temporaires Registres constants (mémoire) ALU Vertices Vertex Shader Culling, Clipping Vertex Triangle Setup Pixel Shader Pixel Rasterization Framebuffer
GPU - Vertex shader Remplace l’étape de T&L Possibilités: Position Procédurale Mélange de transformations (‘Vertex Blend’) Mélange de maillages (‘Morphing’) Déformation du maillage (‘Vertex Deformation’) Eclairage par sommet (‘Per Vertex Lighting’) Tissu, peau, interpolation, displacement maps… Coordonnées de texture Brouillard particulier Taille d’affichage d’un point Vertices Vertex Shader Culling, Clipping Vertex Triangle Setup Pixel Shader Pixel Rasterization Framebuffer
GPU - Vertex shader Possibilités: Mélange de transformations (‘Vertex Blend’) Vertices Vertex Shader Culling, Clipping Vertex Triangle Setup Pixel Shader Pixel Rasterization Framebuffer
GPU - Vertex shader Possibilités: Déformation de maillage (‘Vertex deformation’) Vertices Vertex Shader Culling, Clipping Vertex Triangle Setup Pixel Shader Pixel Rasterization Framebuffer
GPU - Vertex shader Possibilités: Displacement mapping Vertices Culling, Clipping Triangle Setup Pixel Shader Rasterization Framebuffer
GPU – Pixel shader Remplace l’étape du calcul de la couleur Possibilités: Réflexion par pixel Illumination par pixel (phong, BRDF) Textures procédurales Effets au niveau pixel Vertices Vertex Shader Culling, Clipping Vertex Triangle Setup Pixel Shader Pixel Rasterization Framebuffer
GPU – Pixel shader Architecture: Vertex Pixel Vertices Vertex Shader Culling, Clipping Vertex Triangle Setup Pixel Shader Pixel Rasterization Framebuffer
GPU – Pixel shader Exemple: « cartoon shading » Produit scalaire (lumière x normale) pour indexer une texture 1D Vertices Vertex Shader Culling, Clipping Vertex Triangle Setup light vector normal vector Pixel Shader Pixel light Rasterization Framebuffer 0.0 dot product 1.0 1 dimensional texture
GPU – Pixel shader Exemple: « cartoon shading » A Scanner Darkly Zelda – The Wind Maker
GPU – Pixel shader Exemple: « bump mapping »
GPU – Pixel shader Effet de flamme
GPU - Pixel shader Eclairage par pixel (‘Per Pixel Lighting’)
GPU - Pixel shader Eclairage anisotropique
Conclusion - perspectives (1/2) Modes graphiques: assez peu de changement (éventuellement augmentation de résolutions) Amélioration des bus et mémoires (débit, fréquence de fonctionnement) Efforts concentrés sur le GPU: devient un « processeur » de plus en plus performant: effets visuels coûteux en temps-réel (lancer de rayons) calculs scientifiques complexes (simulation de tissus, cheveux, …) possibilité de mettre 2 GPU en série: nvidia SLI (Scalable Link Interface).
Conclusion - perspectives (2/2) Nalu (Geforce 6800) : simulation physique de 762 cheveux génération de 4095 cheveux. ombrage en multi-passes. autres possibilités : simulation physique de tissu / fluides. simulation de réactions chimiques. … voir www.gpgpu.org
Merci Question ?!