Brevet FR2964775A1 — publié le 20120316

PROCEDE D'ESTIMATION DE L'OCCULTATION DANS UN ENVIRONNEMENT VIRTUEL 1. Domaine de l'invention. L'invention se rapporte au domaine de la composition d'images de synthèse et plus particulièrement au domaine de l'estimation de l'occultation dans un environnement virtuel. L'invention s'inscrit également dans le contexte des effets spéciaux pour une composition en temps réel (de l'anglais « live »). 2. Etat de l'art. Selon l'état de la technique, il est connu d'utiliser la méthode dite du tampon de profondeur (de l'anglais « z-buffer algorithm ») pour gérer le problème de la visibilité dans un environnement virtuel ou scène 3D (c'est à dire à 3 dimensions). Gérer la visibilité d'un environnement virtuel consiste à déterminer quels objets ou parties d'objet de l'environnement sont visibles depuis un point de vue et quels objets ou parties d'objet ne sont pas visibles, seuls les objets ou parties d'objet visibles étant affichés. Selon cette technique, le tampon de profondeur est initialisé avec par exemple la profondeur maximale de chaque pixel de l'environnement virtuel. Puis, chaque objet de l'environnement virtuel est rendu, c'est-à-dire que les attributs (par exemple la couleur) associés aux fragments de surface formant l'objet sont calculés, et la profondeur associée à chaque fragment de l'objet considéré est estimée puis comparée à la valeur de profondeur du pixel correspondant dans le tampon de profondeur. Si la profondeur associée au fragment de l'objet est inférieure à la profondeur stockée dans le tampon de profondeur pour le pixel associé, alors la profondeur associée au fragment est stockée à la place de la profondeur initiale dans le tampon de profondeur, et ce pour chaque pixel du tampon de profondeur. Ce processus est réitéré pour chaque objet de l'environnement virtuel, le tampon de profondeur comprenant en fin de processus les profondeurs associées aux fragments des objets de l'environnement virtuel les plus proches du point de vue, c'est-à-dire les fragments visibles depuis le point de vue. Les attributs de ces fragments visibles sont alors associés à chaque pixel de l'image pour restituer le rendu final de l'image de l'environnement virtuel depuis le point de vue. Un des problèmes de cette technique est qu'elle requiert le calcul des attributs de l'ensemble des fragments de surface de chaque objet alors qu'une seule partie de ces fragments est visible depuis le point de vue. Seule une partie des attributs calculés sert donc réellement au rendu final de l'image représentant l'environnement virtuel depuis le point de vue. Il existe certaines techniques avancées de résolution de la visibilité dans un environnement virtuel, ces techniques cherchant à déterminer quelles zones de l'environnement virtuel sont visibles depuis une autre zone, seuls les objets ou parties d'objet visibles dans la zone contenant le point de vue étant rendus. Ces techniques permettent de réduire les calculs mais nécessitent un traitement préalable de l'environnement virtuel, ce qui les rend inadaptées aux environnements dynamiques nécessitant la résolution des problèmes de visibilité en temps réel. Avec l'émergence de jeux et d'applications de simulation interactifs, notamment en trois dimensions (3D), le besoin se fait sentir pour des méthodes de simulations temps réel offrant une estimation de la visibilité, c'est-à-dire des occultations, rapide, de haute qualité et réaliste. 3. Résumé de l'invention. L'invention a pour but de pallier au moins un de ces inconvénients de l'art antérieur. Plus particulièrement, l'invention a notamment pour objectif d'optimiser les temps de calcul et/ou la puissance de calcul nécessaire pour estimer en temps réel l'occultation dans un environnement virtuel pour en effectuer un rendu réaliste. L'invention concerne un procédé d'estimation de l'occultation dans un environnement virtuel comprenant au moins deux objets, l'environnement virtuel étant observé depuis un point de vue, le procédé comprenant les étapes de : - estimation d'une deuxième information représentative de la distance séparant un deuxième fragment d'un deuxième objet du point de vue selon une direction d'observation ; - comparaison de la deuxième information à une première information représentative de la distance séparant un premier fragment d'un premier objet du point de vue selon ladite direction d'observation et stockée dans une première mémoire tampon : - si la deuxième information est inférieure à la première information, estimation d'une troisième information représentative d'attributs associés au deuxième fragment, stockage de la deuxième information dans une deuxième mémoire tampon et stockage de la troisième information dans une troisième mémoire tampon, - si la deuxième information est supérieure à la première information, stockage de la première information dans la deuxième mémoire tampon. Selon une caractéristique particulière, les première, deuxième et troisième mémoires tampons sont des mémoires de type mémoire tampon de rendu d'un processeur graphique. Avantageusement, l'information ayant la valeur la plus petite parmi la première information et la deuxième information est stockée dans une quatrième mémoire tampon. Selon une caractéristique spécifique, la troisième information est stockée temporairement dans la deuxième mémoire tampon avant d'être copiée dans la troisième mémoire tampon. De manière avantageuse, la troisième information est stockée temporairement dans la deuxième mémoire tampon avant d'être copiée dans la troisième mémoire tampon. Selon une caractéristique particulière, lorsque la deuxième information est supérieure à la première information, une quatrième information représentative d'attributs associés au premier fragment est stockée dans la troisième mémoire tampon. Selon une autre caractéristique, la quatrième information est stockée temporairement dans la première mémoire tampon avant d'être copiée dans la troisième mémoire tampon. Avantageusement, les étapes d'estimation, de comparaison et de stockage sont réitérées pour chaque deuxième fragment du deuxième objet. Selon une caractéristique spécifique, le procédé comprend une étape de classement des au moins deux objets de l'environnement virtuel en fonction de leur distance respective au point de vue du plus proche du point de vue au plus éloigné du point de vue, le premier objet étant plus proche du point de vue que le deuxième objet. Selon une autre caractéristique, le procédé comprend une étape d'initialisation de la première mémoire tampon avec les informations représentatives de la distance séparant chaque fragment du premier objet du point de vue. 4. Liste des figures. L'invention sera mieux comprise, et d'autres particularités et avantages apparaîtront à la lecture de la description qui va suivre, la description faisant référence aux dessins annexés parmi lesquels : - la figure 1 illustre schématiquement un environnement virtuel tel que vu depuis un point de vue, selon un mode de réalisation particulier de l'invention ; - la figure 2 illustre un arrangement de mémoires tampons pour le rendu de l'environnement virtuel de la figure 1, selon un mode de réalisation particulier de l'invention ; - les figures 3, 4 et 5 illustrent schématiquement la gestion des mémoires tampons de la figure 2 pour le rendu d'objets de l'environnement virtuel de la figure 1, selon un mode de réalisation particulier de l'invention ; - la figure 6 illustre schématiquement un arrangement de mémoires tampons pour le rendu de l'environnement virtuel de la figure 1, selon un autre mode de réalisation particulier de l'invention ; - la figure 7 illustre un dispositif mettant en oeuvre une méthode d'estimation de l'occultation dans l'environnement virtuel de la figure 1, selon un exemple de mise en oeuvre particulier de l'invention ; - les figures 8 et 9 illustrent un procédé d'estimation de l'occultation dans l'environnement virtuel de la figure 1, selon deux exemples de mise en oeuvre particuliers de l'invention. 5. Description détaillée de modes de réalisation de l'invention. La figure 1 illustre un environnement virtuel ou une scène virtuelle (dite aussi scène 3D) 1 tel que vu depuis un point de vue 10, par exemple un spectateur de l'environnement virtuel 1. L'environnement virtuel 1 comprend plusieurs objets virtuels 11, 12, 13 et 14, modélisés selon toute méthode connue de l'homme du métier, par exemple par modélisation polygonale, dans laquelle le modèle est assimilé à un ensemble de polygones chacun défini par la liste des sommets et des arêtes qui le compose, par modélisation par courbe de type NURBS (de l'anglais « Non uniform rational basic spline » ou en français « Spline basique rationnelle non uniforme ») dans laquelle le modèle est défini par un ensemble de courbes créées grâce à des points de contrôle (de l'anglais « control vertices »), par modélisation par subdivision de surfaces... On entend par objet virtuel toute représentation virtuelle (obtenue par modélisation) d'un objet (réel ou fictif) composant un environnement réel (par exemple le sol, une maison ou une façade d'une maison, une voiture, un arbre, c'est-à-dire tout élément composant un environnement tel qu'une pièce d'une maison, une rue, une ville, la campagne, ...) ou imaginaire. Chaque objet 11, 12, 13 et 14 de l'environnement virtuel est caractérisé par une surface le recouvrant, la surface de chaque objet ayant des propriétés de réflectance (correspondant à la proportion de lumière incidente réfléchie par la surface dans une ou plusieurs directions) qui lui sont propres. Avantageusement, la réflectance de la surface d'un objet varie en fonction de la zone de l'objet réfléchissant la lumière (une zone de la surface comprenant un ou plusieurs points de la surface) c'est-à-dire que la réflectance de la surface d'un objet n'est pas constante. Selon une variante, la réflectance de la surface d'un objet est constante en tout point de la surface de l'objet. Selon l'exemple de la figure 1, le spectateur 10 regarde le point P1 110 de la surface de l'objet 11 selon une direction d'observation 100, le point P1 110 correspondant à l'intersection entre la direction d'observation 100 et le premier objet de l'environnement virtuel 1 rencontré par cette direction d'observation ayant pour origine le point de vue 10, à savoir l'objet 11. La partie de l'environnement virtuel 1 vue depuis le point de vue 10 est représentée par un cône de visualisation 101, le cône de visualisation étant composée d'un très grand nombre de directions de visualisation dont la direction de visualisation 100 et la direction de visualisation 102. Le point P3 121 appartenant à la surface de l'objet 12 correspond à la première intersection entre la direction de visualisation 102 et le premier objet rencontré de l'environnement virtuel 1 par cette direction de visualisation 102, à savoir l'objet 12. En prolongeant la direction d'observation 100, on obtient une intersection entre cette direction de visualisation et un deuxième objet virtuel 12, le point d'intersection étant représenté par le point P2 120. La distance séparant le point de vue 10 du point P1 110, appelée profondeur du point P1 par rapport au point de vue 10, est inférieure à la distance séparant le point de vue 10 du point P2 120, appelée profondeur du point P2 par rapport au point de vue. La profondeur de P1 étant inférieure à celle de P2, c'est le point P1 qui est visible par le point de vue, le point P2 étant occulté par P1. Ainsi, les attributs du fragment de surface de l'objet 11 associé au point P1 sont utilisés pour définir le pixel de l'image représentant l'environnement virtuel 1 vu au travers de la direction d'observation 100 depuis le point de vue 10. Le point P3 121 n'étant pas occulté par un point de l'objet 11, le point P3 121 est visible depuis le point de vue et les attributs du fragment de surface de l'objet 12 associé au point P3 sont utilisés pour définir le pixel de l'image représentant l'environnement virtuel 1 vu au travers de la direction d'observation 102 depuis le point de vue 10. Un fragment devient un pixel si le fragment est visible depuis le point de vue. Un fragment correspond avantageusement à un élément de surface associé à un point de l'environnement virtuel 1 de la taille d'un pixel de l'image qui sera rendue pour représenter l'environnement virtuel sur un écran d'affichage. Le fragment est avantageusement défini par un ensemble de données regroupant une ou plusieurs des données suivantes : - la position de rastérisation du fragment, - la profondeur du fragment au point de vue, - des attributs (par exemple la couleur, les coordonnées de texture), - le canal alpha représentatif du caractère translucide du fragment. L'environnement virtuel 1 est avantageusement éclairé par un environnement lumineux comprenant une ou plusieurs sources de lumière (non représentées). La figure 2 illustre un arrangement de mémoires tampons 21, 22, 23 et 24 pour le rendu de l'environnement virtuel 1, selon un exemple de réalisation particulier et non limitatif de l'invention. Les mémoires tampons 21, 22 et 23 sont avantageusement du type tampon de rendu (de l'anglais « Render buffer ») et la mémoire tampon 24 est avantageusement du type tampon de profondeur (de l'anglais « Z-buffer »). Les tampons de rendu et de profondeur possèdent une même structure et diffèrent l'un de l'autre par les données qu'ils peuvent contenir. Un tampon de profondeur comprend avantageusement des informations représentatives de profondeur, une information de profondeur étant associée à chaque pixel du tampon de profondeur. Un tampon de rendu comprend avantageusement des informations représentatives des attributs associés aux pixels, une information d'attributs étant associée à chaque pixel du tampon de rendu. Les attributs d'un pixel correspondent par exemple aux composantes couleurs (par exemple RGB pour « Red, Green, Blue » ou en français « Rouge, vert, bleu ») ou aux composantes couleurs + transparence (c'est-à- dire RGBa). A partir des quatre tampons 21 à 24 sont définies deux cibles de rendu RT1 201 et RT2 201 (de l'anglais « Render Target »). La première cible de rendu RT1 201 comprend le tampon de rendu 21, dit première mémoire tampon, le tampon de rendu 23, dit troisième mémoire tampon, et le tampon de profondeur 24, dit quatrième mémoire tampon. La deuxième cible de rendu RT2 202 comprend le tampon de rendu 22, dit deuxième mémoire tampon, le tampon de rendu 23, dit troisième mémoire tampon, et le tampon de profondeur 24, dit quatrième mémoire tampon. Les première et deuxième cibles de rendu RT1 et RT2 sont utilisées alternativement pour le rendu des objets de l'environnement virtuel. Le processus permettant de rendre les objets composant l'environnement virtuel à partir des cibles de rendu sera décrit plus en détail en regard des figures 3 à 5. De manière avantageuse, la première mémoire tampon 21 et la deuxième mémoire tampon 22 sont utilisées pour stocker des informations de profondeur associées aux fragments des objets virtuels 11 à 14 composant l'environnement virtuel 1 afin de les comparer. La troisième mémoire tampon 23 est utilisée pour stocker les informations représentatives d'attributs associées aux pixels de l'image représentant l'environnement virtuel 1. La quatrième mémoire tampon 24 est utilisée pour stocker les informations de profondeur associées aux pixels de l'image représentant l'environnement virtuel 1. Les première, deuxième, troisième et quatrième mémoires tampons 21 à 24 sont avantageusement définies de manière logique dans la GRAM (de l'anglais « Graphical Random Access Memory » ou en français « Mémoire graphique à accès aléatoire ») associée aux processeurs graphiques (GPUs, de l'anglais « Graphics Processing Units ») d'une carte graphique. Les première, deuxième, troisième et quatrième mémoires tampons 21 à 24 sont avantageusement de taille identique et correspondent à des matrices à deux dimensions définies par m colonnes et n lignes. Chaque mémoire tampon comprend par exemple m x n pixels, m et n étant deux entiers. m et n correspondent avantageusement à la définition de l'image représentant l'environnement virtuel (par exemple 1280 x 720 ou 1920 x 1080). Chaque pixel d'un tampon est défini par ses indices de colonne et de ligne, les pixels de mêmes indices dans les quatre tampons 21 à 24 correspondant à un même pixel de l'image. Selon une variante, le nombre de mémoires tampon est supérieur à 4. Selon cette variante, l'arrangement comprend un seul quatrième tampon de profondeur et un seul troisième tampon de rendu, le nombre de tampons de type tampon de rendu dans lesquels sont stockées des informations de profondeur étant supérieur à 2, par exemple au nombre d'objets compris dans l'environnement virtuel. Selon cette variante, il y a aussi plus que deux cibles de rendu, le nombre de cibles de rendu étant égal aux nombre de tampons du type des premier et deuxième tampons 21 et 22. Les figures 3 à 5 illustrent les différentes étapes permettant d'aboutir au rendu de l'environnement virtuel 1 en utilisant les mémoires tampons 21 à 24, selon un exemple de réalisation particulier et non limitatif de l'invention. La figure 3 illustre la première étape d'un processus permettant de rendre des objets, par exemple les objets 11, 12 et 13 de l'environnement virtuel 1. Lors de cette première étape, un premier objet est rendu, par exemple l'objet 11. L'objet 11 étant le premier objet rendu de la scène, il n'y a aucune occultation à prendre en compte et la totalité de l'objet 11 tel qu'il est vu depuis le point de vue 10 est rendu. Pour ce faire, la première cible de rendu RT1 201 est utilisée. Lors du rendu du premier objet 11, la profondeur de chacun des fragments de l'objet 11 vue depuis le point de vue 10 selon une direction de visualisation (par exemple le fragment associé au point P110 selon la direction de visualisation 100) est stockée dans le premier tampon 21. Ces valeurs de profondeur (c'est-à-dire des premières informations représentatives de la distance séparant le point de vue 10 d'un premier fragment du premier objet, dites premières informations de profondeur) sont représentées par la zone 31 du premier tampon 21. Cette zone 31 correspond au premier objet 11 tel que vue depuis le point de vue 10. Le premier objet 11 correspondant à une sphère, la première zone 31 correspond à un cercle. La profondeur de chacun des fragments de l'objet 11 est également stockée dans le quatrième tampon 24, les valeurs de profondeur étant représentées par la zone 34 qui est équivalente à la zone 31. Lors du rendu du premier objet 11, les attributs associés aux fragments du premier objet 11 vus depuis le point de vue sont stockés dans le troisième tampon. Ces valeurs d'attributs (c'est-à-dire des troisièmes informations représentatives d'attributs associés aux premiers fragments du premier objet 11 vus depuis le point de vue 10) sont représentées par la zone 33 du troisième tampon 23. Les zones 31, 34 et 33 se rapportent chacune à une représentation du premier objet 11 tel que vue depuis le point de vue 10, c'est-à-dire un cercle, dans chacun des premier 21, quatrième 24 et troisième 23 tampons. Lors de cette première étape, la deuxième cible de rendu RT2 202 n'est pas utilisée et la première cible de rendu RT1 201 correspond à la cible de rendu courante. La figure 4 illustre la deuxième étape du processus de rendu des objets 11, 12 et 13 de l'environnement virtuel 1. Cette deuxième étape concerne le rendu du deuxième objet 12 de l'environnement virtuel. La deuxième cible de rendu RT2 202 devient cible de rendu courante à la place de la première cible de rendu RT1. Pour chaque direction de visualisation du cône de visualisation 101, il est estimé s'il existe une intersection entre le deuxième objet 12 et la direction de visualisation concernée. Si tel est le cas, la distance séparant le point de vue 10 du deuxième objet 12 est estimée, cette distance correspondant à la profondeur du fragment considéré du deuxième objet 12, dit deuxième fragment, la profondeur associée au deuxième fragment étant appelée deuxième information de profondeur. Pour chaque fragment du deuxième objet pour lequel la profondeur est estimée, la valeur de profondeur est comparée à la valeur de profondeur stockée dans le premier tampon 21 pour le fragment correspondant (c'est-à-dire pour le premier fragment du premier tampon ayant les mêmes indices m et n que le deuxième fragment considéré). Ainsi, si la deuxième information de profondeur associée au deuxième fragment considéré est supérieure à la première information de profondeur stockée dans le premier tampon 21 pour le fragment du premier tampon 21 correspondant, alors c'est la première information de profondeur qui est stockée dans le deuxième tampon 22. Ce cas de figure correspond au cas des points P1 110 et P2 120 qui correspondent à un même pixel (c'est-à-dire qu'ils appartiennent à une même direction de visualisation 100). Selon ce cas de figure, c'est la première information de profondeur correspondant à la profondeur de P1 qui est stockée dans le deuxième tampon 22. Si la deuxième information de profondeur associée au deuxième fragment considéré est inférieure à la première information de profondeur stockée dans le premier tampon 21 pour le fragment du premier tampon 21 correspondant, alors c'est la deuxième information de profondeur qui est stockée dans le deuxième tampon 22. Ce cas de figure correspond au cas du point P3 121 qui n'est pas occulté par le premier objet 11. L'information de profondeur associée au fragment associé à P3 est comparée à l'information de profondeur stockée dans le premier tampon 21 pour le fragment correspondant. Aucun fragment du premier objet n'étant rencontré par la direction de visualisation 102, l'information de profondeur stockée dans le premier tampon 21 est par exemple une valeur par défaut correspondant par exemple à la profondeur maximale de l'environnement virtuel 1 ou à une valeur prédéfinie telle que le plus grand nombre représentable. Lorsque la profondeur de P3 est comparée à cette valeur par défaut, alors c'est l'information de profondeur associée à P3 qui est stockée dans le deuxième tampon. Une fois toutes les informations de profondeur associées aux deuxièmes fragments du deuxième objet comparées aux pixels/fragments correspondants du premier tampon 21, on obtient dans le deuxième tampon une forme représentative de la forme du deuxième objet 12 (en l'occurrence un rectangle) dont une première partie 42 contient des valeurs de profondeur de deuxièmes fragments (c'est-à-dire les fragments du deuxième objet 12 visibles depuis le point de vue 10) et dont une deuxième partie 41 contient des valeurs de profondeur de premiers fragments (c'est-à-dire les fragments du premier objet 11 occultant des fragments du deuxième objet 12). Les deuxièmes informations de profondeur de la première partie 42 sont reportées dans le quatrième tampon 24 qui fournit un aperçu global de l'environnement virtuel 1, c'est-à-dire qui comprend les informations de profondeurs des fragments des premier et deuxième objets les plus proches du point de vue dans leur globalité. Seuls les attributs des deuxièmes fragments visibles depuis le point de vue 10 (c'est-à-dire les deuxièmes fragments pour lesquels l'information de profondeur est stockée dans la première partie 42 du deuxième tampon 22) sont estimés et stockés dans le troisième tampon 23 dans la zone 43. L'avantage de ne calculer les attributs des deuxièmes fragments qu'après comparaison des profondeurs de ces deuxièmes fragments aux profondeurs stockées dans le premier tampon 21 est que cela permet de ne calculer les attributs des deuxièmes fragments que pour les deuxièmes fragments visibles, ce qui permet de diminuer les calculs nécessaires au rendu des objets de l'environnement virtuel. La figure 5 illustre la troisième étape du processus de rendu des objets 11, 12 et 13 de l'environnement virtuel 1. Cette troisième étape concerne le rendu d'un troisième objet 13 de l'environnement virtuel. La première cible de rendu RT1 201 devient cible de rendu courante à la place de la deuxième cible de rendu RT2. De la même manière qu'à la deuxième étape, il est estimé s'il existe une intersection entre le troisième objet 13 et un ensemble de directions de visualisation 100, 102 comprises dans le cône de visualisation 101. Si tel est le cas, une information de profondeur est estimée et associée à chacun des troisièmes fragments. Puis, chaque information de profondeur est comparée à l'information de profondeur stockée dans le deuxième tampon 22 pour le fragment correspondant (c'est-à-dire pour le pixel du deuxième tampon 22 dont les indices m et n correspondent aux indices du troisième pixel considéré) ainsi qu'à l'information de profondeur stockée dans le premier tampon pour le fragment considéré. Tout comme pour l'étape précédente, la plus petite des ces valeurs de profondeur est stockée dans le premier tampon. On obtient une empreinte dans le premier tampon ayant pour forme la forme du troisième objet 13 dont une partie comprend des valeurs de profondeur 31 associées à des fragments du premier objet 11 (lorsque le premier objet 11 occulte à la fois le deuxième objet 12 et le troisième objet 13), des valeurs de profondeur 52 associées au deuxième objet (lorsque le deuxième objet 12 n'est pas occulté par le premier objet 11 mais qu'il occulte le troisième objet 13) et enfin des valeurs de profondeur 51 associées à des fragments du troisième objet 13 (les fragments du premier objet non occultés par le premier objet 11 ni par le deuxième objet 12). Les informations de profondeur 51 associées aux troisièmes fragments du troisième objet 13 visibles depuis le point de vue 10 sont copiées dans le quatrième tampon 24. Le quatrième tampon 24 comprend les premières informations 34 de profondeurs associées aux premiers fragments du premier objet 11 visibles depuis le point de vue 10, les deuxièmes informations de profondeur 44 associées aux deuxièmes fragments du deuxième objet 12 visibles depuis le point de vue 10 et les informations de profondeur associées aux troisièmes fragments du troisième objet 13 visibles depuis le point de vue 10. Le quatrième tampon 24 contient une image des informations de profondeur de l'ensemble de l'environnement virtuel 1 vue depuis le point de vue 10 alors que les premier 21 et deuxième 22 tampons ne contiennent qu'une vision liée à un objet et aux occultations associées, c'est-à-dire que les premier et deuxième tampons comprennent une empreinte d'un objet avec les informations d'occultation associées (quels fragments de l'objet sont visibles et quels fragments sont occultés). Le troisième tampon 23 est mis à jour avec les informations représentatives des attributs pour les fragments du troisième objet 13 visibles depuis le point de vue 10, c'est-à-dire pour les fragments du troisième objet dont les informations de profondeur 51 sont stockées dans le premier tampon. Comparer la profondeur des fragments du troisième objet avant d'estimer les attributs associés offre l'avantage de limiter les calculs nécessaires au rendu de l'image en ne faisant les calculs que pour les fragments visibles plutôt que pour l'ensemble des fragments. L'utilisation du quatrième buffer 24 offre l'avantage d'avoir une vision consistante de l'environnement virtuel 1 en stockant les informations de profondeur pour tous les objets et permet d'assurer la compatibilité avec les processus de rendu n'utilisant qu'un tampon de profondeur et un tampon de rendu. Selon une variante, le troisième objet est rendu dans un tampon de type tampon de rendu du même type que le premier tampon 21 ou le deuxième tampon 22 mais différent du premier tampon 21 et du deuxième tampon 22. Selon cette variante, le troisième objet est rendu dans une troisième cible de rendu (non représentée) formé du tampon supplémentaire de même type que les premier et deuxième tampons, du troisième tampon 23 et du quatrième tampon 24. Cette variante a l'avantage de permettre de rendre plusieurs objets en parallèle. En effet, comme il n'est pas possible de lire dans un tampon dans lequel des données sont en cours d'écriture, il est possible selon cette variante d'écrire des données (par exemple des informations de profondeur) simultanément dans deux tampons (par exemple le tampon supplémentaire et le deuxième tampon 22), la comparaison des profondeurs se faisant entre le tampon supplémentaire et le tampon dans lequel aucune écriture n'est en cours (le premier tampon 21 selon l'exemple). Selon cette variante, il y a trois cibles de rendu, la troisième cible de rendu comprenant le tampon supplémentaire (de même type que les premier et deuxième tampons 21 et 22), le troisième tampon 21 et le quatrième tampon 24. Selon cette variante, le premier objet est par exemple rendu via la première cible de rendu. Une fois les écritures achevées dans le premier tampon 21, c'est-à-dire une fois le premier objet 11 rendu, le deuxième objet 12 et le troisième objet 13 sont rendus simultanément dans via respectivement la deuxième cible de rendu RT2 et la troisième cible de rendu. Les informations de profondeur du deuxième objet 12 sont comparées aux informations contenues dans le premier tampon 21 avant écriture dans le deuxième tampon 22 et les informations de profondeur du troisième objet 13 sont comparées elles aussi aux informations contenues dans le premier tampon 21 avant écriture dans le tampon supplémentaire. Le troisième objet 13 n'est alors pas comparé au deuxième objet avant son rendu dans le tampon supplémentaire. La prise en compte des occultations liées au premier objet pour le rendu du troisième objet seront prises en compte lors du rendu dans le troisième tampon en vérifiant les occultations (c'est-à-dire les informations de profondeur) qui sont par défaut toujours stockées dans le quatrième tampon qui correspond au z-buffer stockant toutes les infos de profondeur de chacun des objets, seuls les informations de profondeur les plus petites étant stockées. La cohérence au niveau des occultations sur l'ensemble de la scène est ainsi assurée. Le rendu simultané de plusieurs objets obtenus par cette variante offre l'avantage d'accélérer encore les traitements. Selon une autre variante, il y a autant de cibles de rendu que d'objets existant dans l'environnement virtuel, ce qui revient à dire qu'il y a autant de tampons du type des premier et deuxième tampons 21 et 22 qu'il y a d'objets existant dans l'environnement virtuel. Selon ces variante, la cohérence du rendu de l'environnement virtuel, c'est-à-dire la prise en compte de toutes les occultations existantes dans l'environnement virtuel est assurée par le quatrième tampon qui comprend les informations de profondeurs cohérentes pour l'ensemble des objets de l'environnement virtuel. La figure 6 illustre un arrangement de mémoires tampons 21, 22, 23 et 24 pour le rendu de l'environnement virtuel 1, selon un autre exemple de réalisation particulier et non limitatif de l'invention. Les mémoires tampons 61, 62, 63 et 64 sont similaires aux mémoires 21, 22, 23 et 24 décrites en regard de la figure 2 dans le sens où les tampons 61, 62 et 63 sont du type tampon de rendu et le tampon 64 est du type tampon de profondeur. Le troisième tampon 63 est similaire au troisième tampon 23 de la figure 2 dans le sens où le troisième tampon 63 est également utilisé pour stocker des informations représentatives d'attributs aux pixels de l'image représentant l'environnement virtuel 1. Le quatrième tampon 64 est similaire au quatrième tampon 24 de la figure 2 dans le sens où le quatrième tampon 64 est également utilisé pour stocker les informations de profondeur associées aux pixels de l'image représentant l'environnement virtuel 1. Une différence entre les premier et deuxième tampons 61 et 62 et les premier et deuxième tampons 21 et 22 de la figure 2 est que les premier et deuxième tampons 61 et 62 sont utilisées pour stocker des informations représentatives des attributs des objets de l'environnement virtuel, par exemple RGBa, le canal alpha a étant utilisé pour stocker l'information de profondeur associée à ces fragments. L'arrangement de mémoires tampons de la figure 6 comprend deux cibles de rendu, à savoir une première cible de rendu RT1 601 et une deuxième cible de rendu RT2 602. La première cible de rendu RT1 comprend le premier tampon 61 et le quatrième tampon 64. La deuxième cible de rendu RT2 comprend le deuxième tampon 62 et le quatrième tampon 64. Dans une première étape, la première cible de rendu RT1 est la cible courante par exemple et le premier objet 11 est rendu. La profondeur de chacun des fragments de l'objet 11 vue depuis le point de vue 10 selon une direction de visualisation est stockée dans le premier tampon 61 ainsi que les attributs associés à ces fragments. Dans une deuxième étape, la deuxième cible de rendu RT2 devient la cible courante à la place de la première cible de rendu RT1. Au cours de cette deuxième étape, un deuxième objet 12 est rendu. Pour ce faire, la profondeur de chacun des fragments du deuxième objet est estimée et comparée à l'information stockée dans le premier tampon 61 pour le fragment correspondant (c'est-à-dire ayant les mêmes indices m et n). Si la deuxième information de profondeur associée au deuxième fragment a une valeur supérieure à celle de la première information stockée dans le premier tampon 61, alors seule la deuxième information de profondeur est stockée dans le deuxième tampon 62, par exemple dans le canal alpha, sans estimer les attributs associés au deuxième fragment. Par contre, si la deuxième information de profondeur associée au deuxième fragment a une valeur inférieure à celle de la première information stockée dans le premier tampon 61, alors la deuxième information de profondeur est stockée dans le deuxième tampon 62 et les attributs associés au deuxième fragment sont calculés et stockés dans le deuxième tampon, par exemple dans le canal RGB, le profondeur étant stockée dans le canal alpha associé. Ces étapes sont réitérées pour tous les objets de l'environnement virtuel en alternant les cibles de rendu comme cible courante. Puis dans une dernière étape, les contenus des premier et deuxième tampons 61 et 62 sont comparés avant de mettre à jour le troisième tampon (le tampon de rendu servant au rendu de l'image) 63. Pour mettre à jour le troisième tampon 63, les informations de profondeurs contenues dans les pixels correspondant de chacun des premier et deuxième tampons sont comparées 2 à 2. L'information représentative des attributs associée au fragment ayant la valeur de profondeur la plus petite (pixel du premier tampon 61 ou pixel correspondant du deuxième tampon 62) est copiée dans le troisième tampon. Selon ce mode de réalisation, l'accès au troisième tampon ne se fait qu'une seule fois pour un pixel donné ce qui permet de limiter les besoins en bande passante. Selon ce mode de réalisation, lorsque la deuxième information de profondeur associée au deuxième fragment (stockée dans le deuxième tampon) est inférieure à la première information de profondeur associée au premier fragment (stockée dans le premier tampon), c'est la troisième information représentative des attributs associés au deuxième fragment qui est copiée dans le troisième tampon. Sinon, lorsque la deuxième information de profondeur associée au deuxième fragment (stockée dans le deuxième tampon) est supérieure à la première information de profondeur associée au premier fragment (stockée dans le premier tampon), c'est la quatrième information représentative des attributs associés au premier fragment qui est copiée dans le troisième tampon. Selon ce mode de réalisation, la troisième information et/ou la quatrième information sont stockées temporairement dans respectivement le deuxième tampon 62 et le premier tampon 61 avant d'être copiée dans le troisième tampon 63. La figure 7 illustre schématiquement un exemple de réalisation matérielle d'un dispositif 7 adapté à l'estimation de l'occultation dans un environnement virtuel 1 et à la création de signaux d'affichage d'une ou plusieurs images, selon un exemple de mise en oeuvre particulier et non limitatif de l'invention. Le dispositif 7 correspondant par exemple à un ordinateur personnel PC, à un ordinateur portable (de l'anglais « laptop ») ou à une console de jeux. Le dispositif 7 comprend les éléments suivants, reliés entre eux par un bus 75 d'adresses et de données qui transporte également un signal d'horloge : - un microprocesseur 71 (ou CPU) ; - une carte graphique 72 comprenant : - plusieurs processeurs de traitement graphique 720 (ou GPUs) ; - une mémoire vive de type GRAM (de l'anglais « Graphical Random Access Memory ») 721 ; - une mémoire non volatile de type ROM (de l'anglais « Read Only Memory ») 76 ; - une mémoire vive ou RAM (de l'anglais « Random Access Memory ») 77 ; 35 - un ou plusieurs dispositifs I/O (de l'anglais « Input/Output » ou en français « Entrée/Sortie ») 74, tels que par exemple un clavier, une souris, une webcam ; et - une alimentation 78. Le dispositif 7 comprend également un dispositif d'affichage 73 de type écran d'affichage relié directement à la carte graphique 72 pour afficher notamment le rendu d'images de synthèse calculées et composées dans la carte graphique, par exemple en temps réel. L'utilisation d'un bus dédié pour relier le dispositif d'affichage 73 à la carte graphique 72 offre l'avantage d'avoir des débits de transmission de données beaucoup plus important et ainsi de diminuer le temps de latence pour l'affichage d'images composées par la carte graphique. Selon une variante, un appareil pour afficher est externe au dispositif 6 et est relié au dispositif 7 par un câble transmettant les signaux d'affichage. Le dispositif 7, par exemple la carte graphique 72, comprend un moyen de transmission ou connecteur (non représenté sur la figure 7) adapté à transmettre un signal d'affichage à un moyen d'affichage externe tel que par exemple un écran LCD ou plasma, un vidéoprojecteur. On observe que le mot « registre » utilisé dans la description des mémoires 72, 76 et 77 désigne dans chacune des mémoires mentionnées, aussi bien une zone de mémoire de faible capacité (quelques données binaires) qu'une zone mémoire de grande capacité (permettant de stocker un programme entier ou tout ou partie des données représentatives de données calculées ou à afficher). A la mise sous tension, le microprocesseur 71 charge et exécute les instructions du programme contenu dans la RAM 77. La mémoire vive 77 comprend notamment : - dans un registre 770, le programme de fonctionnement du microprocesseur 71 chargé à la mise sous tension du dispositif 7, - des paramètres 771 représentatifs de l'environnement virtuel 1 (par exemple paramètres de modélisation des objets de l'environnement virtuel 1, paramètres d'éclairage de l'environnement virtuel 1). Les algorithmes mettant en oeuvre les étapes du procédé propres à l'invention et décrits ci-après sont stockés dans la mémoire GRAM 721 de la carte graphique 72 associée au dispositif 7 mettant en oeuvre ces étapes. A la mise sous tension et une fois les paramètres 770 représentatifs du milieu chargés en RAM 77, les processeurs graphiques 720 de la carte graphique 72 charge ces paramètres en GRAM 721 et exécute les instructions de ces algorithmes sous la forme de microprogrammes du type « shader » utilisant le langage HLSL (de l'anglais « High Level Shader Language » ou en français « Langage de programmation « shader » de haut niveau »), le langage GLSL (de l'anglais « OpenGL Shading language » ou en français « Langage de shaders OpenGL ») par exemple. La mémoire vive GRAM 721 comprend notamment : - dans un registre 7210, les paramètres représentatifs de 10 l'environnement virtuel 1 ; - des premières informations 7211 représentatives de la profondeur de fragments visibles d'un ou plusieurs objets de l'environnement virtuel 1 visibles depuis un point de vue 10 ; - des deuxièmes informations 7212 représentatives de la 15 profondeur de fragments visibles d'un ou plusieurs objets de l'environnement virtuel 1 visibles depuis le point de vue 10 ; - des troisièmes informations 7213 représentatives des attributs des pixels de l'image représentative de l'environnement virtuel 1 tel que vu depuis le point de vue 10 ; et 20 - des quatrièmes informations 7214 représentatives de la profondeur des pixels de l'image représentative de l'environnement virtuel 1 tel que vu depuis le point de vue 10. Selon une variante, une partie de la RAM 77 est allouée par le CPU 71 pour stocker les valeurs 7211 à 7214 si l'espace mémoire disponible 25 en GRAM 721 est insuffisant. Cette variante entraîne cependant des temps de latence plus important dans la composition d'une image comprenant une représentation de l'environnement 1 composé à partir des microprogrammes contenus dans les GPUs puisque les données doivent être transmises de la carte graphique à la mémoire vive 77 en passant par le bus 75 dont les 30 capacités de transmission sont généralement inférieures à celles disponibles dans la carte graphique pour faire passer les données des GPUs à la GRAM et vice-versa. Selon une autre variante, l'alimentation 78 est externe au dispositif 4. 35 De manière avantageuse, les tampons comprenant les premières informations 7211 et les deuxièmes informations 7212 sont définis différemment de manière logique. L'allocation de l'espace mémoire de la GRAM utilisé par les mémoires tampons 21 à 24 est réalisée par appel au pilote du ou des GPUs par exemple par l'intermédiaire d'une API (de l'anglais « Application Program Interface » ou en français « bb »). La figure 8 illustre un procédé d'estimation de l'occultation dans un environnement virtuel 1 mis en oeuvre dans un dispositif 7, selon un premier exemple de mise en oeuvre non limitatif particulièrement avantageux de l'invention. Au cours d'une étape d'initialisation 80, les différents paramètres du dispositif 7 sont mis à jour. En particulier, les paramètres représentatifs de l'environnement virtuel 1 sont initialisés d'une manière quelconque. Ensuite, au cours d'une étape 81, une deuxième information représentative de la distance séparant un deuxième fragment 120, 121 d'un deuxième objet 12 d'un point de vue 10 selon une direction d'observation 100, 102 est estimée. La distance séparant le deuxième fragment du point de vue 10 correspond à la profondeur du deuxième fragment et est estimée par exemple par projection du deuxième objet dans l'espace caméra ou par estimation d'une distance euclidienne. Puis, au cours d'une étape 82, la deuxième information estimée au cours de l'étape 81 est comparée à une première information représentative d'une distance séparant un premier fragment 110 appartenant à un premier objet 11 du point de vue 10 selon la direction de visualisation 100. Cette première information est avantageusement stockée dans une première mémoire tampon 21, 61. Enfin, au cours d'une étape 83, une deuxième mémoire tampon 22 est mise à jour en fonction du résultat de la comparaison réalisée à l'étape 82. Si la valeur de profondeur correspondant à la deuxième information estimée à l'étape 81 est inférieure à la valeur de profondeur correspondant à la première information, alors une troisième information représentative des attributs associés au deuxième fragment du deuxième objet 12 pour lequel la deuxième information de profondeur a été estimée est déterminée. La deuxième information est stockée dans la deuxième mémoire tampon 22 et la troisième information est stockée dans une troisième mémoire tampon 23 qui comprend avantageusement les attributs des pixels de l'image représentant l'environnement virtuel 1 tel que vu depuis le point de vue 10. Si la valeur de profondeur correspondant à la deuxième information estimée à l'étape 81 est supérieure à la valeur de profondeur correspondant à la première information, alors c'est la première information qui est stockée dans la deuxième mémoire tampon 22, l'estimation des attributs associés au deuxième fragment n'étant pas réalisée puisque le deuxième fragment n'est pas visible depuis le point de vue 10, car occulté par un premier fragment du premier objet. Selon une variante avantageuse, l'information ayant la plus petite valeur parmi la première information et la deuxième information est enregistrée dans une quatrième mémoire tampon, avantageusement de type tampon de profondeur De manière avantageuse, la première mémoire tampon 21, la deuxième mémoire tampon 22 et la troisième mémoire tampon 23 sont du type tampon de rendu. Les étapes 81, 82 et 83 sont avantageusement réitérées pour chaque deuxième fragment du deuxième objet 12, c'est-à-dire selon plusieurs directions de visualisations. Les étapes 81, 82 et 83 sont avantageusement réitérées jusqu'à ce que tous les objets de l'environnement virtuel 1 aient été pris en compte. Selon une variante, les étapes 81, 82 et 83 sont réitérées lorsque le point de vue change. La figure 9 illustre un procédé d'estimation de l'occultation dans un environnement virtuel 1 mis en oeuvre dans un dispositif 7, selon un deuxième exemple de mise en oeuvre non limitatif de l'invention. Au cours d'une étape d'initialisation 90, les différents paramètres du dispositif 7 sont mis à jour. En particulier, les paramètres représentatifs de l'environnement virtuel 1 sont initialisés d'une manière quelconque. Ensuite, au cours d'une étape 91, les objets 11 à 14 de l'environnement virtuel sont classés en fonction de leur distance respective au point de vue, du plus proche du point de vue au plus éloigné du point de vue. Puis, au cours d'une étape 92, la première mémoire tampon 21, 61 est initialisée avec les informations représentatives de la distance séparant chaque premier du premier objet 11, le premier objet étant l'objet classé comme étant le plus proche du point de vue. Selon une variante, l'étape de classement est facultative et la première mémoire tampon est initialisée avec les informations de profondeur d'un objet choisi au hasard parmi les objets composants l'environnement virtuel. Pour les fragments de la première mémoire tampon auxquels ne correspondent pas de premier fragment du premier objet, c'est-à-dire pour les fragments de la première mémoire tampon pour lesquels il n'y a pas d'information de profondeur, une valeur par défaut est renseignée, par exemple la valeur profondeur maximale de l'environnement virtuel 1 ou une valeur prédéfinie. Puis, au cours d'une étape 81 identique à celle décrite en regard de la figure 8, une deuxième information représentative de la profondeur d'un deuxième fragment d'un deuxième objet 12 est estimée. Puis, au cours d'une étape 82 identique à celle décrite en regard de la figure 8, la deuxième information de profondeur estimée est comparée à la première information de profondeur stockée dans la première information de profondeur, que cette première information de profondeur corresponde à une profondeur d'un premier fragment ou à une valeur par défaut. Puis, au cours d'une étape 83 identique à celle décrite en regard de la figure 8, la deuxième mémoire tampon 22, 62 et la troisième mémoire tampon 23, 63 sont mises à jour en fonction du résultat de comparaison. Bien entendu, l'invention ne se limite pas aux modes de réalisation décrits précédemment. En particulier, l'invention n'est pas limitée à un procédé d'estimation de l'occultation dans un environnement virtuel mais s'étend également à tout dispositif mettant en oeuvre ce procédé et notamment tous les dispositifs comprenant au moins un GPU. La mise en oeuvre des calculs nécessaires à l'estimation de l'occultation n'est pas non plus limitée à une mise en oeuvre dans des microprogrammes de type shader mais s'étend également à une mise en oeuvre dans tout type de programme, par exemple des programmes exécutables par un microprocesseur de type CPU. Le nombre d'objets composant l'environnement virtuel n'est pas limité à 2, 3 ou 4 mais s'étend à tout nombre d'objets. L'utilisation de l'invention n'est pas limitée à une utilisation temps réel mais s'étend également à toute autre utilisation, par exemple pour les traitements dits de postproduction en studio d'enregistrement pour le rendu d'images de synthèse par exemple. La mise en oeuvre de l'invention en postproduction offre l'avantage de fournir un excellent rendu visuel en termes de réalisme notamment tout en diminuant les temps de calcul nécessaires. L'invention concerne également un procédé de composition d'une image vidéo, en deux dimensions ou en trois dimensions, pour lequel les occultations selon une ou plusieurs directions d'observation son calculées et l'information représentative des attributs des fragments qui en découle est utilisée pour l'affichage des pixels de l'image, chaque pixel correspondant à une direction d'observation. L'occultation déterminer pour affichage par chacun des pixels de l'image est recalculée pour s'adapter aux différents points de vue du spectateur. La présente invention peut être utilisée dans des applications de jeux vidéo par exemple, que ce soit par des programmes exécutables dans un ordinateur de type PC ou portable ou dans des consoles de jeux spécialisées produisant et affichant des images en temps réel. Le dispositif 7 décrit en regard de la figure 7 est avantageusement doté de moyens d'interactions tels que clavier et/ou manette de jeux, d'autres modes d'introduction de commandes telle que par exemple la reconnaissance vocale étant également possibles. REVENDICATIONS1. Procédé d'estimation de l'occultation dans un environnement virtuel (1) comprenant au moins deux objets (11, 12), l'environnement virtuel (1) étant observé depuis un point de vue (10), caractérisé en ce que ledit procédé comprend les étapes suivantes : - estimation (81) d'une deuxième information représentative de la distance séparant un deuxième fragment d'un deuxième objet (12) dudit point de vue (10) selon une direction d'observation (100) ; - comparaison (82) de ladite deuxième information à une première information représentative de la distance séparant un premier fragment d'un premier objet (11) dudit point de vue (10) selon ladite direction d'observation (100) et stockée dans une première mémoire tampon (21, 61) : - si la deuxième information est inférieure à la première information, estimation d'une troisième information représentative d'attributs associés au deuxième fragment, stockage (83) de la deuxième information dans une deuxième mémoire tampon (22, 62) et stockage (83) de la troisième information dans une troisième mémoire tampon (23, 63), - si la deuxième information est supérieure à la première information, stockage (83) de la première information dans la deuxième mémoire tampon (22, 62). 2. Procédé selon la revendication 1, caractérisé en ce que les première, deuxième et troisième mémoires tampons (21, 22, 23 ; 61, 62, 63) sont des mémoires de type mémoire tampon de rendu d'un processeur graphique. 3. Procédé selon l'une des revendications 1 à 2, caractérisé en ce que l'information ayant la valeur la plus petite parmi la première information et la deuxième information est stockée dans une quatrième mémoire tampon (24, 64). 4. Procédé selon l'une des revendications 1 à 3, caractérisé en ce que la troisième information est stockée temporairement dans la deuxième mémoiretampon (22, 62) avant d'être copiée dans la troisième mémoire tampon (23, 63). 5. Procédé selon l'une des revendications précédentes, caractérisé en ce que lorsque la deuxième information est supérieure à la première information, une quatrième information représentative d'attributs associés au premier fragment est stockée dans la troisième mémoire tampon (23, 63). 6. Procédé selon la revendication 5, caractérisé en ce que la quatrième 10 information est stockée temporairement dans la première mémoire tampon (21, 61) avant d'être copiée dans la troisième mémoire tampon (23, 63). 7. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que les étapes d'estimation (81), de comparaison (82) et de stockage (83) sont 15 réitérées pour chaque deuxième fragment du deuxième objet (12). 8. Procédé selon l'une des revendications 1 à 7, caractérisé en ce qu'il comprend une étape de classement (91) des au moins deux objets (11, 12) dudit environnement virtuel (1) en fonction de leur distance respective au 20 point de vue (10) du plus proche du point de vue au plus éloigné du point de vue, le premier objet (11) étant plus proche du point de vue (10) que le deuxième objet (12). 9. Procédé selon l'une des revendications 1 à 8, caractérisé en ce qu'il 25 comprend une étape d'initialisation (92) de la première mémoire tampon (21, 61) avec les informations représentatives de la distance séparant chaque fragment du premier objet (11) du point de vue (10). 30