12.07.2015 Views

Algorithmes de la morphologie mathématique pour - Pastel - HAL

Algorithmes de la morphologie mathématique pour - Pastel - HAL

Algorithmes de la morphologie mathématique pour - Pastel - HAL

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Algorithmes</strong> <strong>de</strong> <strong>la</strong> <strong>morphologie</strong> <strong>mathématique</strong> <strong>pour</strong> les architectures orientées fluxJaromír BRAMBORà l’intérieur d’une forme, <strong>pour</strong> interpoler les couleurs, les vecteurs décrivant les propriétés <strong>de</strong> <strong>la</strong> surface,les coordonnées <strong>de</strong>s textures et peut même être utilisée <strong>pour</strong> interpoler d’autres données qui n’ont pas uncorrespondant direct dans le graphisme 3D.Après <strong>la</strong> création et l’obtention <strong>de</strong>s paramètres interpolés <strong>de</strong>s vertex, les fragments passent à l’unité<strong>de</strong> traitement <strong>de</strong>s fragments décrite sur <strong>la</strong> fig. 3.18 par le bloc Fragment processeur et appelée égalementpar le terme ang<strong>la</strong>is fragment sha<strong>de</strong>r. Il s’agit d’une unité <strong>de</strong> traitement qui traite le flux <strong>de</strong> <strong>la</strong> mêmemanière que le Vertex processeur. C’est-à-dire que nous pouvons accé<strong>de</strong>r aux paramètres globaux etmême échantillonner les textures mais nous ne pouvons pas influencer le traitement d’autres fragments oucréer <strong>de</strong> nouveaux fragments. Dans les applications graphiques 3D, cette unité est utilisée <strong>pour</strong> un calculintensif <strong>de</strong> <strong>la</strong> couleur locale du fragment et implémente <strong>la</strong> partie principale du calcul <strong>de</strong> l’illumination <strong>de</strong><strong>la</strong> partie <strong>de</strong> <strong>la</strong> surface 3D qui correspond au fragment. C’est <strong>pour</strong>quoi ce bloc fonctionnel est fortementparallélisé, plus que celui du processeur <strong>de</strong>s vertex, et son implémentation matérielle est optimisée <strong>pour</strong>l’accès massif aux textures, ce qui se traduit par une structure particulière <strong>de</strong>s mémoires caches qui ont<strong>pour</strong> but d’exploiter au maximum <strong>la</strong> localité <strong>de</strong>s données lors d’échantillonnage <strong>de</strong>s textures.Les fragments traités passent dans l’unité suivante que nous désignons comme unité <strong>de</strong> post-traitementqui correspond dans <strong>la</strong> figure 3.18 au bloc Raster opération et qui regroupe tout un tas <strong>de</strong> fonctions utiles.Parmi elles, nous trouvons, selon les capacités <strong>de</strong> notre GPU cible, le fusionnement (appelé blendingavec les valeurs du framebuffer), application d’une transformation fixe sur les valeurs <strong>de</strong> <strong>la</strong> couleur, lesopérations du masque, les tests sur les valeurs, <strong>la</strong> convolution, <strong>la</strong> fonction stencil <strong>de</strong> masquage conditionnel,suppression <strong>de</strong>s fragments selon <strong>la</strong> valeur <strong>de</strong> leur profon<strong>de</strong>ur, accumu<strong>la</strong>tion <strong>de</strong>s valeurs. Pour plusd’information, nous renvoyons le lecteur à <strong>la</strong> littérature Gra03, WNDS99 .Le flux <strong>de</strong>s pixels qui sortent <strong>de</strong> ce bloc est écrit continuellement dans le framebuffer. Le framebuffera aujourd’hui <strong>de</strong> <strong>la</strong>rges possibilité qui ne se restreignent pas seulement à un vidéobuffer. En effet, il estpossible d’y connecter diverses zones <strong>de</strong> mémoire d’un GPU et obtenir ainsi <strong>la</strong> sortie <strong>de</strong>s résultats quiest configurable par l’utilisateur lors <strong>de</strong> l’exécution du programme dans les GPP.Pour conclure, nous <strong>de</strong>vrions noter que l’évolution <strong>de</strong> <strong>la</strong> structure du pipeline graphique est constante.Il est fort probable que les fonctionnalités dont nous disposons à présent seront é<strong>la</strong>rgies, comme c’étaitdéjà le cas à plusieurs reprises. Par exemple, avant 2004, nous n’avions pas encore <strong>la</strong> possibilité d’accé<strong>de</strong>raux textures à partir <strong>de</strong>s Vertex programmes. En même temps, le schéma <strong>de</strong> blocs que nous avonsprésenté sur <strong>la</strong> fig. 3.18, page 52, est assez général et <strong>de</strong>vrait être va<strong>la</strong>ble dans sa forme encore un certaintemps. Cette remarque est due au fait que <strong>la</strong> recherche et le développement dans ce domaine sont trèsintensifs et nous pouvons nous attendre à <strong>de</strong>s changements plus ou moins importants. Comme exempled’une implémentation non standard du schéma c<strong>la</strong>ssique du pipeline graphique, nous pouvons citer l’architectureATTILA MGR+ 05a, MGR + 05b dans <strong>la</strong>quelle les unités <strong>de</strong> traitement <strong>de</strong>s vertex et <strong>de</strong>s fragmentssont réunies dans <strong>de</strong>s blocs fonctionnels universels et programmables. Cette architecture distribue lesmoyens matériels <strong>pour</strong> le calcul en stream selon l’intensité du traitement dans un bloc ou l’autre et donneaux unités universelles soit <strong>la</strong> fonction d’un vertex processeur, soit d’un fragment processeur. Il s’agitd’une architecture tout-à-fait intéressante <strong>pour</strong> notre traitement dans lequel nous utilisons <strong>la</strong>rgement plusles unités <strong>de</strong>s fragments que celles <strong>de</strong>s vertex et où il serait avantageux <strong>de</strong> disposer <strong>de</strong> maximum <strong>de</strong>moyens matériels dédiés au traitement <strong>de</strong>s fragments, même temporairement, <strong>pour</strong> ainsi obtenir uneparallélisation encore plus forte du traitement en flux.3.4.5.4 Interfaces <strong>de</strong> programmation <strong>de</strong>s GPP - DirectX et (Open)GLIl faut disposer d’outils qui permettent aux programmeurs <strong>de</strong>s applications sur les GPP <strong>de</strong> facilementutiliser les fonctionnalités matérielles <strong>de</strong>s GPU. Deux groupes <strong>de</strong>s API sont actuellement disponibles. Lepremier groupe est constitué par DirectX <strong>de</strong> Microsoft. Le <strong>de</strong>uxième groupe est constitué par OpenGL<strong>de</strong> Silicon Graphics Incorporated et par d’autres dont <strong>la</strong> syntaxe et les fonctionnalités sont très prochesd’OpenGL et dont nous pouvons citer Mesa ou l’API OpenGL ES <strong>de</strong>stiné <strong>pour</strong> les systèmes embarqués.Les <strong>de</strong>ux offrent une interface qui permet <strong>de</strong> manier les GPU mais elles diffèrent dans <strong>la</strong> philosophie54

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!