FR 2917211 A1 20081212 FR 0704098 A 20070608 PROCEDE ET DISPOSITIF DE GENERATION D'IMAGES GRAPHIQUES La présente invention concerne la génération d'images graphiques par un calculateur, et en particulier la détermination des valeurs des pixels de telles images. La présente invention s'applique notamment aux ordinateurs personnels, aux consoles de jeux, ainsi qu'aux objets électroniques portables comme les téléphones mobiles et les assistants personnels (PDA). La génération d'images graphiques comporte des traitements faisant intervenir couramment une modélisation mathématique de l'interaction de la lumière avec une scène en trois dimensions vue d'un point d'observation donné. Ces traitements dits de "rendu" génèrent une image en deux dimensions de la scène vue du point d'observation. Pour atteindre une qualité d'image équivalente à celle d'une photographie d'une scène du monde réel, et satisfaire à des contraintes temps réel sévères, ces traitements font généralement appel à une unité de traitement spécialisée également appelée "carte ou processeur graphique". Certaines cartes graphiques présentent une architecture permettant réaliser plusieurs opérations en parallèle. Les traitements de rendu sont répartis entre le processeur principal (CPU) et l'unité de traitement graphique du calculateur. Classiquement, le processeur principal réalise des opérations de haut niveau telles que la détermination de la position et du mouvement d'objets dans une scène, et génère à partir d'opérations de haut niveau des commandes de rendu et des données graphiques de description générale d'une scène. A partir de ces commandes et de données graphiques, l'unité de traitement graphique produit une ou plusieurs images qui sont mémorisées dans une mémoire de trame contenant des images qui sont affichées sur un écran d'affichage. Une unité de traitement graphique assure notamment des traitements successifs dits de "sommet" (vertex), de "rasterisation", puis de "fragment". Le traitement de sommet convertit des coordonnées de points d'objets dans un espace à deux ou trois dimensions, considérés comme des sommets de contours de zones d'image à contour polygonal (généralement triangulaire), en coordonnées de points dans une image de l'espace vu par un utilisateur. Le traitement de rasterisation convertit chaque zone d'image en ensembles de pixels appelés "fragments" comprenant les coordonnées dans l'image de tous les pixels de la zone d'image et des attributs de couleur et de texture associés aux sommets de la zone d'image. Le traitement de fragment comprend notamment la détermination de caractéristiques ou attributs, tels que la couleur et la texture de chacun des pixels du fragment. Le traitement de fragment fournit des couleurs de pixels qui sont mémorisées dans une mémoire de trame d'un dispositif d'affichage. Certaines unités de traitement graphiques sont programmables au point de permettre l'exécution de programmes mettant en oeuvre des algorithmes complexes d'éclairage et d'ombrage des objets d'une scène. Le traitement de fragments s'avère être le plus coûteux en temps et en puissance de calcul. En effet, il doit être exécuté sur chaque zone d'image (ou fragment) de chaque image à générer. Or une image qui peut être affichée à une fréquence de trame de l'ordre de 30 trames par seconde, peut nécessiter le traitement de plusieurs dizaines de millions de fragments par seconde. Par ailleurs, la définition, et donc le nombre de pixels des écrans d'affichage des appareils portables tels que les téléphones mobiles tend à augmenter. Actuellement ces écrans d'affichage sont proches du format VGA (640 x 480 pixels). Dans ce cas, le nombre de pixels à calculer pour chaque image est alors de l'ordre de 300 000 pixels. Toutefois, ces appareils portables ne disposent pas de processeurs graphiques aussi performants que ceux des ordinateurs de type PC. Il est donc souhaitable de réduire le temps de calcul nécessaire au traitement des fragments, et ce en détériorant le moins possible la qualité des images. Cet objectif est atteint par la prévision d'un procédé de génération d'une image à partir d'un ensemble de zones d'image délimitées chacune par un contour de forme polygonale défini par un ensemble de sommets, et comprenant des pixels dont la couleur peut être déduite de la couleur de chacun des sommets de la zone d'image, le procédé comprenant une étape de détermination au pixel près des pixels appartenant à chaque zone d'image en fonction des dimensions en nombre de pixels de l'image à générer. Selon un mode de réalisation, le procédé comprend des étapes de : association des pixels de chaque zone d'image en blocs de pixels, et détermination d'une couleur pour chaque bloc de pixels de chaque zone d'image en fonction de la couleur 25 de chaque sommet de la zone d'image. Selon un mode de réalisation, les blocs de pixels d'une zone d'image comprennent au plus n lignes de m pixels selon que le bloc de pixel est situé ou non sur le contour de la zone d'image, n et m étant des nombres 30 entiers supérieurs ou égaux à 1. Selon un mode de réalisation, les blocs de pixels d'une zone d'image comprennent au plus 2 lignes de 2 pixels. Selon un mode de réalisation, le procédé comprend 35 des étapes de calcul d'une valeur de profondeur pour chaque pixel de chaque zone d'image en fonction d'une valeur de profondeur de chacun des sommets de la zone d'image, et de détermination des pixels de chaque zone d'image qui figurent dans l'image à générer en fonction de la valeur de profondeur de chacun des pixels de chacune des zones d'image. Selon un mode de réalisation, le contour des zones d'image est triangulaire. L'invention concerne également un processeur 10 configuré pour : générer une image à partir d'un ensemble de zones d'image délimitées chacune par un contour de forme polygonale défini par un ensemble de sommets, et comprenant des pixels dont la couleur peut être déduite 15 par interpolation de la couleur de chacun des sommets de la zone d'image, et déterminer au pixel près les pixels appartenant à chaque zone d'image en fonction des dimensions en nombre de pixels de l'image à générer. 20 Selon un mode de réalisation, le processeur est configuré pour : associer les pixels de chaque zone d'image en blocs de pixels, et déterminer une couleur pour chaque bloc de pixels 25 de chaque zone d'image en fonction de la couleur de chaque sommet de la zone d'image. Selon un mode de réalisation, les blocs de pixels d'une zone d'image comprennent au plus n lignes de m pixels selon que le bloc de pixel est situé ou non sur le 30 contour de la zone d'image, n et m étant des nombres entiers supérieurs ou égaux à 1. Selon un mode de réalisation, les blocs de pixels d'une zone d'image comprennent au plus 2 lignes de 2 pixels. Selon un mode de réalisation, le processeur est configuré pour calculer une valeur de profondeur pour chaque pixel de chaque zone d'image en fonction d'une valeur de profondeur de chacun des sommets de la zone d'image, et déterminer les pixels de chaque zone d'image qui figurent dans l'image à générer en fonction des valeurs de profondeur des pixels. Selon un mode de réalisation, le contour des zones d'image est triangulaire. L'invention concerne également un objet électronique portable, comprenant un processeur tel que défini précédemment. Dans ce qui suit seront décrits des exemples de mise en oeuvre du procédé de l'invention. Ces exemples sont décrits à titre non limitatif en relation avec les figures jointes parmi lesquelles : - la figure 1 représente sous la forme de blocs un exemple d'architecture de calculateur pouvant mettre en 20 oeuvre le procédé selon l'invention, - la figure 2 est une vue sous la forme de blocs d'un exemple d'architecture d'une unité de traitement graphique représentée sur la figure 1, - les figures 3A à 3C sont des vues d'un ensemble de 25 pixels illustrant un exemple de procédé de génération d'images graphiques, selon l'art antérieur, - la figure 4 est une vue d'un ensemble de pixels illustrant un traitement de fragments selon un exemple de réalisation de l'invention, 30 La figure 1 représente un exemple de calculateur adapté à la mise en oeuvre d'un procédé de génération d'images graphiques. Le calculateur comprend un processeur HP, des mémoires MEM, des interfaces d'entrée/sortie I0, une unité de génération d'images 35 graphiques GP connectée à une mémoire graphique GMEM et à un écran d'affichage DP, et une unité de génération de sons AU connectée à un ou plusieurs haut-parleurs. Un bus connecte entre eux le processeur HP, les mémoires MEM, GMEM, l'unité GP, l'unité AU et les interfaces I0. Les mémoires MEM peuvent comprendre des mémoires volatiles de type RAM et des mémoires non volatiles de type EEPROM ou FLASH. Les interfaces d'entrée/sortie peuvent comprendre une ou plusieurs unités d'interface de connexion à un réseau de communication (réseau mobile, WIFI, Ethernet), et une ou plusieurs unités d'interface de bus externe (I2C, SPI, IrDA, USB, .). La figure 2 représente un exemple d'unité de génération d'images graphique GP. L'unité GP comprend une unité de traitement de sommets (vertex) VPU, une unité d'assemblage de sommets PAU, une unité de sélection de zones affichées CPCU, une unité de localisation de pixels RSTU, une unité de génération de fragments (zones d'image) FPU, une unité de traitement de la profondeur des objets DPU et une unité de génération des pixels d'image FBO. L'unité VPU traite une collection d'objets définis par des zones d'image de couleur ou de texture homogène, pour placer les objets dans une scène en trois dimensions. Les objets à traiter sont mémorisés dans l'une des mémoires MEM et sont définis dans un référentiel propre par des zones d'image délimitées chacune par un contour polygonal déterminé par les positions des sommets du contour. L'unité VPU calcule les coordonnées des sommets des contours de zones dans un référentiel lié à une scène en trois dimensions et calcule des axes d'éclairement des objets en fonction de positions de sources lumineuses. L'unité VPU projette la scène en trois dimensions sur un plan correspondant à la scène vue par un utilisateur. A cet effet, l'unité VPU calcule les coordonnées des sommets dans le plan. Les contours des zones d'image sont par exemple de forme triangulaire, donc avec trois sommets. L'unité PAU regroupe les sommets localisés dans le plan par zone d'image. L'unité CPCU délimite une zone d'affichage dans le plan de la scène vue par l'utilisateur. Toutes les zones d'image en dehors de la zone d'affichage sont donc supprimées. Toutes les zones d'image à cheval sur la bordure de la zone d'affichage sont redécoupées pour supprimer les portions des zones d'image en dehors de la zone d'affichage. L'unité CPCU détermine ensuite une transformée à appliquer aux objets de la scène pour obtenir un effet de perspective. L'unité CPCU applique ensuite une transformée aux coordonnées des sommets pour obtenir la position des sommets dans l'écran d'affichage. Cette transformée de coordonnées tient compte de la résolution de l'écran d'affichage, c'est-à-dire du nombre de pixels en largeur et en hauteur dans une image affichée par l'écran. L'unité CPCU supprime ensuite les zones d'image qui ne sont pas à afficher, c'est-à-dire celles qui sont situées sur les faces arrières des objets de la scène. L'unité RSTU localise les pixels de chaque zone d'image dans l'image à afficher en fonction des coordonnées des pixels des sommets de la zone d'image...DTD: L'unité FPU détermine la couleur et la texture de chaque pixel de chaque zone d'image, déterminé par l'unité RSTU. L'unité DCU sélectionne les zones d'image et les portions de zone d'image à afficher en fonction de leur profondeur et de leur position par rapport à celles des autres zones d'image. L'unité DCU applique également une correction à la valeur des pixels de chaque zone d'image pour tenir compte de l'ombre portée par les objets de la scène aux autres objets. L'unité FBO transfère les pixels calculés par l'unité DCU en tenant compte d'un coefficient de transparence attribué à chacun des objets de la scène. Par ailleurs, les unités VPU et FPU accèdent à une zone mémoire de textures TMEM dans laquelle sont mémorisées des textures sur lesquelles pointent des sommets traités par l'unité VPU. Lorsqu'un sommet à traiter est associé à un pointeur vers une texture de la zone mémoire TMEM, l'unité FPU accède à la texture vers laquelle pointe le sommet pour déterminer la couleur de chacun des pixels des zones d'image ayant pour sommet le sommet à traiter. Les figures 3A à 3C illustrent les traitements effectués par les unités de rasterisation RSTU, de fragment FPU et de traitement de profondeur DCU. La figure 3A représente trois sommets P1, P2, P3 définissant un contour Ti de zone d'image Z1 de forme triangulaire. Le triangle Ti est représenté en surimpression sur une grille représentant les pixels d'une zone de l'écran d'affichage. L'unité RSTU détermine les pixels qui sont considérés comme appartenant à la zone d'image Z1 délimitée par le triangle Tl. Les pixels appartenant à la zone d'image Z1 apparaissent en gris sur la figure 3A. La figure 3B illustre le traitement effectué par l'unité FPU, selon l'art antérieur. A partir des caractéristiques de couleur et de texture des pixels des sommets Pl, P2, P3 de la zone d'image Z1, l'unité FPU détermine individuellement la couleur et la texture de chacun des pixels appartenant à la zone Zl. A cet effet, l'unité FPU utilise une fonction appliquée aux valeurs (couleur, texture) des pixels des sommets Pl, P2, P3 et aux distances (en nombre de pixels) entre le pixel à calculer et chacun des sommets. La fonction de détermination des valeurs des pixels peut être une fonction d'interpolation par exemple linéaire. Ainsi, la couleur de chaque pixel de la zone Zl, représentée en nuance de gris sur la figure 3B, peut être différente de celle de chacun des pixels adjacents. La figure 3C illustre le traitement effectué par l'unité DCU. Ce traitement comprend pour chaque zone d'image Z1 de l'image à générer, à déterminer (par exemple par interpolation) une valeur de profondeur pour chacun des pixels en fonction d'une valeur de profondeur attribuée à chacun des sommets P1, P2, P3 de la zone d'image, et à déterminer les parties des zones d'image à afficher dans l'image à générer en fonction de la valeur de profondeur de chacun des pixels de chaque zone d'image, c'est-à-dire celles qui ne sont pas masquées par d'autres zones d'image ayant une profondeur inférieure. Dans l'exemple de la figure 3C, une partie de la zone d'image Z1 est masquée par une zone d'image Z2 délimitée par un contour T2, dont les pixels présentent une profondeur inférieure à la profondeur des pixels de la zone Z1 Le traitement effectué par l'unité FPU s'avère très coûteux en temps de calcul, lequel augmente avec le nombre de pixels des images à générer, c'est-à-dire de l'écran d'affichage. Selon un mode de réalisation de l'invention, les pixels de l'image à générer sont regroupés en blocs de n x m pixels, n et m étant des nombres entiers supérieurs ou égaux à 1. Le traitement effectué par l'unité FPU détermine la couleur et la texture, non pas des pixels individuellement, mais des blocs de pixels appartenant à chaque zone d'image Z1. Les bordures des zones d'image Z1 restent déterminées au pixel près. La figure 4 illustre le traitement effectué par l'unité FPU selon un exemple de réalisation de l'invention. Dans l'exemple de la figure 4A, les pixels de la zone Z1 sont regroupés en blocs de 2 x 2 pixels. Chaque bloc de pixels de la zone Z1 considérée comprend par exemple les pixels de la zone Z1 ayant pour coordonnées dans l'image finale (2i, 2j), (2i+1, 2j), (2i, 2j+1), (2i+1,2j+1), i et j étant des nombres entiers variant dans des limites définies en fonction de la configuration et de la taille de la zone Z1 dans l'image à générer. Ainsi, la zone Z1 comprend des blocs B1 à B15. Comme la bordure de la zone reste déterminée au pixel près, certains blocs situés sur la bordure de la zone Z1 comportent moins de quatre pixels. Ainsi, le bloc B1 par exemple, ne comporte que trois pixels et le bloc B2 un seul pixel. A partir des caractéristiques de couleur et de texture des pixels des sommets Pl, P2, P3 de la zone d'image Z1, l'unité FPU détermine à l'aide d'une fonction d'interpolation, par exemple une fonction d'interpolation attribuée à la zone Z1, la couleur et la texture de chacun des blocs pixels appartenant à la zone d'image Z1. Ainsi, tous les pixels de chaque bloc de pixels appartenant à la zone Z1 présentent une couleur unique (représentée en nuances de gris). Ainsi, dans l'image finale obtenue dans la mémoire de trame FB, les contours sont définis au pixel près, tandis que la répartition des couleurs et des textures est définie au bloc de pixels près. Si par exemple, chaque image générée est au format VGA (640 x 480 pixels), la quantité de calculs nécessaires à la détermination des couleurs et textures des pixels de chaque zone d'image correspond à celle du format QVGA (320 x 240 pixels) si les pixels sont associés en blocs de 2 x 2 pixels. Comme les contours des objets présentés dans une image sont davantage visibles que les variations de nuances de couleur ou de texture de ces objets, l'image obtenue présente une qualité en apparence très peu dégradée par rapport à une image dont les pixels sont calculés individuellement. L'image ainsi générée est ensuite traitée par l'unité DCU pixel par pixel comme décrit précédemment en référence à la figure 3C. Bien entendu, au moins une partie du traitement effectuée par l'unité DCU peut être réalisée avant le traitement effectué par l'unité FPU pour alléger les traitements. A cet effet, seuls les pixels des parties de zones d'image réellement affichées sont déterminés par l'unité FPU. La mise en oeuvre de l'invention nécessite de modifier uniquement le traitement de calcul de la couleur et texture des zones d'image, réalisé par l'unité FPU pour qu'il s'applique non pas à chaque pixel, mais à chaque bloc de pixels. Le temps de calcul utilisé par l'unité FPU est sensiblement divisé par quatre dans le cas de blocs de pixels de taille 2 x 2. En d'autres termes, l'invention permet de diviser par un facteur 4, le besoin en puissance de calcul de l'unité FPU. Rapporté sur la totalité des traitements effectués par l'unité de génération d'images GP, l'invention permet approximativement un gain d'un facteur 2 en terme de puissance de calcul nécessaire ou de temps de traitement (dans le cas de blocs de pixels de 2 x 2 pixels). Il apparaîtra clairement à l'homme de l'art que la présente invention est susceptible de diverses variantes de réalisation et d'applications. En particulier, l'invention n'est pas limitée au regroupement des pixels en blocs de 2x2 pixels. L'invention peut être mise en oeuvre en regroupant les pixels plus généralement en blocs de n x m pixels, n et m étant des nombres entiers supérieurs ou égaux à 1, et pas nécessairement identiques. Il peut ainsi être envisagé de regrouper les pixels par exemple en blocs de 2 x 1 ou 1 x 2 pixels, ou en blocs de 4 x 4 pixels. 12 REVENDICATIONS 1. Procédé de génération d'une image à partir d'un ensemble de zones d'image (Z1) délimitées chacune par un contour (Ti) de forme polygonale défini par un ensemble de sommets (P1, P2, P3), et comprenant des pixels dont la couleur peut être déduite de la couleur de chacun des sommets de la zone d'image, le procédé comprenant une étape de détermination au pixel près des pixels appartenant à chaque zone d'image en fonction des dimensions en nombre de pixels de l'image à générer, caractérisé en ce qu'il comprend des étapes de : association des pixels de chaque zone d'image (Zl) en blocs de pixels (Bl-B15), et détermination d'une couleur pour chaque bloc de pixels de chaque zone d'image en fonction de la couleur 15 de chaque sommet (P1, P2, P3) de la zone d'image. 2. Procédé selon la revendication 1, dans lequel les blocs de pixels (Bl-B15) d'une zone d'image (Zl) comprennent au plus n lignes de m pixels selon que le 20 bloc de pixel est situé ou non sur le contour de la zone d'image, n et m étant des nombres entiers supérieurs ou égaux à 1. 3. Procédé selon la revendication 2, dans lequel 25 les blocs de pixels (Bl-B15) d'une zone d'image (Z1) comprennent au plus 2 lignes de 2 pixels. 4. Procédé selon l'une des revendications 1 à 3, comprenant des étapes de calcul d'une valeur de 30 profondeur pour chaque pixel de chaque zone d'image (Zl) en fonction d'une valeur de profondeur de chacun des sommets (Pl-P3) de la zone d'image, et de détermination des pixels de chaque zone d'image qui figurent dansl'image à générer en fonction de la valeur de profondeur de chacun des pixels de chacune des zones d'image. 5. Procédé selon l'une des revendications 1 à 4, 5 dans lequel le contour des zones d'image (Z1) est triangulaire 6. Processeur configuré pour : générer une image à partir d'un ensemble de zones 10 d'image (Z1) délimitées chacune par un contour (Tl) de forme polygonale défini par un ensemble de sommets (P1-P3), et comprenant des pixels dont la couleur peut être déduite par interpolation de la couleur de chacun des sommets de la zone d'image, et 15 déterminer au pixel près les pixels appartenant à chaque zone d'image en fonction des dimensions en nombre de pixels de l'image à générer, caractérisé en ce qu'il est configuré pour : associer les pixels de chaque zone d'image (Zl) en 20 blocs de pixels (B1-B15), et déterminer une couleur pour chaque bloc de pixels de chaque zone d'image (Zl) en fonction de la couleur de chaque sommet (P1-P3) de la zone d'image. 25 7. Processeur selon la revendication 6, dans lequel les blocs de pixels (Bl-B15) d'une zone d'image (Z1) comprennent au plus n lignes de m pixels selon que le bloc de pixel est situé ou non sur le contour de la zone d'image, n et m étant des nombres entiers supérieurs ou 30 égaux à 1. 8. Processeur selon la revendication 6 ou 7, dans lequel les blocs de pixels d'une zone d'image comprennent au plus 2 lignes de 2 pixels. 35 9. Processeur selon l'une des revendications 6 à 8, configuré pour calculer une valeur de profondeur pour chaque pixel de chaque zone d'image (Z1) en fonction d'une valeur de profondeur de chacun des sommets de la zone d'image, et déterminer les pixels de chaque zone d'image qui figurent dans l'image à générer en fonction des valeurs de profondeur des pixels. 10. Processeur selon l'une des revendications 6 à 10 9, dans lequel le contour des zones d'image (Z1) est triangulaire. 11. Objet électronique portable, caractérisé en qu'il comprend un processeur (GP) selon l'une des 15 revendications 6 à 10.