La rastérisation est le processus de conversion d'une description vectorielle de primitives tridimensionnelles (triangles, lignes, points) en un ensemble de pixels (fragments) pour affichage sur un écran. Selon Khronos Group, 2025, la rastérisation est une étape automatique (non programmable) du pipeline graphique, située entre le Vertex Shader et le Fragment Shader. Rasterization détermine quels pixels de l'écran appartiennent à quel triangle et calcule les attributs interpolés pour chaque fragment.
Points clés
Rasterization est une étape du pipeline graphique qui convertit les primitives géométriques (triangles, lignes) en un ensemble de fragments pour un traitement ultérieur par le Fragment Shader. Les données d'entrée sont les sommets du triangle en coordonnées d'écran et leurs attributs (couleur, normales, UV). La sortie est un ensemble de fragments avec des attributs interpolés.
Contrairement aux shaders programmables (Vertex Shader et Fragment Shader), la rastérisation est une étape fixe (non programmable). Le développeur ne peut pas modifier l'algorithme de rastérisation, mais peut contrôler ses paramètres : mode de découpage (culling), largeur de ligne, décalage de profondeur (polygon offset) et multisampling.
Presque tous les graphiques modernes en temps réel — jeux, UI, AR/VR — utilisent la rastérisation. C'est la méthode de rendu la plus performante, capable de traiter des millions de triangles par image à 60 FPS. Les rastériseurs GPU sont optimisés pour le traitement parallèle de milliers de triangles simultanément via des blocs ROP (Render Output Units) spécialisés.
La rastérisation de triangles commence après que le Vertex Shader a transformé les sommets en coordonnées d'écran. Le GPU prend les trois sommets d'un triangle et détermine quels pixels de l'écran se trouvent à l'intérieur de ce triangle.
Le processus comprend trois étapes séquentielles : détermination de la boîte englobante (bounding box) du triangle en pixels — vérification de chaque pixel à l'intérieur de la boîte englobante pour l'appartenance au triangle (edge function) — calcul des attributs interpolés (coordonnées barycentriques) pour chaque pixel couvert. La Edge function est une équation linéaire qui détermine de quel côté de l'arête du triangle se trouve un point.
| Étape | Description | Résultat |
|---|---|---|
| Clipping | Découpage des triangles hors des limites du viewport | Primitives visibles |
| Viewport transform | Transformation en coordonnées d'écran | Coordonnées pixels |
| Triangle setup | Calcul des edge functions et de la boîte englobante | Paramètres de rastérisation |
| Fragment generation | Test de couverture et interpolation | Fragments + attributs |
Rasterization peut être implémentée par différents algorithmes, chacun ayant ses propres compromis entre performance et qualité. Les GPU modernes utilisent une combinaison de plusieurs approches.
L'algorithme classique de rastérisation développé pour les premières GPU. Le triangle est traité ligne par ligne (scanline) : pour chaque ligne de l'écran, les points d'entrée et de sortie du triangle sont déterminés, et tous les pixels entre eux sont remplis. Scanline conversion est efficace pour les grands triangles mais nécessite une logique complexe pour les triangles de forme arbitraire.
Les GPU modernes utilisent la méthode de rastérisation half-space : pour chaque côté du triangle, une edge function est calculée — une équation linéaire positive d'un côté et négative de l'autre. Un pixel appartient au triangle si les trois edge functions sont positives. Half-space rasterization est facilement parallélisable et bien adapté aux architectures GPU SIMD.
Les GPU mobiles (Qualcomm Adreno, ARM Mali) utilisent le Tile-Based Rendering (TBR). L'écran est divisé en petites tuiles (16x16 ou 32x32 pixels), et la rastérisation est effectuée pour chaque tuile séparément. Cela minimise les accès mémoire en stockant le framebuffer dans une mémoire locale rapide (mémoire de tuile). Le TBR réduit la consommation d'énergie, ce qui est critique pour les appareils mobiles.
Rasterization et le ray tracing sont deux approches fondamentalement différentes du rendu graphique 3D. La rastérisation domine dans les applications temps réel, tandis que le ray tracing est utilisé dans le rendu hors ligne et pénètre progressivement le temps réel (sur les GPU compatibles RTX).
| Paramètre | Rastérisation | Ray Tracing |
|---|---|---|
| Principe | Triangle → fragments | Rayon → intersection avec la scène |
| Vitesse | Très rapide (millions de triangles/image) | Lent (milliers de rayons/image) |
| Qualité | Nécessite des techniques supplémentaires (ombres, réflexions) | Ombres et réflexions physiquement correctes |
| GPU mobiles | Méthode standard | Support limité (A17 Pro, Snapdragon Gen 3) |
| Consommation énergétique | Faible | Élevée |
La rastérisation introduit le problème de l'aliasing — des bords dentelés (jaggies) aux limites des triangles. Cela se produit car un pixel est discret et ne peut pas être partiellement couvert par un triangle. Pour lutter contre l'aliasing, on utilise le multisampling (MSAA).
MSAA (Multisample Anti-Aliasing) effectue la rastérisation avec un taux d'échantillonnage accru (2x, 4x, 8x). Au lieu d'un échantillon par pixel, plusieurs sous-échantillons sont utilisés, chacun testé pour la couverture du triangle. MSAA 4x traite 4 sous-échantillons par pixel, offrant un lissage notable des bords sans augmenter complètement la résolution de rendu.
Contrairement à MSAA, les méthodes d'anti-aliasing par post-traitement (FXAA, SMAA, TAA) fonctionnent après la rastérisation en analysant l'image finale. FXAA (Fast Approximate Anti-Aliasing) détecte les bords de l'image et applique un flou pour lisser, fonctionnant significativement plus vite que MSAA mais avec une qualité moindre.
Rasterization sur les GPU modernes est effectuée par des blocs matériels spécialisés — ROP (Render Output Units). Le nombre de ROP affecte directement le taux de remplissage (fill rate) — le nombre de pixels que le GPU peut traiter par seconde.
Pour les GPU mobiles (Tile-Based Rendering), les facteurs critiques incluent : minimiser l'overdraw via l'early-Z rejection, utiliser le back-face culling pour supprimer les triangles invisibles et l'occlusion culling pour rejeter les triangles complètement recouverts par d'autres objets.
Questions fréquentes
La rastérisation est le processus de transformation des triangles en pixels sur l'écran. Le GPU prend un triangle tridimensionnel, détermine quels pixels de l'écran il couvre et les transmet au Fragment Shader pour les colorer.
La rastérisation projette les triangles sur l'écran et détermine la couverture des pixels (très rapide). Ray tracing lance des rayons depuis la caméra et vérifie l'intersection avec la géométrie (physiquement plus précis mais significativement plus lent).
Lors de la rastérisation, un pixel appartient entièrement à un triangle ou non — d'où les bords dentelés (aliasing). MSAA lisse les bords en utilisant plusieurs sous-échantillons par pixel, tandis que FXAA applique un filtre à l'image finale.
Non, la rastérisation est une étape fixe du pipeline graphique. Le développeur ne peut pas modifier l'algorithme, mais peut contrôler les paramètres : culling, polygon offset, mode de rastérisation (points, lignes, triangles) et paramètres MSAA.
Tile-Based Rendering (TBR) divise l'écran en tuiles et les traite dans une mémoire locale rapide plutôt que dans la VRAM globale. Cela réduit radicalement la consommation d'énergie et la bande passante, ce qui est crucial pour les appareils mobiles alimentés par batterie.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi