Architecture et Fonctionnement d’un GPU Géométrie Rendu.

Slides:



Advertisements
Présentations similaires
Aurélien Barbier LIRIS Université Claude Bernard Lyon 1 Nautibus, 8 boulevard Niels.
Advertisements

Architecture de machines Le microprocesseur
Carsten Dachsbacher Christian Vogelgsang Marc Stamminger
Hierarchical Z-Buffer Visibility
Plan Rappels La chaîne d’affichage Evolutions Fonctionnement de l’œil
DirectX Guillaume Randon Microsoft Services
LOD et Progressive Meshes (maillages progressifs) Hugue Hoppes 1996
The Reyes Image Rendering Architecture
Technique des Surfels Surfels: Surface Elements as Rendering Primitives SIGGRAPH 2000 H.Pfiste, J.van Baar, M.Zwicker, M.Gross.
Ray Tracing Acceleration Techniques A Survey of Ray Tracing Acceleration Techniques James Arvo et David Kirk Ray Tracing on Programmable Graphics Hardware.
Les erreurs types à ne pas commettre OpenGL Carina Portella Jean-Philippe Reynier DESS TNI – IDI Année
Transition image classique image numérique
Synthèse d’images.
à partir notamment du cours Siggraph 97 et d’autres ….
IMAGIS-GRAVIR / IMAG Rendu de forêts en temps-réel iMAGIS / GRAVIR Franck Sénégas DEA IVR Tuteur: Fabrice Neyret.
Xavier Décoret* Frédo Durand° François Sillion*
Le Concept du programme enregistré
Lancer de rayons interactif
Exportation des données
CALCUL PARALLELE PRODUIT : MATRICE – VECTEUR 10 pages Exposé par :
Discover Pyratec’s TombExplorer 2.0
Créer une animation simple Gif avec ImageReady.
IFT3730: Infographie 3D Transformations Géométriques
Exposé réalisé par: ABID RIM TAIEB IMEN.
SUJETS SPÉCIAUX EN INFORMATIQUE I PIF Contenu du cours Transformations géométriques des objets –Transformations 2D –Transformations entre systèmes.
Modélisation géométrique à l’aide d’un maillage
Images synthètiques de haute qualité
Visualisation de surfaces décrites analytiquement
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
IFT3730 : Infographie 3D Systèmes et modèles graphiques Pierre Poulin, Derek Nowrouzezahrai Hiver 2013 DIRO, Université de Montréal.
IFT2740 : Outils de l'infographie 3D Systèmes et modèles graphiques
L ’acquisition d ’images
IFT3355: Infographie Transformations Géométriques
PROTOTYPE D’UN PROGRAMME ÉCRIT EN C++ BASÉ SUR OPENGL
Projet Télédétection Vidéo Surveillance Deovan Thipphavanh – Mokrani Abdeslam – Naoui Saïd Master 2 Pro SIS / 2006.
Les images de synthèses Duprat Anatole. Les images de synthèses consistent en la création assistée par ordinateur, d'images numériques. Il existe différentes.
Création en images de Synthèse Modèles de rendu d’une scène 3D
Projet Lancer de Rayons
Introduction aux Cartes Graphiques
OpenGL Shading Language Introduction. But de ce cours  Non-buts  Spécialistes GLSL  Experts en GLSL  Exploration du pipeline graphique  Séparation.
POWERPOINT.
Credits : Joëlle Thollot, Hector Briceño, Edmond Boyer
1. Ook Christophe Delagarde, septembre 1999 I.U.T., Université de la Méditerrainée 2.
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 10 Textures –Définir la texture –Superposition d’une texture sur une surface plane –Superposition.
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 6 Transformation et animation de plusieurs modèles 3D avec XNA –Chargement des modèles 3D (modèle.
L'unité centrale est composé en générale de :
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 8 Rendu de surfaces –Modèles de rendu de surfaces –Illumination de la scène –Sources lumineuses –Composante.
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
DPI / Pixels / Compression
Diagramme de Gantt. Groupe Core Module de vecteur de ℝ ² utilisé pour représenter toutes les coordonnées et leur appliquer des transformations. Ré-implémentation.
Les cartes graphiques Introduction Histoire Aujourd’hui
Simulation réaliste de ruisseaux en temps réel Stage de M2R IVR 2005 Frank Rochet sous la direction de Fabrice Neyret GRAVIR / IMAG-INRIA.
Plan du cours Cours 1,2 : le pipeline graphique
Visualisation des flots optiques en 3D
Projet LIF Eduardo San Martin Morote Yoann Maret-Verdant
La programmation créative Scratch
Traitement d’images 420-D78-SW A15 Semaine 02.
Éclairage, ombrage Fiat lux !.
Programmation créative Semaine 03. Agenda de leçon  Rotation d’un sprite  Modifier la couleur d’un sprite.
Introduction aux technologies du jeux-vidéo Steve Gury
GRAPHISME PAR ORDINATEUR SIF Contenu du cours 10 Textures –Définir la texture –Superposition d’une texture sur une surface plane –Superposition.
Premières notions de la 3D
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
FLASH MX : séance 1 Vivien FILIPPINI Jeanne VERRE Exposé SI28.
SI 28 - Présentation Image Ready Aurélie Letenoux GSU 4.
Elise Pierrot, GSU04 ImageReady, traitement d’image pour le WEB Présentation SI28.
Principes de base d’un DIAPORAMA
ARCHITECTURE MATERIELLE D’UN SYSTEME A MICROPROCESSEUR
Chapitre 12 Surveillance des ressources et des performances Module S41.
Transcription de la présentation:

Architecture et Fonctionnement d’un GPU Géométrie Rendu

Sommets Sommet : x,y,z,w r,g,b,a Obligatoire Nx,Ny,Nz Couleur u,v taille poids Obligatoire Couleur Normale Texture Taille du point « vertex blending » pour animation En octets : x,y,z,w : 16 , r,g,b,a : 4, Nx, Ny, Nz : 12, … Idéal : taille = taille du cache les cartes peuvent sans problème gérer des sommets de 64, 128 voire même 256 octets

Primitives point : billboards sprites ligne triangle triangle fan triangle strip etc Indexation : passer les n° des sommets plutôt que les sommets

Tessellation deux informations nécessaires : position du sommet et normale But : interpoler la position et la normale  nouveaux sommets entre 2 existants. faire varier le nombre de sommets afin que les objets proches en possèdent beaucoup et que les objets distants en possèdent peu. Idéal : augmenter le nombre afin que chaque sommet = un pixel à l'écran (ressources !) Ex : triangles PN (Point-Normal ) (ATI) RT-Patches (Real-Time Patches) (NVIDIA) Oui en DirectX, Non en OpenGL

Vertex Pipeline version fixe : Transformations 3D de base Eclairage de base Version programmable : Shaders

Vertex Pipeline: fixe données peu flexibles : ( couleurs obligatoirement RGBA, coordonnées = (X, Y, Z et W), etc.) Transformations (matrices) = translation, rotation ou échelle simples calculs au niveau de l'éclairage, position de la lumière et la normale

Vertex Pipeline : version programmable énorme flexibilité au niveau des algorithmes de rendu (mais pas temps réel) Registres entrée : v0-v?? (sommet à traiter) récupération : r0-r?? (temporaires) constantes : c0-c?, i0-i?, b0-b? (globales à un shader) échantillonnage : s0-s3 (textures) adressage (a0), compteur de boucle (aL), attribut (p0)

Vertex Pipeline : version programmable Instructions : en nombre limité racines carrées réciproques, des produits scalaires, des multiplications, additions Boucles, branchements conditionnels Vertex shader de réflection/réfraction (nVIDIA) Vertex shader de perturbation des sommets (nVIDIA )

Vertex Pipeline: performances Unités de traitement des sommets (vertex units). unité ≈ vertex pipeline. un vertex pipeline (ou un vertex shader) traite un seul sommet à la fois => plusieurs unités traitent plusieurs sommets (2, 4, 8, 12 ou 16) en parallèle. Taille et vitesse du bus mémoire Taille des sommets Nombre d'instructions d'un shader

Clipping, Culling et tramage Culling : pour éliminer des "faces avant" ou "faces arrière" Clipping : un sommet "hors" écran n'est pas affiché Tramage : construction des primitives à partir des sommets. anti-aliasing possible mais pas anti-aliasing complet (fin du pixel pipeline).

Pixel Pipeline le pixel pipeline reçoit un pixel, ainsi que quelques informations l'accompagnant (les coordonnées des textures, par exemple). A partir de ces informations, il va construire un pixel complet

Pixel Pipeline : version fixe Le pixel pipeline s'occupe des textures (l'éclairage a déjà été calculé par le vertex pipeline). Une carte graphique est capable de stocker un nombre important de textures, mais ne peut en utiliser qu'un certain nombre simultanément (autour de 4 à 8 textures simultanées). Accès aux textures Pour chaque texture jeu de coordonnées de texture correspondant (les coordonnées UV). Mélange des textures Pour chaque texture, une opération différente est spécifiée. ex: pour la 1e texture, additionner la couleur actuelle du pixel à la couleur obtenue dans la texture. pour la 2e texture, multiplier la composante alpha (lightmaps).

Pixel Pipeline version programmable : pixel shaders Entrée : données d'un pixel traitement Sortie : valeurs modifiées Instructions Ces instructions réalisent des opérations sur les valeurs qui leur sont fournies (par exemple couleur, UV, …). Texld Cette instruction (texture load) permet d'aller chercher des données dans les textures (couleurs, ou perturbations pour le bump mapping,…) Texkill contrôle le flux du pixel pipeline. En annulant le rendu d’un pixel on augmente les performances (le pixel ne va pas plus loin dans le processus de rendu).

Versions Pixel Shaders 1.3 Cette "première" version possédait très peu de registres ainsi que très peu d'instructions => limitée. Pixel Shaders 1.4 utilisée principalement par ATI ( Radeon 8500), elle est beaucoup plus puissante que la version précédente puisqu'elle peut aller chercher les données présentes dans les textures ( pas supportée par les cartes NVIDIA de l'époque). Pixel Shaders 2.0 et 2.x enfin utilisables parce que de nombreuses instructions ont été ajoutées (≈ vertex shaders 1.0) , tout en gardant les possibilités des pixel shaders 1.4 et en les simplifiant. Contrôle de flux avec la version 2.x. Pixel Shaders 3.0 ajout de quelques registres et quelques nouvelles instructions, amenant le jeu d'instructions des pixel shaders 3.0 plus ou moins au même niveau que celui des vertex shaders 3.0, avec évidemment plus d'instructions au niveau de l'accès aux textures.

Pixel Pipeline : performances Plus il y a de pixels à traiter, plus c'est lent. Plus il y a de pipelines capables de les traiter, plus c'est rapide (32 en pratique).

Tests Alpha, de profondeur et stencil Test alpha pour les effets de transparence. contrôle l'affichage des pixels (ne pas afficher les pixels où la composante alpha est à moins de 50%, par exemple). l'utilisation de la transparence consomme une certaine quantité de bande passante, puisqu'il y a techniquement plus de pixels à afficher. Le «fillrate » est donc affecté. Test de profondeur comme le test alpha ne pas afficher les pixels non visibles. Test du Stencil pour créer des ombres ou autres effets où la forme ou le contour d'un objet sont requis Le Z Buffer - (blanc: proche; noir: loin)

Brouillard et mélange alpha ≠brouillard volumétrique (technique de rendu) ≈ atténuation géométrique et atmosphérique Mélange de pixels de source et de destination

Fenêtre (viewport) Viewport : Anti-aliasing où les pixels vont se retrouver dans la fenêtre toute la scène affichée sur un morceau de la fenêtre (ex : écran partagé en deux). scène affichée une première fois sur uen moitié, puis une seconde fois sur l’autre moitié. Anti-aliasing "fullscene anti-aliasing" s'applique à toute la scène, ≠ anti-aliasing de lignes, par exemple. Multisampling : scène rendue plusieurs fois, rendus légèrement décalés, valeurs de chaque pixel mélangées Supersampling : scène rendue en plus haute résolution, puis réduite à sa résolution « normale » (valeurs des pixels interpolées => image lissée)