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...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Jaromír BRAMBOR4.5. MODÈLE FORMEL DU TRAITEMENT EN PIPELINE GRAPHIQUE4.5.2.5 Opération du framebufferLes opérations du pipeline graphique qui sont regroupées dans notre diagramme <strong>de</strong> blocs, fig. 3.18,page 52, sous le nom Raster opérations constitue, en effet, un bloc fonctionnel tout entier qui traiteles fragments, les convertit en pixels et se charge <strong>de</strong> leur fusion avec le contenu déjà présent dans leframebuffer.La manière dont l’information d’un fragment est fusionnée avec les données du framebuffer peut êtreconfigurée par l’utilisateur et nous pouvons, si notre matériel dispose <strong>de</strong> telles capacités, avoir égalementles fonctionnalités <strong>de</strong> post-traitement <strong>de</strong>s pixels plus ou moins complexes.Nous avons regroupé toutes ces opérations dans un bloc que nous avons nommé raster processormais qui ne correspond pas sur les GPU à un vrai processeur mais plutôt à un certain nombre <strong>de</strong>s blocsfonctionnels qui sont enchaînés dans un pipeline et dont <strong>la</strong> fonction peut être activée par l’utilisateur.Pour suivre <strong>la</strong> même logique que <strong>pour</strong> le vertex processeur et le fragment processeur, nous définissonsle raster processeur par <strong>la</strong> fonction rprocessor. Elle prend un programme RProg comme paramètreet englobe tous les blocs <strong>de</strong> post-traitement travail<strong>la</strong>nt avec les informations du framebuffer dans uneseule fonction du Haskell :rprocessor :: Env → RProg→ FB → [ F ] → FBrprocessor e rp fb fs = foldl (rp$e) fb fsCe processeur peut obtenir <strong>de</strong>s paramètres <strong>de</strong> configuration <strong>de</strong> l’environnement Env et applique le programmeRProg sur tous les fragments du stream d’entrée [F] en utilisant les données du framebuffer FB.Le raster programme se charge également <strong>de</strong> l’écriture d’un nouveau pixel issu <strong>de</strong> ces opérations dansle framebuffer. La fonction du Haskell foldl qui est utilisée ici est parfaitement convenable <strong>pour</strong> notretravail. Elle correspond à <strong>la</strong> réduction du stream par une fonction dont les arguments sont <strong>de</strong> <strong>de</strong>ux typesdifférents et qui est parfaitement convenable <strong>pour</strong> notre travail.Nous présentons ici <strong>la</strong> signature <strong>de</strong> type RProg du raster programme, <strong>la</strong> définition précise sera spécifiéeultérieurement selon les besoins particuliers <strong>de</strong> nos algorithmes.type RProg :: ( Env → FB → F → FB)4.5.3 Modèle du pipeline graphique <strong>de</strong>s GPUNous assemblons un modèle <strong>mathématique</strong> du pipeline graphique à partir <strong>de</strong>s primitives du calculque l’on vient <strong>de</strong> présenter. Ainsi, le pipeline graphique est défini comme fonction pipeGPU qui enchaînedans une séquence <strong>de</strong> traitement le vertex processeur vprocessor, rastériseur ras, fragment processeurfprocessor, et les opérations du framebuffer exprimées par un processeur abstrait rprocessor. Un nouveauframebuffer issu <strong>de</strong> notre calcul est incorporé dans l’environnement <strong>de</strong> sortie <strong>de</strong> ce pipeline par <strong>la</strong>fonction refreshFB.pipeGPU :: VProg → Rasterizer → FProg → RProg→ Commands → Env → EnvpipeGPU vp ras fp rp (ss, vs ) e =(refreshFB e)◦ (rprocessor e rp (getFB e))◦ (fprocessor e fp )◦ (ras e)$ (ss, (vprocessor e vp) vs )Le comportement <strong>de</strong> ce pipeline est modifiable par les fonctions passées comme arguments <strong>de</strong> ce pipeline.VProg définit le programme du vertex processeur, ras définit <strong>la</strong> manière exacte <strong>de</strong> rastérisation <strong>de</strong>sformes géométriques, FProg définit le programme du fragment processeur, RProg définit le fonctionnement<strong>de</strong>s opérations sur le framebuffer et <strong>la</strong> manière dont les fragments sont transformés en pixels etdont les pixels sont fusionnés avec les données dans le framebuffer.83

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

Saved successfully!

Ooh no, something went wrong!