ift3355: infographie pipeline graphique © victor ostromoukhov dép. i.r.o. université de montréal
TRANSCRIPT
![Page 1: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/1.jpg)
IFT3355: Infographie Pipeline graphique
© Victor Ostromoukhov
Dép. I.R.O.
Université de Montréal
![Page 2: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/2.jpg)
Hardware GraphiqueHardware Graphique
• Graphisme est passé des stations spécialisées coûteuses à tout ordinateur de base
• L’industrie du jeu vidéo pousse pour des améliorations constantes des cartes graphiques
• Performance du GPU double à chaque 12 mois• Les nouvelles cartes programmables sont même
utilisables comme co-processeur mathématique…
![Page 3: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/3.jpg)
State-of-the-Art Real-Time State-of-the-Art Real-Time RenderingRendering20012001
![Page 4: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/4.jpg)
![Page 5: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/5.jpg)
![Page 6: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/6.jpg)
nVIDIA
![Page 7: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/7.jpg)
Réel
Synthétique
CryEngine 2
![Page 8: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/8.jpg)
Système d’affichage
CPU
Mémoire
Périphériques
bus (e.g. PCI/AGP/PCI-express)
![Page 9: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/9.jpg)
Système d’affichage
CPU
Mémoire Framebuffer
Contrôleurvidéo
Moniteur
Périphériques
bus (e.g. PCI/AGP/PCI-express)
libère l’accès au bus avec un bus vidéo
CPU fait tout le travail, mais il a toute la flexibilité
Dans une configuration double buffer, un multiplexeur alterne entre les deux frame buffers
dans les deux sens CPU:GPUv1: 16 lignes à 250 MB/secv2: 32 lignes à 500 MB/sec
![Page 10: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/10.jpg)
Pipeline de basePipeline de base
Programmeusager
Traitementgéométrie
Traitementpixel
primitives (points, lignes, polygones)images (textures, masques)
traitement par sommet3D à 2D pixels à l’écran
rasterizationcouleursortie au frame buffer
![Page 11: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/11.jpg)
APIs (OpenGL, DirectX)APIs (OpenGL, DirectX)
beginX( ); vertex (x,y,z); …endX( );
déclare et active l’état X attributs d’état: couleur, normale, uv, données par sommetinactive l’état X
paramètres d’état:• lumières, géométries, textures, options de rendu, etc.• tout changement d’état réduit la performance• immediate mode (tout passe par le CPU)• optimisation d’états, stocké sur carte graphique
![Page 12: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/12.jpg)
Améliorer la vitesse de renduAméliorer la vitesse de rendu
• Parallélisme– calcul de matrices, triangles, textures, etc.– complexité (logique et silicon) et coût
• Pipeline– n étapes devrait être n fois plus rapide– chaque étape peut aussi être un pipeline elle-même, mais
elle pourrait aussi être traitée en parallèle pour des besoins accrus en performance
– vitesse du pipeline est déterminée par son étape la plus lente (bottleneck)
– il est important de réduire le nombre de sommets transmis (triangle strips, triangle fans, quadrilatères…)
![Page 13: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/13.jpg)
Triangle Strips
v0
v1
v2
v3
v4
v5
v6
v7T0T1
T2
T3
T4T5
T0: v0 v1 v2T1: v1 v2 v3T2: v2 v3 v4T3: v3 v4 v5T4: v4 v5 v6T5: v5 v6 v7
20 2 1 niiviviv
![Page 14: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/14.jpg)
Generalized Triangle Strips
v0
v1
v2
v3 v4
v5
v6T0T1 T2
T3T4
T0: v0 v1 v2T1: v1 v2 v3Swap v3 v2 (triangle dégénéré)T2: v3 v2 v4T3: v2 v4 v5T4: v4 v5 v6
peut même créer desstrips déconnectés
![Page 15: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/15.jpg)
Triangle Fans
v0
v1
v2
v3
v4
v5v6
T0 T1
T2
T3T4
T0: v0 v1 v2T1: v0 v2 v3T2: v0 v3 v4T3: v0 v4 v5T4: v0 v5 v6
20 2 1 0 niivivv
![Page 16: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/16.jpg)
Triangle Strips et Triangle Fans
• Plus difficile de trouver des fans que des strips• Nombre de sommets envoyés au pipeling pour m
triangles
• Ex: m=10, tris=1.2; m=5, tris=1.4
mm
m 21
)1(3=
=D
![Page 17: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/17.jpg)
Créer des strips: STRIPE Algorithm
• Si on permet plus que des triangles, on peut trianguler un polygone de différentes façons
• Patchificationv0 v2 v4 v6 v8
v9,v10
v11
v7,v12v5,v14
v13v15
v3,v16
v17
v1,v18
v19
A chaque tournant, 3 swaps ou 2 sommets en extra
![Page 18: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/18.jpg)
Vertex arrays
• Passe au GPU un vecteur de sommets et un vecteur d’indices reliant ces sommets en triangles
• On peut aussi encoder le vecteur d’indices en un strip
• Si la géométrie n’est pas modifiée entre deux appels au vecteur, on peut la stocker directement en mémoire du GPU
![Page 19: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/19.jpg)
Display Lists
• displayID = createDisplayList( ); …; endDisplayList; … drawDisplayList (displayID);
• Conserve simultanément
– les données sur les triangles directement sur le GPU
– les commandes graphiques (état, texture, etc.)
• Peut imbriquer des display lists dans des display lists
+ Optimise (compile) les commandes graphiques pour le hardware graphique
- Ne permet pas de modifier n’importe quelle donnée sans briser (et donc recompiler) la display list
- Limitations en nombre et en taille
![Page 20: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/20.jpg)
Vertex Buffer Objects (VBO)
• Similaire aux vertex arrays, on peut stocker
– les données sur les triangles directement sur le GPU
– les commandes graphiques par sommet (état, texture, etc.)
+ Permet de modifier des sections des vecteurs (indices et contenu)
- Commandes ne sont pas optimisées (compilées)
![Page 21: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/21.jpg)
Pipeline graphique standard
• Parcours et traitement de la scène– primitives, couleurs,
transformations, textures– Détection/réaction aux collisions,
morphing, frustum culling hiérarchique
• Immediate mode– Flexible mais exigeant pour le CPU
• Retained mode– Structure de forme display list– Optimisations dans l’organisation
des données (compilateur)– CPU ne peut modifier que certaines
parties des données
Display traversal
Modelingtransformation
Trivial accept/reject
Lighting
Viewing transformation
Clipping
Dividing by wMapping to viewport
Rasterization
![Page 22: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/22.jpg)
Pipeline graphique standard
• Espace objet à espace monde (ou pyramide de vue)
• Sommet transformé par une matrice combinée
• Normale transformée en fonction du shading (constant/flat ou Gouraud/Phong)
Display traversal
Modelingtransformation
Trivial accept/reject
Lighting
Viewing transformation
Clipping
Dividing by wMapping to viewport
Rasterization
![Page 23: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/23.jpg)
Pipeline graphique standard
• Test avec le volume de vue• Si l’objet est à l’extérieur, ce test
réduit le travail dans les étapes suivantes
Display traversal
Modelingtransformation
Trivial accept/reject
Lighting
Viewing transformation
Clipping
Dividing by wMapping to viewport
Rasterization
![Page 24: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/24.jpg)
Pipeline graphique standard
• Si le shading est constant, il n’y a qu’une couleur par polygone et lumière
• Pour le shading de Gouraud, une couleur par sommet
• Pour le shading de Phong, il y aura plus de travail à faire lors de l’étape de rasterization
Display traversal
Modelingtransformation
Trivial accept/reject
Lighting
Viewing transformation
Clipping
Dividing by wMapping to viewport
Rasterization
![Page 25: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/25.jpg)
Pipeline graphique standard
• Espace monde à espace normalisé de projection
• Une partie des transformations peut être faite lors de l’étape de modeling transformation
Display traversal
Modelingtransformation
Trivial accept/reject
Lighting
Viewing transformation
Clipping
Dividing by wMapping to viewport
Rasterization
![Page 26: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/26.jpg)
Pipeline graphique standard
• Un triangle peut alors résulter en plus de trois sommets
• Primitives plus complexes peuvent être traitées par scissoring (ne dessine que si non-rejet trivial: rasterization devient moins efficace)
• On s’attend à un maximum de 10% des primitives à découper, sinon pénalité
Display traversal
Modelingtransformation
Trivial accept/reject
Lighting
Viewing transformation
Clipping
Dividing by wMapping to viewport
Rasterization
![Page 27: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/27.jpg)
Pipeline graphique standard
• Après une transformation de perspective, w est en général différent de 1
• Changement d’échelle et translation pour le viewport
Display traversal
Modelingtransformation
Trivial accept/reject
Lighting
Viewing transformation
Clipping
Dividing by wMapping to viewport
Rasterization
![Page 28: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/28.jpg)
Pipeline graphique standard
• Scanconversion• Détermination de visibilité
– Zbuffer• Shading (transparence et texture)
Display traversal
Modelingtransformation
Trivial accept/reject
Lighting
Viewing transformation
Clipping
Dividing by wMapping to viewport
Rasterization
![Page 29: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/29.jpg)
Rasterization (scanconversion)
• Calcul par pixel
– Position 2D, profondeur, couleur, coordonnées de texture
– Visibilité
• Double buffer
– Rendu dans back buffer et swap en front buffer (affiché)
• Transparence
– Rendu des objets opaques
– Rendu des objets transparents dans l’ordre derrière-à-devant
![Page 30: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/30.jpg)
Buffers
• Color buffer• Zbuffer• Single et double buffering• Stéréo• Stencil et accumulation
![Page 31: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/31.jpg)
Color Buffer (Frame Buffer)
• Color map– Index (1 byte) dans une table de couleurs
• High color– 2 bytes: 32,768 to 65,536 colors
• True color, RGBA mode– 3-4 bytes: 16,777,216 colors– 32 bits est souvent optimisé pour le traitement
des commandes en hardware
![Page 32: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/32.jpg)
Color Buffer (Frame Buffer)
• True color, RGBA mode– 24 bits est satisfaisant pour afficher les couleurs– Accumulation en rendu multi-passes produit de
la discrétisation (quantisation) des couleurs résultant en des zones uniformes (banding)
– SGI permet de calculer les couleurs en 12+ bits par canal, mais affiche avec 8 bits par canal
• Overlay plane– 1-8 bits, devant le buffer couleur pour menus,
cursors, interfaces, highlighting, etc.– Affiche sans affecter le buffer couleur
![Page 33: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/33.jpg)
Zbuffer
• 16-32 bits (récemment jusqu’à 96 bits en floating point)
• Projection orthographique– Distance entre les séparateurs (zones) est la
même• Projection perspective
– Distance est plus petite près de la caméra que loin de la caméra
– Essayer de borner d’aussi près que possible la scène entre l’avant-plan et l’arrière-plan
![Page 34: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/34.jpg)
Buffering
• Single buffer– Dessine les polygones, clear, dessine les
polygons, …– Synchroniser le clear avec le vertical retrace
du moniteur (Amiga)• Double buffer
– Image précédente est affichée dans le front buffer pendant que dessine dans le back buffer
– Swap buffers (adresse ou BitBLT) durant le vertical retrace
![Page 35: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/35.jpg)
Stéréo
• Rendu d’une image pour l’oeil gauche et une autre image pour l’oeil droit – Lunettes rouge-vert (images en niveau de gris,
possible même en single buffer)– Head-mounted displays (casques)– Shutter glasses (bloque un oeil en
synchronisation avec l’affichage de l’image)
![Page 36: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/36.jpg)
Stencil et Accumulation Buffers
• Même résolution en pixels que le frame buffer
• Stencil
– 1-8 bits pour des opérations de masque
– Volumes d’ombre de Crow (complexité de profondeurs de 256 valeurs)
• Accumulation
– Deux fois (typiquement) la résolution de profondeur
– Couleurs de chaque image sont combinées avec un opérateur
– Profondeur de champ, flou de mouvement, antialiassage, ombres douces, etc.
![Page 37: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/37.jpg)
Rendu en multi-passes
• Une passe: calcule les couleurs et affiche l’image• Multi-passes: plusieurs itérations des opérations
(calcule les couleurs et modifie les couleurs précédentes), ensuite affiche l’image
• Ex: diffus et texture, spéculaire selon texture
![Page 38: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/38.jpg)
![Page 39: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/39.jpg)
![Page 40: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/40.jpg)
Quelques percées
Mémoire sur carte– Store géométrie– Store textures
1998: multi-textures1999: transformation et illumination2001: shader programmable2002: shader pixel2003: langage de programmation high-level2004: conditions dans les shaders2006: floating point2007: shader géométrique2008: Larrabee (a multi-core architecture)
![Page 41: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/41.jpg)
Direct3D 10 Features
InputAssembler
Vertex Buffer
Index Buffer
Texture
Texture
Texture
Depth/Stencil
Render Target
Stream Output
VertexShader
GeometryShader
Rasterizer/Interpolator
PixelShader
OutputMerger
![Page 42: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/42.jpg)
![Page 43: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/43.jpg)
Unified shader architecture to redistribute shader loads
![Page 44: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/44.jpg)
Cg de nVIDIA• (vs. HLSL pour Microsoft, GLSL pour OpenGL)• Langage similaire à C• Un programme Cg est compilé en
– DirectX 8,9,10– OpenGL arb,nvidia
• Utilisé pour les vertex et fragment shaders• Particularités du langage
– Opérateurs acceptent/retournent des scalaires et vecteurs– Swizzling de .xyzw et .rgba
• v3 = s.xxy; // v3.x = s.x; v3.y = s.x ; v3.z = s.y• v3.xw = s; // assignation seulement aux composantes xw
– Fonctions spéciales (abs, dot, log2, reflect, rsqrt, …)– Aucun: pointeurs, opérations sur bits, unions, aucun C++ avancé, …
![Page 45: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/45.jpg)
Vertex Shader
• Programmes pour modifier
– Forme: movements, motion blur, blend, morph, déformations, skinning, volumes d’ombre, etc.
– Couleur/texture: réflexion, bump map, textures projetées
• Un sommet : vertex shader : un sommet
– On doit alors transformer et illuminer le sommet nous-mêmes
– Ne permet pas de créer de nouveaux sommets (avant la venue du geometry shader)
– Impossible de modifier d’autres sommets
![Page 46: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/46.jpg)
Vertex Shader
• Un programme plus long ralentit le pipeline• SIMD: chaque instruction sur un vecteur (r.x, r.y,
r.z, r.w) est traitée en parallèle• GeForce3+4 and Radeon8500/9700:
– 128/256 instructions par vertex shader
![Page 47: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/47.jpg)
Exemples de Pixel Shaders
• Réflexion par pixel• Illumination par pixel (Phong, BRDF)• Textures procédurales
![Page 48: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/48.jpg)
GPGPU - General Purpose GPU
• Les premiers environnements de GPGPU– Les tableaux deviennent des textures, le calcul devient
une opération de rendu; il faut connaître le graphique– Le pixel shader est souvent préféré pour effectuer autant
d’opérations en parallèle• GPGPU langages:
– CUDA (nVIDIA), CAL (AMD), RapidMind platform, Brook project, Microsoft Accelerator
• GPU est utilisé comme un stream processor• Pas tous les problèmes s’implémentent efficacement sur GPU
– calcul en précision float, pas encore en double– accès mémoire sont limités
![Page 49: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/49.jpg)
GPGPU - Exemples d’applications
• Ray tracing, radiosity, photon mapping• Simulations physiques dans les jeux (havok)• Simulations selon les équations de Navier-Stokes,
Smoothed-particle hydrodynamics, Lattice Boltzmann, équations d’Euler (fluides, nuages, etc.)
• Librairies de FFT et transformées en ondelettes• Alignements de protéines• Chimie quantique• etc.
![Page 50: IFT3355: Infographie Pipeline graphique © Victor Ostromoukhov Dép. I.R.O. Université de Montréal](https://reader035.vdocuments.pub/reader035/viewer/2022062318/551d9dbf497959293b8e09ac/html5/thumbnails/50.jpg)
Larrabee (Intel)
32 cores x 16 single-precision float SIMD per core x 2 FLOPS x 2GHz per core = 2 TFLOPS