[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

FR2994500A1 - METHOD OF OPTIMIZING THE EXECUTION OF A GRAPHIC PIPELINE - Google Patents

METHOD OF OPTIMIZING THE EXECUTION OF A GRAPHIC PIPELINE Download PDF

Info

Publication number
FR2994500A1
FR2994500A1 FR1257764A FR1257764A FR2994500A1 FR 2994500 A1 FR2994500 A1 FR 2994500A1 FR 1257764 A FR1257764 A FR 1257764A FR 1257764 A FR1257764 A FR 1257764A FR 2994500 A1 FR2994500 A1 FR 2994500A1
Authority
FR
France
Prior art keywords
polygons
image
rasterization
depth
tile
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1257764A
Other languages
French (fr)
Other versions
FR2994500B1 (en
Inventor
Andra Doran
Mathias Paulin
Olivier Gourmel
Abilio Machado
Marc Germain
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
AKKA Ingenierie Produit SAS
Original Assignee
Real Fusio France SAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Real Fusio France SAS filed Critical Real Fusio France SAS
Priority to FR1257764A priority Critical patent/FR2994500B1/en
Priority to PCT/FR2013/051780 priority patent/WO2014023887A1/en
Publication of FR2994500A1 publication Critical patent/FR2994500A1/en
Application granted granted Critical
Publication of FR2994500B1 publication Critical patent/FR2994500B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)

Abstract

La présente invention a pour objet un procédé de rendu d'images en temps-réel à partir d'une scène virtuelle en trois dimensions comprenant un ensemble d'objets, comprenant : - une étape de préparation (S1) d'au moins une partie des objets de la scène sous forme d'un premier ensemble de polygones ; - une première étape de rastérisation (S2) du premier ensemble de polygones à une première résolution inférieure à la résolution finale de l'image de façon à obtenir un premier tampon de profondeur ; des informations étant collectées lors de la première étape de rastérisation correspondant aux identifiants des polygones visibles du premier ensemble de polygones, c'est-à-dire aux polygones définissant au moins un pixel du premier tampon de profondeur, de façon à obtenir un deuxième tampon d'identifiant et de définir un second ensemble de polygones parmi le premier ensemble de polygones ; et - une seconde étape de rastérisation (S4) du second ensemble de polygones à la résolution finale de l'image.The subject of the present invention is a method for rendering images in real time from a three-dimensional virtual scene comprising a set of objects, comprising: a preparation step (S1) of at least a part objects in the scene as a first set of polygons; a first rasterization step (S2) of the first set of polygons at a first resolution less than the final resolution of the image so as to obtain a first depth buffer; information being collected during the first rasterization step corresponding to the identifiers of the visible polygons of the first set of polygons, that is to say to the polygons defining at least one pixel of the first depth buffer, so as to obtain a second buffer identifying and defining a second set of polygons among the first set of polygons; and - a second rasterization step (S4) of the second set of polygons at the final resolution of the image.

Description

La présente invention a pour objet un procédé de rendu d'images en temps-réel à partir d'une scène virtuelle en trois dimensions comprenant un ensemble d'objets, ainsi qu'un système mettant en oeuvre un tel procédé. Plus particulièrement, la présente invention concerne un procédé 5 de rendu utilisant une étape de rastérisation. Dans la plupart des équipements informatiques existants, le rendu en temps réel est au moins partiellement effectué par des moyens d'accélération du calcul graphique, comme des processeurs graphiques GPU, qui permettent le traitement en parallèle de certaines opérations, en particulier 10 les opérations de rastérisation. Cependant, certains équipements comme les ordinateurs portables ou les téléphones portables comprennent des moyens d'accélération du calcul graphique peu perfectionnés, ce qui induit une lenteur d'utilisation et conduit à limiter l'utilisation du rendu en temps réel. 15 Il est pourtant souhaitable d'utiliser un tel type de rendu dans certaines utilisations nomades nécessitant une mobilité de l'utilisateur pour lesquelles des équipements portables sont nécessaires. Pour ce type d'utilisation nomade, l'équipement doit permettre d'explorer efficacement des scènes dynamiques et d'assurer une haute qualité 20 d'affichage des scènes, avec un rendu d'objet immobile proche de la réalité afin de permettre des manipulations virtuelles des objets. Plusieurs solutions ont déjà été proposées pour accélérer le traitement du rendu. Notamment, [Seiler et al. 2008, Larrabee : a many-core x86 25 architecture for visual computing. ACM Trans. Graph. 27, 3 (Aug.), 18 :118 :15] a présenté une architecture adaptée aux programmes de rastérisation. Cependant, l'utilisation de cette architecture spécifique implique des coûts de production importants et une portabilité limitée. Plus récemment, une approche inverse consistant à adapter le 30 pipeline graphique à l'architecture des ordinateurs existants a été adoptée, comme dans [Liu et al. 2010, Freepipe : a programmable parallel rendering architecture for efficient multi-fragment effects. In proceedings of the 2010 ACM SIGGRAPH symposium on Interactive 3D Graphics and game, ACM, New York, NY, USA, 13D'10, 75-82] et [Laine et Karas 2011, T. 2011. High- 35 performance software rasterization on gpus. In Proceedings of the ACM SIGGRAPH Symposium on High Performance Graphics, ACM, New York, NY, USA, HPG '11, 79-88]. Ces deux documents présentent une plateforme de programmation et de calcul parallèle connue sous le nom de CUDATM basée sur les 5 processeurs graphiques actuels. [Peng et Cao 2012, A GPU-based Approach for Massive Mode! Rendering with Frame-to-Frame Coherence. Computer Graphics Forum 31, 2, 393-402] introduisent une approche de CPU/GPU hybride basée sur l'échange minimaliste de données entre le processeur central CPU et le processeur 10 graphique GPU, en utilisant la cohérence des trames successives sur un processeur graphique GPU haut de gamme. Néanmoins, ces processeurs graphiques GPU haut de gamme ne sont pas présents dans la majorité des équipements mobiles, ce qui limite une possible utilisation de cette technique dans la plupart des équipements 15 mobiles. La société EA Digital Illusions CE (CE) [Andersson 2009, Parallel graphics in frostbite - Current &Future. Course Notes SIGGRAPH 2009] a créé un moteur de jeu nommée « Frostbite Engine » basé sur un pipeline hybride pour leur multi-plateforme, en particulier pour la console de jeux PlayStation e. 20 Cependant, ce pipeline graphique utilise pour une étape de calcul de masquage, des géométries supplémentaires préprogrammées afin de calculer efficacement les objets masqués, ce qui implique la mise en oeuvre d'un traitement spécifique pour chaque nouvelle scène. La présente invention a pour but de résoudre tout ou partie des 25 inconvénients mentionnés ci-dessus en proposant un pipeline graphique hybride qui puisse exploiter efficacement les processeurs disponibles sur un ordinateur actuel, à savoir le processeur graphique dit GPU et le processeur central dit CPU de manière à permettre un rendu en temps réel de scènes complexes, par exemple dans des utilisations nomades, même sur des 30 équipements bas de gamme. A cet effet, la présente invention concerne un procédé de rendu d'images en temps-réel à partir d'une scène virtuelle en trois dimensions comprenant un ensemble d'objets, comportant : - une étape de préparation d'au moins une partie des objets de la 35 scène sous forme d'un premier ensemble de polygones ; - une première étape de rastérisation du premier ensemble de polygones à une première résolution inférieure à une seconde résolution finale des images de façon à obtenir un tampon de profondeur ; des informations étant collectées lors de la première étape de rastérisation correspondant aux identifiants des polygones visibles du premier ensemble de polygones, c'est-à-dire aux polygones à l'origine d'au moins un fragment du premier tampon de profondeur, de façon à définir un second ensemble de polygones parmi le premier ensemble de polygones ; et - une seconde étape de rastérisation du second ensemble de 10 polygones à la seconde résolution finale des images. Cet agencement permet de réaliser les calculs sur un ensemble de polygones minimisé et suffisant pour réaliser un rendu de qualité, ce qui optimise les ressources machine, notamment en équilibrant les charges de traitement de données entre le processeur central CPU et le processeur 15 graphique GPU selon la spécialisation de chaque processeur. Par ailleurs, la performance d'un procédé de rendu est d'autant plus importante qu'il permet de diminuer la quantité de données de calcul et donc d'opérations à faire exécuter par le processeur graphique GPU. Selon un aspect de l'invention, le procédé comprend une étape de 20 calcul de masquage destinée à déterminer les objets visibles en fonction de la visibilité d'un volume englobant l'objet. Selon un aspect de l'invention, l'état visible ou invisible d'un objet est déterminé pour une image donnée sur la base du rendu d'une image précédente. 25 Ces dispositions permettent de limiter les traitements à réaliser lors de la première étape de rastérisation en réalisant un test préalable simple sur les boîtes englobantes des objets, notamment en maintenant une liste ou un tampon d'objets visibles et d'objets invisibles, et en réalisant, pour les objets invisibles, un test en comparant un volume englobant l'objet, et en particulier 30 une boîte englobante orientée, par rapport au tampon de profondeur établi pour l'image I sur la base des objets visibles. Selon un aspect de l'invention, l'étape de préparation comprend une étape de division de l'image en tuiles, un sous ensemble de polygones du premier ensemble étant défini correspondant aux polygones susceptibles d'être 35 visibles dans cette tuile.The present invention relates to a real-time image rendering method from a three-dimensional virtual scene comprising a set of objects, as well as a system implementing such a method. More particularly, the present invention relates to a rendering method using a rasterization step. In most existing computer equipment, real-time rendering is at least partially performed by graphical computing acceleration means, such as GPU graphics processors, which allow parallel processing of certain operations, particularly rasterization. However, some equipment such as laptops or mobile phones include means of accelerating the graphical computation that is not very advanced, which leads to slow usage and leads to limiting the use of rendering in real time. However, it is desirable to use such a type of rendering in certain nomadic uses requiring mobility of the user for which portable equipment is needed. For this type of mobile use, the equipment must make it possible to efficiently explore dynamic scenes and to ensure a high quality of display of the scenes, with an immobile object rendering close to reality in order to allow manipulations. virtual objects. Several solutions have already been proposed to speed up rendering processing. In particular, [Seiler et al. 2008, Larrabee: a many-core x86 25 architecture for visual computing. ACM Trans. Graph. 27, 3 (Aug.), 18: 118: 15] presented an architecture adapted to rasterization programs. However, the use of this specific architecture involves significant production costs and limited portability. More recently, a reverse approach of adapting the graphical pipeline to the architecture of existing computers has been adopted, as in [Liu et al. 2010, Freepipe: Programmable parallel rendering architecture for efficient multi-fragment effects. ACM SIGGRAPH Symposium on Interactive 3D Graphics and Game, ACM, New York, NY, USA, 13D'10, 75-82] and [Laine and Karas 2011, T. 2011. High-performance software rasterization on GPUs. In Proceedings of the ACM SIGGRAPH Symposium on High Performance Graphics, ACM, NY, NY, USA, HPG '11, 79-88]. These two documents present a programming and parallel computing platform known as CUDATM based on the current 5 graphics processors. [Peng and Cao 2012, A GPU-based Approach for Massive Mode! Rendering with Frame-to-Frame Coherence. Computer Graphics Forum 31, 2, 393-402] introduce a hybrid CPU / GPU approach based on the minimal data exchange between the CPU core processor and the GPU graphics processor, using the consistency of successive frames on a graphics processor. High end GPU. Nevertheless, these high-end GPU graphics processors are not present in the majority of mobile devices, which limits a possible use of this technique in most mobile devices. EA Digital Illusions CE (CE) [Andersson 2009, Parallel graphics in frostbite - Current & Future. Course Notes SIGGRAPH 2009] has created a game engine named "Frostbite Engine" based on a hybrid pipeline for their cross-platform, especially for the PlayStation e game console. However, this graphic pipeline uses, for a masking calculation step, additional preprogrammed geometries in order to efficiently calculate the masked objects, which implies the implementation of a specific processing for each new scene. The object of the present invention is to solve all or some of the disadvantages mentioned above by proposing a hybrid graphic pipeline that can efficiently exploit the processors available on a current computer, namely the so-called GPU graphics processor and the so-called CPU central processor. so as to allow real-time rendering of complex scenes, for example in nomadic uses, even on low-end equipment. For this purpose, the present invention relates to a real-time image rendering method from a three-dimensional virtual scene comprising a set of objects, comprising: a step of preparing at least part of the objects of the scene as a first set of polygons; a first step of rasterizing the first set of polygons at a first resolution less than a second final resolution of the images so as to obtain a depth buffer; information being collected during the first rasterization step corresponding to the identifiers of the visible polygons of the first set of polygons, that is to say to the polygons at the origin of at least one fragment of the first depth buffer, so defining a second set of polygons among the first set of polygons; and a second rasterization step of the second set of polygons at the second final resolution of the images. This arrangement makes it possible to perform the calculations on a set of minimized polygons and sufficient to achieve quality rendering, which optimizes the machine resources, in particular by balancing the data processing loads between the CPU central processor and the GPU graphics processor according to the present invention. the specialization of each processor. Moreover, the performance of a rendering process is all the more important as it makes it possible to reduce the amount of computation data and thus of operations to be executed by the GPU graphics processor. According to one aspect of the invention, the method comprises a masking calculation step for determining the visible objects as a function of the visibility of a volume encompassing the object. According to one aspect of the invention, the visible or invisible state of an object is determined for a given image based on the rendering of a previous image. These provisions make it possible to limit the processing to be performed during the first rasterization step by performing a simple prior test on the boxes enclosing the objects, in particular by maintaining a list or a buffer of visible objects and invisible objects, and by performing, for the invisible objects, a test by comparing a volume encompassing the object, and in particular an oriented bounding box, with respect to the depth buffer established for the image I based on the visible objects. According to one aspect of the invention, the preparation step comprises a step of dividing the image into tiles, a subset of polygons of the first set being defined corresponding to the polygons likely to be visible in this tile.

Selon un aspect de l'invention, lors de la première étape de rastérisation : - le calcul du tampon de profondeur inclut la détermination pour au moins une tuile d'une valeur de profondeur maximum lorsque la tuile est 5 remplie. - on compare la profondeur maximale de la tuile avec la profondeur minimale d'un polygone, le polygone n'étant pas pris en compte si sa profondeur minimale est supérieure à la profondeur maximale de la tuile. Ces dispositions permettent de mettre en oeuvre un test de 10 profondeur par tuile et d'éviter la rastérisation de triangles présentant une profondeur minimale supérieure à la profondeur maximale d'une tuile remplie. Selon un aspect de l'invention, les polygones du premier ensemble ou des sous-ensembles du premier ensemble sont classés par valeur croissante de profondeur minimale. 15 Ces dispositions permettent notamment de déterminer facilement l'ensemble des triangles qui présentent une profondeur minimale supérieure à la profondeur maximale d'une tuile et d'arrêter la rastérisation d'une tuile donnée sur la base de ce critère. Selon un aspect de l'invention, la première étape de rastérisation 20 comprend une étape de comparaison entre un fragment d'image et le volume englobant de la projection d'un polygone du premier ensemble dans l'espace des images. Selon un aspect de l'invention, une étape de comparaison entre le fragment et les arêtes du polygone considéré est effectuée dans le cas où la 25 comparaison entre un fragment et la projection du volume englobant d'un polygone du premier ensemble indique que le fragment est au moins partiellement dans le volume englobant de la projection du polygone dans l'espace des images. Selon un aspect de l'invention, le procédé comprend, entre la 30 première étape de rastérisation et la seconde étape de rastérisation, une étape intermédiaire de remplissage de l'image destinée à supprimer les zones de l'image sans géométrie visible. Selon un aspect de l'invention, l'étape de remplissage correspond à une dilatation des polygones du second ensemble dans l'espace des images. 35 La présente invention concerne également un produit programme d'ordinateur comprenant des instructions de code agencées pour mettre en oeuvre les étapes d'un procédé tel que décrit précédemment et un support de données comprenant les instructions de code d'un tel produit programme d'ordinateur. La présente invention concerne également un système 5 informatique dans lequel le processeur central et/ou le processeur graphique sont agencés pour mettre en oeuvre des instructions du produit programme d'ordinateur. Selon un aspect de l'invention, le processeur central est agencé pour mettre en oeuvre des instructions d'un produit programme d'ordinateur 10 correspondant à l'étape de préparation et à la première étape de rastérisation du procédé, et le processeur graphique est agencé pour mettre en oeuvre des instructions d'un produit programme d'ordinateur correspondant à la deuxième étape de rastérisation du procédé. Selon un aspect de l'invention, le processeur central est agencé 15 pour mettre en oeuvre des instructions d'un produit programme d'ordinateur correspondant à l'étape de remplissage de trous du procédé. Selon un aspect de l'invention, le processeur graphique est agencé pour mettre en oeuvre des instructions d'un produit programme d'ordinateur correspondant à l'étape de remplissage de trous du procédé. 20 Selon un aspect de l'invention, le processeur central est agencé pour mettre en oeuvre des instructions d'un produit programme d'ordinateur correspondant à l'étape de calcul de masquage du procédé. De toute façon, l'invention sera bien comprise à l'aide de la description qui suit, en référence au dessin schématique annexé représentant, 25 à titre d'exemple non limitatif, les étapes d'un procédé selon l'invention. La figure 1 montre un ordinogramme d'une mise en oeuvre préférée du procédé selon l'invention. La figure 2 illustre une étape de préparation du procédé selon la mise en oeuvre du procédé illustré à la figure 1. 30 La figure 3 illustre une première étape de rastérisation du procédé selon la mise en oeuvre du procédé illustré à la figure 1. La figure 4 est une illustration de l'organisation des structures de données représentant le tampon de profondeur utilisée par le procédé illustré à la figure 1. 35 La figure 5 est une représentation d'un objet dans la scène.According to one aspect of the invention, in the first rasterization step: the calculation of the depth buffer includes the determination for at least one tile of a maximum depth value when the tile is filled. - we compare the maximum depth of the tile with the minimum depth of a polygon, the polygon is not taken into account if its minimum depth is greater than the maximum depth of the tile. These arrangements make it possible to implement a depth test by tile and to avoid the rasterization of triangles having a minimum depth greater than the maximum depth of a filled tile. According to one aspect of the invention, the polygons of the first set or subsets of the first set are classified by increasing value of minimum depth. These provisions make it possible in particular to easily determine all of the triangles which have a minimum depth greater than the maximum depth of a tile and to stop the rasterization of a given tile on the basis of this criterion. According to one aspect of the invention, the first rasterization step comprises a step of comparing an image fragment with the surrounding volume of the projection of a polygon of the first set in the image space. According to one aspect of the invention, a comparison step between the fragment and the edges of the polygon under consideration is performed in the case where the comparison between a fragment and the projection of the encompassing volume of a polygon of the first set indicates that the fragment is at least partially in the enclosing volume of the projection of the polygon in the space of the images. According to one aspect of the invention, the method comprises, between the first rasterization step and the second rasterization step, an intermediate step of filling the image intended to remove the areas of the image without visible geometry. According to one aspect of the invention, the filling step corresponds to an expansion of the polygons of the second set in the space of the images. The present invention also relates to a computer program product comprising code instructions arranged to implement the steps of a method as described above and a data carrier comprising the code instructions of such a program product. computer. The present invention also relates to a computer system in which the central processor and / or the graphics processor are arranged to implement instructions of the computer program product. According to one aspect of the invention, the central processor is arranged to implement instructions of a computer program product corresponding to the preparation step and the first rasterization step of the method, and the graphics processor is arranged to implement instructions of a computer program product corresponding to the second process rasterization step. According to one aspect of the invention, the central processor is arranged to implement instructions of a computer program product corresponding to the process hole filling step. According to one aspect of the invention, the graphics processor is arranged to implement instructions of a computer program product corresponding to the process hole filling step. According to one aspect of the invention, the central processor is arranged to implement instructions of a computer program product corresponding to the masking calculation step of the method. In any case, the invention will be better understood with the aid of the description which follows, with reference to the appended schematic drawing showing, by way of non-limiting example, the steps of a method according to the invention. Figure 1 shows a flow chart of a preferred implementation of the method according to the invention. FIG. 2 illustrates a step of preparation of the method according to the implementation of the method illustrated in FIG. 1. FIG. 3 illustrates a first step of rasterization of the method according to the implementation of the method illustrated in FIG. 4 is an illustration of the organization of the data structures representing the depth buffer used by the method illustrated in FIG. 1. FIG. 5 is a representation of an object in the scene.

La figure 6 est illustre une opération réalisée au cours de la première étape d rastérisation. La figure 7 illustre une étape intermédiaire du procédé selon la mise en oeuvre du procédé illustré à la figure 1.FIG. 6 illustrates an operation performed during the first rasterization step. FIG. 7 illustrates an intermediate step of the method according to the implementation of the method illustrated in FIG.

La figure 8 est une illustration aidant à la compréhension de l'étape intermédiaire du procédé illustrée à la figure 7. La figure 9 illustre une première configuration système mettant en oeuvre le procédé selon l'invention. La figure 10 illustre une deuxième configuration système mettant 10 en oeuvre le procédé selon l'invention. La figure 11 illustre une troisième configuration système mettant en oeuvre le procédé selon l'invention. Comme illustré à la figure 1, selon un mode de mise en oeuvre, le procédé de rendu d'images I en temps-réel à partir d'une scène Sc virtuelle en 15 trois dimensions comprend : - une étape de préparation Si d'au moins une partie des objets 0 de la scène Sc sous forme d'un premier ensemble de polygones EP1. - une première étape de rastérisation S2 à une résolution intermédiaire Ri inférieure à la résolution finale Rf 20 - une étape intermédiaire de remplissage de trous S3, puis - une deuxième étape de rastérisation S4. En outre, une étape de calcul d'un masquage S5 permettant d'identifier des objets non-visibles dans une image sur la base des objets présents dans l'image précédente. 25 Dans la suite de la description, nous considérons que les polygones sont des triangles formés à partir de trois vertex, le triangle étant le type de primitive le plus utilisé pour réaliser des rendus d'images I en deux dimensions à partir d'objets 0 d'une scène Sc en trois dimensions. Toutefois, d'autres types de polygones pourraient être envisagés 30 selon des variantes de réalisation de l'invention. Chacun des objets 0 de la scène est donc formé par une pluralité de triangles, chaque triangle T étant composé de trois vertex V et associé à une normale N à la surface du triangle T représentative de l'orientation du triangle T dans la scène Sc.FIG. 8 is an illustration helping to understand the intermediate step of the method illustrated in FIG. 7. FIG. 9 illustrates a first system configuration implementing the method according to the invention. FIG. 10 illustrates a second system configuration implementing the method according to the invention. FIG. 11 illustrates a third system configuration implementing the method according to the invention. As illustrated in FIG. 1, according to one embodiment, the real-time I-image rendering method from a three-dimensional virtual Sc scene comprises: a preparation step If from least part of the objects 0 of the scene Sc as a first set of polygons EP1. a first rasterization step S2 at an intermediate resolution Ri less than the final resolution Rf 20; an intermediate hole filling step S3; and then a second rasterization step S4. In addition, a step of calculating a masking S5 to identify non-visible objects in an image based on the objects present in the previous image. In the remainder of the description, we consider that the polygons are triangles formed from three vertices, the triangle being the most used type of primitive for rendering two-dimensional images of images from objects 0 of a Sc scene in three dimensions. However, other types of polygons could be envisaged according to alternative embodiments of the invention. Each of the objects 0 of the scene is thus formed by a plurality of triangles, each triangle T being composed of three vertices V and associated with a normal N on the surface of the triangle T representative of the orientation of the triangle T in the scene Sc.

Chacun des vertex V des triangles T d'un objet 0 présente des coordonnées qui peuvent être exprimées dans un repère propre à l'objet ou dans un repère orthonormé ayant pour référentiel la scène Sc. Par ailleurs, nous considérons ici que le terme image I décrit de 5 façon générique les images successives de la scène Sc définies par le procédé de rendu à partir des caractéristiques d'une caméra C. Les étapes du procédé sont décrites ci-dessous. Comme illustré à la figure 2, l'étape de préparation Si comprend une pluralité de sous étapes. 10 Ces sous étapes sont détaillées ci-après. Au cours d'une première sous étape SS1, les coordonnées de chaque vertex V sont transformées depuis l'espace orthonormé ayant pour référentiel la scène Sc vers l'espace orthonormé de coordonnées x, y, z ayant pour référentiel la position de la caméra C, puis projetées sur le plan (x, y) de 15 l'image I en conservant également une information de profondeur z associée au vertex V dans le repère ayant pour référentiel la caméra C. Chaque vertex V projeté sur le plan (x, y) s'exprime donc par ses coordonnées x, y, z. Cette première sous-étape SS1 permet donc après cette 20 transformation d'obtenir une première liste de triangles T d'objets 0, les vertex V de ces triangles T étant exprimés dans le repère ayant pour référentiel l'image I avec des coordonnées x, y correspondant à une position dans l'image I et une information de profondeur z. Au cours d'une deuxième sous étape SS2, le champ de vision ou 25 frustum de la caméra est défini par un tronc pyramidal délimité par un plan proche NearP et un plan lointain FarP. Dans cette deuxième sous-étape SS2, les objets 0 potentiellement visible, c'est-à-dire qui se trouvent en tout ou partie dans le champ de vision ou frustum de la caméra C, sont marqués en tant que tels. 30 Au cours du rendu d'une image I de la scène Sc, tous les triangles T des objets 0 de la scène Sc se trouvant en dehors du champ de vision ou frustum sont quant à eux mémorisés séparément en vue d'une utilisation ultérieure, notamment lors d'une étape de calcul de masquage S5 décrite plus loin dans le texte. 35 Dans une troisième sous étape SS3, les triangles T qui ne font pas face à la caméra C sont éliminés, l'orientation des triangles T par rapport à la caméra C étant déduite à partir de la normale N à la surface de chaque triangle T dans le repère ayant pour référentiel la caméra C. Dans une quatrième sous étape SS4, les triangles T dits dégénérés, c'est-à-dire présentant des surfaces nulles ou trop aplaties dans le 5 repère ayant pour référentiel l'image I sont eux aussi éliminés. Ces triangles T sont éliminés en convertissant les coordonnées réelles (x, y) de chaque vertex V en coordonnées entières du plus proche fragment Fr de l'image I, et en supprimant après cette conversion les triangles T de surface nulle ou trop faible. 10 Une seconde liste de triangles est obtenue à la fin de la quatrième sous-étape contenant les triangles de la première liste qui n'ont pas été éliminés dans les sous-étapes SS2 à SS4. Dans une cinquième sous étape SS5, l'image I est également divisée en une pluralité de tuiles Tl de même résolution déterminée. 15 Chaque tuile Tl est définie dans l'image I par un rectangle de coordonnées xmin, ymin et xmax, ymax. Chaque tuile Tl peut ainsi être recouverte en tout ou partie par des triangles T de la deuxième liste. De même, un triangle T de la deuxième liste peut recouvrir une ou 20 plusieurs tuiles Tl. Afin de déterminer facilement si tout ou partie d'un triangle T peut être contenu dans une tuile Tl, on modélise une surface englobante TSB de la projection du triangle T dans le repère ayant pour référentiel l'image I. Les coordonnées x, y de la surface englobante TSB sont 25 comparées aux coordonnées xmin, ymin et xmax, ymax de la tuile Tl pour déterminer les parties de triangle potentiellement visibles dans la tuile Tl. Ce calcul peut être réalisé simultanément pour l'ensemble des tuiles Tl de l'image I. A la fin de la cinquième sous étape SS5, on obtient donc un 30 premier ensemble EP1 de triangles T potentiellement visibles dans l'image I avec des sous-ensembles SEP1 de triangles T susceptibles d'être visibles dans une tuile Tl déterminée de l'image I. Cependant, les triangles T des sous-ensembles SEP1 ne sont que potentiellement visibles dans l'image I.Each of the vertex V of the triangles T of an object 0 has coordinates that can be expressed in a frame specific to the object or in an orthonormal frame having for reference the scene Sc. Moreover, we consider here that the term image I describes generically the successive images of the scene Sc defined by the rendering method from the characteristics of a camera C. The process steps are described below. As illustrated in FIG. 2, the preparation step Si comprises a plurality of sub-steps. These sub-steps are detailed below. During a first substep SS1, the coordinates of each vertex V are transformed from the orthonormal space having for reference the scene Sc to the orthonormal space of coordinates x, y, z having for reference the position of the camera C , then projected on the (x, y) plane of the image I while also preserving a depth information z associated with the vertex V in the reference frame having for reference the camera C. Each vertex V projected onto the plane (x, y ) is expressed by its coordinates x, y, z. This first sub-step SS1 therefore makes it possible, after this transformation, to obtain a first list of triangles T of objects 0, the vertices V of these triangles T being expressed in the reference frame having the image I as the reference with coordinates x, y corresponding to a position in the image I and a depth information z. During a second substep SS2, the field of view or frustum of the camera is defined by a pyramidal trunk delimited by a near plane NearP and a farP FarP. In this second substep SS2, the potentially visible objects 0, that is to say which are wholly or partly in the field of vision or frustum of the camera C, are marked as such. During the rendering of an image I of the scene Sc, all the triangles T of the objects 0 of the scene Sc which are outside the field of view or frustum are stored separately for later use, in particular during a masking calculation step S5 described later in the text. In a third substep SS3, the triangles T which do not face the camera C are eliminated, the orientation of the triangles T with respect to the camera C being deduced from the normal N on the surface of each triangle T in the reference frame having for reference camera C. In a fourth substep SS4, the so-called degenerate triangles T, that is to say having surfaces that are zero or too flattened in the reference frame having as their reference image I are they also eliminated. These triangles T are eliminated by converting the real coordinates (x, y) of each vertex V into integer coordinates of the nearest fragment Fr of the image I, and by deleting after this conversion the triangles T of zero or too weak surface. A second list of triangles is obtained at the end of the fourth substep containing the triangles of the first list which have not been eliminated in substeps SS2 to SS4. In a fifth substep SS5, the image I is also divided into a plurality of tiles T1 of the same determined resolution. Each tile T1 is defined in the image I by a rectangle of coordinates xmin, ymin and xmax, ymax. Each tile T1 can thus be covered in whole or in part by triangles T of the second list. Likewise, a triangle T of the second list may cover one or more tiles T1. In order to easily determine whether all or part of a triangle T may be contained in a tile T1, a bounding surface TSB of the projection of The x, y coordinates of the bounding surface TSB are compared with the coordinates xmin, ymin and xmax, ymax of the tile T1 to determine the potentially visible triangle portions in the tile. This calculation can be carried out simultaneously for all the tiles T1 of the image I. At the end of the fifth sub-step SS5, a first set EP1 of triangles T potentially visible in the image I with subsets SEP1 of triangles T likely to be visible in a tile Tl determined from the image I. However, the triangles T of the subsets SEP1 are only potentially visible in the image I.

En effet, les triangles T des sous-ensembles SEP1 peuvent être situés à des profondeurs z différentes par rapport à la caméra C et présenter des recouvrements. Une partie d'un triangle T se trouvant à une profondeur z inférieure 5 peut donc occulter une partie de triangle T se trouvant à une profondeur z supérieure si leur projection dans une tuile TI de l'image I comprend un recouvrement. Afin de déterminer les parties visibles des triangles T pour chaque fragment Fr de l'image, une première étape de rastérisation S2 est réalisée sur 10 le premier ensemble EP1 de triangles T à une première résolution Ri inférieure à la résolution finale Rf de l'image I de façon à obtenir un tampon de profondeur ZB1 et un tampon d'identification des triangles visibles. A titre d'exemple, le tampon de profondeur ZB1 peut présenter une résolution deux fois inférieure à celle de l'image finale I, c'est-à-dire dont la 15 largeur et la hauteur sont la moitié de la largeur et de la hauteur, respectivement, de l'image finale I. Le détail des sous étapes de cette première étape de rastérisation est présenté sur la figure 3. Afin d'augmenter la cohérence mémoire, et comme la rastérisation 20 est réalisée par traitement en parallèle de fragments Fr de résolution 4X4 à la fois pour une utilisation efficace des fonctions SIMS, le tampon de profondeur ZB1 est stocké dans une mémoire d'une manière non-linéaire. Comme cela est représenté sur la figure 4, le tampon de profondeur ZB1 est organisé par tuiles TI, et comprend plusieurs niveaux de 25 tuiles TI. A titre d'exemple, les niveaux suivant peuvent être définis : - un premier niveau de tuiles TI comprenant 64X64 fragments du tampon de profondeur ZB1, - un deuxième niveau de tuiles TI comprenant 16X16 fragments du 30 tampon de profondeur ZB1, - un troisième niveau de tuiles TI comprenant 4X4 fragments du tampon de profondeur ZB1. Il est à noter que les tuiles TI de même niveau ne se recouvrent pas, ce qui permet un traitement en parallèle réalisé par des threads distincts. 35 Par ailleurs, dans le cas où un triangle recouvre plusieurs tuiles Tl, seule la partie de triangle T recouvrant la tuile Tl est rastérisée.In fact, the triangles T of the subassemblies SEP1 may be located at different depths z relative to the camera C and have overlaps. A part of a triangle T at a lower depth z can therefore mask a portion of triangle T at a greater depth z if their projection in a tile TI of the image I comprises a covering. In order to determine the visible portions of the triangles T for each fragment Fr of the image, a first rasterization step S2 is performed on the first set EP1 of triangles T at a first resolution Ri less than the final resolution Rf of the image I so as to obtain a depth buffer ZB1 and an identification buffer of the visible triangles. By way of example, the depth buffer ZB1 may have a resolution two times smaller than that of the final image I, that is to say the width and height of which are half the width and the width. height, respectively, of the final image I. The details of the sub-steps of this first rasterization step is shown in FIG. 3. In order to increase the memory coherence, and since the rasterization is performed by parallel processing of fragments With 4X4 resolution at a time for efficient use of SIMS functions, the ZB1 depth buffer is stored in memory in a non-linear manner. As shown in FIG. 4, the depth buffer ZB1 is organized by TI tiles, and comprises several levels of TI tiles. By way of example, the following levels can be defined: a first level of TI tiles comprising 64X64 fragments of the depth buffer ZB1; a second level of TI tiles comprising 16X16 fragments of the depth buffer ZB1; a third level; of TI tiles including 4X4 fragments of depth buffer ZB1. It should be noted that TI tiles of the same level do not overlap, which allows for parallel processing by separate threads. On the other hand, in the case where a triangle covers several tiles T1, only the triangle portion T covering the tile T1 is rasterized.

La rastérisation est réalisée de la façon suivante. Pour chaque tuile Tl du premier niveau, on considère chaque triangle T du sous-ensemble SEP se projetant sur ladite tuile. Pour chaque triangle T, tous les fragments Fr de la tuile se trouvant 5 à l'intérieur de la surface englobante TSB du triangle T sont comparés aux équations des côtés du triangle T. Pour chaque fragment Fr se trouvant à l'intérieur du triangle T, une valeur de profondeur est mémorisée dans le premier tampon de profondeur ZB1, si la profondeur courante du triangle considérée est inférieure à une 10 valeur de profondeur éventuellement déjà stockée correspondant au même Fragment. Comme illustré à la figure 3, si une valeur de profondeur est mise à jour dans le tampon de profondeur ZB1 pour un Fragment donné Fr, une information d'identification ID du triangle T correspondant à cette mise à jour 15 est enregistrée dans un tampon d'identification IDB pour ce même Fragment Fr. Il est à noter que le tampon d'identification peut présenter une structure similaire à celle du tampon de profondeur illustrée par la figure 4 et décrite ci-dessus. 20 Ainsi, au cours de cette première étape de rastérisation S2, des informations d'identification ID sont collectées, dans le tampon d'identification IDB, ces informations d'identification correspondant aux identifiants des triangles T visibles, c'est-à-dire aux triangles T définissant au moins un la valeur d'un fragment ou pixel du premier tampon de profondeur ZB1. 25 Selon un mode de réalisation, la rastérisation est réalisée par traitement de tuiles TI de 4X4 fragments Fr à la fois, chaque groupe de quatre fragments Fr étant traité en parallèle par un seul « thread » ou fil de traitement, en utilisant des fonctions SIMD permettant d'effectuer quatre opérations simultanément au cours d'un cycle de processeur central CPU. 30 Afin de minimiser les calculs à réaliser pour déterminer les triangles T visibles pour chaque fragment Fr du tampon de profondeur ZB1, un test de profondeur par tuile est mis en place. Pour permettre la réalisation de ce test, les triangles T de chaque sous ensemble SEP1 de chaque tuile TI sont classés en fonction de leur 35 profondeur minimale zmin.The rasterization is carried out as follows. For each tile Tl of the first level, consider each triangle T of the subassembly SEP projecting on said tile. For each triangle T, all the fragments Fr of the tile lying inside the bounding surface TSB of the triangle T are compared to the equations of the sides of the triangle T. For each fragment Fr lying inside the triangle T , a depth value is stored in the first depth buffer ZB1, if the current depth of the considered triangle is less than a depth value possibly already stored corresponding to the same Fragment. As illustrated in FIG. 3, if a depth value is updated in the depth buffer ZB1 for a given Fragment Fr, an identification information ID of the triangle T corresponding to this update 15 is recorded in a buffer. IDB identification for the same Fragment Fr. It should be noted that the identification buffer may have a structure similar to that of the depth buffer illustrated in Figure 4 and described above. Thus, during this first rasterization step S2, identification information ID is collected, in the identification buffer IDB, these identification information corresponding to the identifiers of the visible triangles T, that is to say triangles T defining at least one the value of a fragment or pixel of the first depth buffer ZB1. According to one embodiment, the rasterization is performed by processing T1 tiles of 4X4 Fr fragments at a time, each group of four Fr fragments being processed in parallel by a single "thread" or processing wire, using SIMD functions allowing four operations to be performed simultaneously during a CPU central processor cycle. In order to minimize the calculations to be made to determine the visible triangles T for each fragment Fr of the depth buffer ZB1, a tile depth test is set up. To allow this test to be performed, the triangles T of each subset SEP1 of each tile T1 are classified according to their minimum depth zmin.

Lors de la rastérisation, lorsqu'une tuile TI est remplie, c'est à dire lorsque le tampon de profondeur ZB1 comprend une information de profondeur pour chaque fragment Fr de ladite tuile Tl, une valeur correspondant à la profondeur maximale zmax présente dans le tampon de profondeur pour les fragments Fr de la tuile est déterminée. Par la suite, cette valeur zmax est comparée avec la valeur zmin de chaque triangle T n'ayant pas encore été traité. Si la valeur zmin est inférieure à la valeur zmax, une rastérisation du triangle est opérée, qui peut conduire à une mise à jour de la valeur zmax.During rasterization, when a TI tile is filled, that is when the depth buffer ZB1 comprises depth information for each fragment Fr of said tile T1, a value corresponding to the maximum depth zmax present in the buffer depth for Fr fragments of the tile is determined. Subsequently, this value zmax is compared with the zmin value of each triangle T that has not yet been processed. If the zmin value is less than the zmax value, a triangle rasterization is performed, which may lead to an update of the zmax value.

Si la valeur zmin du triangle est supérieure à la valeur zmax de la tuile, alors le triangle considéré ainsi que tous les triangles suivants peuvent être ignorés pour la rastérisation de la tuile considérée. Les figures 6a et 6b illustrent un exemple de mise en oeuvre de la rastérisation avec un tampon d'identification et un test de profondeur par tuile, 15 en se limitant à un cas à deux dimensions pour simplifier la compréhension. Ainsi, les tuiles Tl comme les triangles T sont représentés par des segments. La rastérisation d'une tuile Tl est réalisé en considérant les triangles T se projetant sur cette tuile en commençant par le triangle T ayant la profondeur minimale zmin en allant vers le triangle ayant la profondeur 20 minimale la plus élevée, la profondeur d'un triangle T étant déterminée à partir de la profondeur minimale zmin d'un de ces vertex V parmi les trois vertex V composant le triangle T. On projette donc d'abord le triangle Ti présentant le zmin le plus faible. Ce triangle modifie la valeur du tampon de profondeur pour des 25 Fragments Fr de la tuile Tl, et donc l'identifiant IDT1 de triangle est entré dans le tampon d'identifiants IDB pour les Fragments Fr correspondants. On projette ensuite le triangle T2 présentant un zmin2 > zmin1. Ce triangle modifie la valeur du tampon de profondeur pour des Fragments Fr de la tuile Tl, et donc l'identifiant IDT2 de triangle est entré dans le tampon 30 d'identifiants IDB pour les Fragments Fr correspondants. Par ailleurs, il apparaît que la Tuile Tl est remplie suite à la rastérisation des deux triangles Ti et T2, une information de profondeur étant présente dans le tampon de profondeur pour chaque fragment. Une première valeur de zmax est donc déterminée pour la tuile. 35 On considère ensuite un troisième triangle T3, dont la valeur zmin3 est supérieure à celle des triangles Ti et T2, mais inférieure à zmax. Ce triangle modifie la valeur du tampon de profondeur pour des Fragments Fr de la tuile Tl, et donc l'identifiant IDT3 de ce triangle est entré dans le tampon d'identifiants IDB pour les Fragments Fr correspondants. Dans le cas présenté, la rastérisation de T3 modifie la valeur de 5 zmax, ce qui est représenté par une valeur zmax'. On considère ensuite un triangle T4, dont la valeur zmin4 est supérieure à zmax'. La rastérisation de ce triangle, comme tous les suivants avec des valeurs de zm in supérieure à zmax' peut être éliminée car ceux-ci sont 10 forcément occultés par un autre triangle T. Ainsi, le tampon IDB ne contiendra que des identifiantsIDT1, IDT2 et IDT3 des trianglesT1, T2 et T3. Comme cela est illustré sur la figure 3, après avoir rastérisé tous les triangles T d'une tuile TI, une sous étape de parcours du tampon 15 d'identifiant IDB est réalisé pour chaque tuile TI pour définir un nouveau tampon par tuile des triangles visibles pour cette tuile. Ensuite, tous les tampons de triangles visibles de l'ensemble des tuiles TI sont fusionnés et les doublons correspondant à des triangles visibles sur plusieurs tuiles TI sont supprimés de façon à définir un second tampon ou 20 ensemble de polygones ou triangles EP2 visibles pour l'image I, ce qui correspond au résultat de la première étape de rastérisation. Il est à noter que les triangles T du second ensemble de triangles EP2 peuvent également être classés selon leur appartenance à un objet O. Tous les objets qui ne contiennent pas de triangles visibles sont marqués 25 comme invisible et seront traités lors de l'étape de masquage S5. Suite à la première étape de rastérisation, une étape de remplissage des trous S3 peut être réalisée. En effet, comme le traitement réalisé lors de la première étape de rastérisation 1 est réalisé à une résolution inférieure Ri, il est possible que 30 certains triangles T de petites tailles soient considérés comme dégénérés au cours de l'étape préliminaire 51 et donc supprimés lors de la première étape de rastérisation S2, ce qui peut générer des trous dans l'image I de résolution finale Rf supérieure lors de la deuxième étape de rastérisation S4. L'étape 53 de remplissage des trous destinée à supprimer les 35 zones de l'image I sans géométrie visible ou trous est illustrée à la figure 7.If the zmin value of the triangle is greater than the zmax value of the tile, then the considered triangle and all subsequent triangles can be ignored for rasterization of the considered tile. Figures 6a and 6b illustrate an exemplary implementation of rasterization with an identification buffer and a tile depth test, limited to a two-dimensional case to simplify understanding. Thus, the tiles T1 as the triangles T are represented by segments. The rasterization of a tile T1 is done by considering the triangles T projecting on this tile starting with the triangle T having the minimum depth zmin going to the triangle having the highest minimum depth, the depth of a triangle. T being determined from the minimum depth zmin of one of these vertex V among the three vertices V composing the triangle T. So we first project the triangle Ti with the lowest zmin. This triangle modifies the depth buffer value for fragments Fr of the tile T1, and thus the triangle identifier IDT1 is entered in the IDB ID buffer for the corresponding Fr fragments. We then project the triangle T2 with a zmin2> zmin1. This triangle modifies the value of the depth buffer for Fragments Fr of the tile T1, and thus the triangle identifier IDT2 is entered in the IDB ID buffer 30 for the corresponding Fr fragments. Moreover, it appears that the tile T1 is filled following the rasterization of the two triangles Ti and T2, a depth information being present in the depth buffer for each fragment. A first value of zmax is therefore determined for the tile. A third triangle T3 is then considered, whose value zmin3 is greater than that of the triangles Ti and T2, but less than zmax. This triangle modifies the value of the depth buffer for Fragments Fr of the tile T1, and thus the identifier IDT3 of this triangle is entered in the IDB ID buffer for the corresponding Fragments Fr. In the case presented, the rasterization of T3 modifies the value of 5 zmax, which is represented by a value zmax '. We then consider a triangle T4 whose value zmin4 is greater than zmax '. The rasterization of this triangle, like all the others with values of zm in greater than zmax ', can be eliminated because these are necessarily hidden by another triangle T. Thus, the IDB buffer will contain only identifiersIDT1, IDT2 and IDT3 of triangles T1, T2 and T3. As illustrated in FIG. 3, after having rasterized all the triangles T of a tile TI, a substep of the IDB ID buffer 15 is carried out for each tile TI to define a new buffer by tile of the visible triangles. for this tile. Then, all the visible triangle buffers of the set of TI tiles are merged and the duplicates corresponding to triangles visible on several TI tiles are deleted so as to define a second buffer or set of EP2 visible polygons or triangles for the image I, which corresponds to the result of the first rasterization step. It should be noted that the triangles T of the second set of triangles EP2 can also be classified according to their belonging to an object O. All the objects which do not contain visible triangles are marked as invisible and will be processed during the step of S5 masking. Following the first rasterization step, a step of filling the holes S3 can be performed. Indeed, since the processing performed during the first rasterization step 1 is performed at a lower resolution Ri, it is possible for some small triangles T to be considered degenerate during the preliminary step 51 and thus removed during of the first rasterization step S2, which can generate holes in the image I of final resolution Rf higher during the second rasterization step S4. The step 53 of filling the holes to remove the zones of the image I without visible geometry or holes is illustrated in FIG.

Cette étape de remplissage consiste à dilater tous les triangles visibles composant l'image I. La dilatation en elle-même est réalisée en utilisant par exemple la méthode exposée dans l'article [Hasselgren, J., Akenine-Môller, T., and 5 Ohlsson, L. 2005. Conservative Rasterization. In GPU Gems 2, M. Pharr, Ed. Addison-Wesley, 677-6901. Comme cela est illustré à la figure 8, l'algorithme utilisé calcule des quadrants auquel chaque normale d'arête appartient et, en fonction de leur position, détermine un, deux ou trois vertex à insérer pour chaque vertex 10 original. Le facteur de dilatation dépend du rapport de résolution entre le tampon de profondeur ZB1 utilisé dans la première étape de rastérisation et le tampon de profondeur utilisé dans la seconde étape de rastérisation. A titre d'exemple, pour un tapon de profondeur ZB1 qui présente la moitié de la taille de la largeur et la moitié de la hauteur de l'image finale, une 15 dilatation de 0,4 de la taille de pixel est suffisante pour couvrir l'ensemble des trous et ne crée pas d'artefacts visuels significatifs en mouvement. Comme illustré à la figure 7, les nouvelles coordonnées des projections des vertex V des triangles T visibles de l'image I sont mémorisées dans un tampon de vertex VB3 pour chacun des objets 0 de l'image I.This filling step consists in dilating all the visible triangles composing the image I. The dilation in itself is carried out using, for example, the method described in the article [Hasselgren, J., Akenine-Moller, T., and Ohlsson, L. 2005. Conservative Rasterization. In GPU Gems 2, M. Pharr, Ed. Addison-Wesley, 677-6901. As illustrated in FIG. 8, the algorithm used calculates quadrants to which each edge normal belongs and, depending on their position, determines one, two, or three vertices to be inserted for each original vertex. The expansion factor depends on the resolution ratio between the depth buffer ZB1 used in the first rasterization step and the depth buffer used in the second rasterization step. For example, for a depth tap ZB1 that has half the size of the width and half the height of the final image, an expansion of 0.4 of the pixel size is sufficient to cover all holes and does not create significant visual artifacts in motion. As illustrated in FIG. 7, the new coordinates of the projections of the vertices V of the visible triangles T of the image I are stored in a vertex buffer VB3 for each of the objects 0 of the image I.

20 Suite à cette étape de remplissage des trous, la seconde étape de rastérisation S4 à une seconde résolution correspondant à la résolution finale Rf de l'image I sur la base du second ensemble de triangle EP2 est réalisée. Ainsi, cette étape de rastérisation S4 est réalisée avec un minimum de triangles T à rastériser, ce qui augmente la vitesse du rendu de l'image I.Following this hole filling step, the second rasterization step S4 at a second resolution corresponding to the final resolution Rf of the image I based on the second triangle set EP2 is performed. Thus, this rasterization step S4 is performed with a minimum of triangles T to rasterize, which increases the rendering speed of the image I.

25 Par la suite, l'étape de calcul de masquageS5 destinée à déterminer les objets 0 potentiellement visibles à prendre en compte dans le rendu de la prochaine image est effectuée. Cette étape S5 est basée sur la cohérence temporelle entre une image I et l'image I précédente et part de l'hypothèse selon laquelle un objet 0 30 visible lors d'un rendu n sera certainement visible lors d'un rendu n+1. Il en va de même pour les objets 0 non visibles. Ainsi, l'état visible ou invisible d'un objet 0 est déterminé pour une image donnée I lors du rendu d'une image I précédente. Toutefois, pour les objets invisible, un test est réalisé en comparant 35 un volume OBB englobant l'objet 0 et en particulier une boîte englobante orientée, comme illustré à la figure 5, par rapport au tampon de profondeur établi pour l'image I sur la base des objets visibles. Ainsi, l'objet entier n'est pas testé. Cette approche assure un résultat conservatif en ce qui concerne la visibilité, tout en nécessitant la 5 rastérisation d'un faible nombre de triangles. Les sous étapes de procédés sont similaires à celle présentées dans la première étape de rastérisation. Toutefois le procédé de rastérisation utilisant les boîtes englobantes d'objets ne modifie par le tampon de profondeur mais se limite à marque l'objet comme potentiellement visible si au moins un 10 des Fragments du tampon de profondeur présente une profondeur supérieure à la profondeur de la boîte englobante. Ceci permet notamment d'arrêter la rastérisation d'un objet dès qu'un Fragment rempli la condition mentionnée ci-dessus. Comme le tampon de profondeur ZB1 est déjà rempli lorsque la 15 comparaison avec la boîte englobante OBB des objets 0 débute, il est possible de mettre en oeuvre le test de profondeur par tuile Tl décrit en référence avec la première étape de rastérisation. Si un objet est marqué comme potentiellement visible lors de cette étape de calcul de masquage par objet, il sera rendu lors de la prochaine 20 image. Il est possible que ce décalage d'une image produise un artefact de type « pop-up ». Toutefois, cet artefact correspond à la durée du rendu d'une image I et ne concerne que les premiers pixels visibles d'un objet. En maintenant une fréquence de rafraichissement proportionnelle à la vitesse de 25 la caméra, cet artefact reste quasiment imperceptible. Il est par ailleurs possible de le corriger en réalisant une étape de préparation et une première étape de rastérisation spécifique pour les nouveaux objets 0 visibles. Nous allons à présent décrire trois exemples de configurations matérielles sur lesquelles a été testée l'utilisation du procédé décrit 30 précédemment. Selon une première configuration illustrée sur la figure 9, un dispositif utilisé pour la maintenance des avions est considéré. Pour cette application, les mêmes procédures ont été utilisées depuis de nombreuses années sur le même matériel pour éviter tout problème imprévisible. Pour cette 35 raison, des ordinateurs relativement anciens et à faibles performances sont utilisés. A titre d'exemple, une architecture du type Intel® GMA est utilisée, et plus précisément un Mobile Intel@ 965 Express Chipset Family avec un processeur Intel@ Core2 duo T8300 2,4 GHz. Dans cette configuration, le processeur central exécute deux « threads » simultanément au cours d'un cycle de processeur central CPU. Toutes les étapes du procédé sont traitées par le processeur central CPU hormis la deuxième étape de rastérisation S4 qui est traitée par le processeur graphique GPU. Selon une seconde configuration illustrée sur la figure 10, des dispositifs destinés à la formation des nouvelles recrues sur un site de centrale nucléaire sont considérés. Pour cette application, des ordinateurs légers récents permettant une mobilité accrue dans des zones difficiles d'accès sont utilisés. A titre d'exemple, l'architecture cible considérée est un processeur CPU Intel Core7 1,6Ghz avec un processeur graphique GPU sur carte Intel HD Graphics 4000. Le processeur central CPU propose une technologie hyperthreading qui permet d'utiliser 8 threads en parallèle. Dans ce cas, toutes les étapes sont traitées par le processeur central CPU hormis la deuxième étape de rastérisation S4 qui est traitée par le processeur graphique GPU. Selon une troisième configuration illustrée sur la figure 11, des dispositifs destinés à la maintenance d'automobiles sont considérés. Pour cette application, des ordinateurs moins portables mais présentant des meilleures performances sont utilisés, étant donné que les tâches à réaliser demandent moins de mobilité et des lieux d'accès plus facile. A titre d'exemple, l'architecture cible considérée est un processeur CPU Intel@ Core7 1,6Ghz avec un processeur graphique GPU ATI Mobility Radeon @ HD 4830 Series. Pour cette architecture, le processeur central peut réaliser huit « threads » simultanément au cours d'un cycle de processeur central CPU. Toutefois, la rapidité du procédé devient limitée par les capacités du CPU étant donné les capacités du GPU. Ainsi, pour permettre un équilibrage de charge performant, certaines parties du procédé sont déléguées sur le GPU. En particulier, l'étape de remplissage des trous S3 et la deuxième étape de rastérisation S4 qui sont traitées par le processeur graphique GPU. Il apparaît bien entendu que les différentes mises en oeuvre du procédé de rendu détaillés ci-dessus ne constituent que des exemples de mises en oeuvre de l'invention telle que définie par les revendications ci-jointes. Des variantes de ces différentes mises en oeuvre peuvent être envisagées et les différents modes de réalisations décrits peuvent être combinés de façon aisée par l'homme du métier.Subsequently, the S5 masking calculation step for determining the potentially visible objects 0 to be taken into account in the rendering of the next image is performed. This step S5 is based on the temporal coherence between an image I and the previous image I and assumes that an object 30 visible during a rendering n will certainly be visible during an n + 1 rendering. The same goes for the 0 not visible objects. Thus, the visible or invisible state of an object 0 is determined for a given image I when rendering a previous image I. However, for the invisible objects, a test is performed by comparing an OBB volume encompassing the object 0 and in particular an oriented bounding box, as illustrated in FIG. 5, with respect to the depth buffer established for the image I on the base of visible objects. Thus, the whole object is not tested. This approach provides a conservative result with respect to visibility, while requiring the rasterization of a small number of triangles. The process substeps are similar to those presented in the first rasterization step. However, the rasterization method using the bounding boxes of objects does not alter the depth buffer, but limits itself to marking the object as potentially visible if at least one of the depth buffer fragments has a depth greater than the depth of the depth buffer. bounding box. This allows in particular to stop the rasterization of an object as soon as a fragment fulfills the condition mentioned above. Since the depth buffer ZB1 is already filled when the comparison with the OBB bounding box of the objects 0 begins, it is possible to implement the tile depth test T1 described with reference to the first rasterization step. If an object is marked as potentially visible during this object masking calculation step, it will be rendered at the next image. It is possible that this shift of an image produces a "pop-up" artifact. However, this artifact corresponds to the duration of the rendering of an image I and concerns only the first visible pixels of an object. By maintaining a refresh rate proportional to the speed of the camera, this artifact remains almost imperceptible. It is also possible to correct it by performing a preparation step and a specific first rasterization step for the new visible objects 0. We will now describe three examples of hardware configurations on which the use of the previously described method has been tested. According to a first configuration illustrated in FIG. 9, a device used for aircraft maintenance is considered. For this application, the same procedures have been used for many years on the same hardware to avoid unpredictable problems. For this reason, relatively old and low performance computers are used. For example, an Intel® GMA type architecture is used, and more specifically an Intel @ 965 Express Chipset Family Mobile with an Intel @ Core2 duo T8300 2.4 GHz. In this configuration, the central processor executes two "threads" simultaneously during a CPU core cycle. All the steps of the method are processed by the central processor CPU except the second rasterization step S4 which is processed by the graphics processor GPU. According to a second configuration illustrated in FIG. 10, devices intended for training new recruits at a nuclear power plant site are considered. For this application, recent lightweight computers for increased mobility in hard-to-reach areas are used. For example, the target architecture considered is a 1.6Ghz Intel Core7 CPU processor with a graphics GPU on Intel HD Graphics 4000. The central processor CPU offers a hyperthreading technology that allows to use 8 threads in parallel. In this case, all the steps are processed by the central processor CPU except the second rasterization step S4 which is processed by the graphics processor GPU. According to a third configuration illustrated in FIG. 11, devices intended for the maintenance of automobiles are considered. For this application, less portable but better performing computers are used, as the tasks to be performed require less mobility and easier access. For example, the target architecture under consideration is an Intel @ Core7 1.6Ghz CPU processor with a GPU graphics processor ATI Mobility Radeon @ HD 4830 Series. For this architecture, the central processor can realize eight "threads" simultaneously during a CPU core cycle. However, the speed of the process becomes limited by the capabilities of the CPU given the capabilities of the GPU. Thus, to enable efficient load balancing, some parts of the process are delegated to the GPU. In particular, the step of filling the holes S3 and the second rasterization step S4 which are processed by the graphics processor GPU. It will be understood that the various implementations of the rendering method detailed above are only examples of implementations of the invention as defined by the appended claims. Variations of these different implementations can be envisaged and the various embodiments described can be easily combined by those skilled in the art.

Claims (13)

REVENDICATIONS1. Procédé de rendu d'images (I) en temps-réel à partir d'une scène (Sc) virtuelle en trois dimensions comprenant un ensemble d'objets (0), 5 comportant : - une étape de préparation (Si) d'au moins une partie des objets de la scène sous forme d'un premier ensemble de polygones (EP1) ; - une première étape de rastérisation (S2) du premier ensemble de polygones (EP1) à une première résolution (Ri) inférieure à une seconde 10 résolution finale (Rf) des images (I) de façon à obtenir un tampon de profondeur (ZB1) ;des informations (IDB) étant collectées lors de la première étape de rastérisation (S2) correspondant aux identifiants (PID) des polygones visibles du premier ensemble de polygones (EP1), c'est-à-dire aux polygones à l'origine d'au moins un fragment (Fr) du premier tampon de profondeur (ZB1), 15 de façon à définir un second ensemble de polygones (EP2) parmi le premier ensemble de polygones (EP1) ; et - une seconde étape de rastérisation (S4) du second ensemble de polygones (EP2) à la seconde résolution finale (Rf) des images (I).REVENDICATIONS1. A method for rendering images (I) in real time from a three-dimensional virtual scene (Sc) comprising a set of objects (0), comprising: a preparation step (Si) of at least part of the objects of the scene as a first set of polygons (EP1); a first rasterization step (S2) of the first set of polygons (EP1) at a first resolution (Ri) of less than a second final resolution (Rf) of the images (I) so as to obtain a depth buffer (ZB1) information (IDB) being collected during the first rasterization step (S2) corresponding to the identifiers (PID) of the visible polygons of the first set of polygons (EP1), that is to say to the polygons at the origin of at least one fragment (Fr) of the first depth buffer (ZB1), so as to define a second set of polygons (EP2) among the first set of polygons (EP1); and a second rasterization step (S4) of the second set of polygons (EP2) at the second final resolution (Rf) of the images (I). 2. Procédé de rendu d'images (I) selon la revendication 1, 20 comprenant une étape de calcul de masquage (S5) destinée à déterminer les objets visibles en fonction de la visibilité d'un volume (OBB) englobant l'objet (0).An image rendering method (I) according to claim 1, comprising a masking calculation step (S5) for determining the visible objects according to the visibility of a volume (OBB) encompassing the object ( 0). 3. Procédé selon la revendication 2, dans lequel l'état visible ou invisible d'un objet (0) est déterminé pour une image donnée (I) sur la base du 25 rendu d'une image (I) précédente.The method of claim 2, wherein the visible or invisible state of an object (0) is determined for a given image (I) based on the rendering of a previous image (I). 4. Procédé selon l'une des revendications précédentes, dans lequel l'étape de préparation (Si) comprend une étape de division de l'image (I) en tuiles (Tl), un sous ensemble (SEP1) de polygones du premier ensemble (EP1) étant défini correspondant aux polygones susceptibles d'être visibles dans 30 chaque tuile (Tl).4. Method according to one of the preceding claims, wherein the preparation step (Si) comprises a step of dividing the image (I) into tiles (Tl), a subset (SEP1) of polygons of the first set (EP1) being defined corresponding to the polygons likely to be visible in each tile (Tl). 5. Procédé selon l'une des revendications précédentes, dans lequel lors de la première étape de rastérisation (S1) : - le calcul du tampon de profondeur (ZB1) inclut la détermination pour au moins une tuile (Tl) d'une valeur de profondeur maximum (Zmax) 35 lorsque la tuile (Tl) est remplie.- on compare la profondeur maximale (Zmax) de la tuile (Tl) avec la profondeur minimale d'un polygone (Zmin), le polygone n'étant pas pris en compte si sa profondeur minimale (Zmin) est supérieure à la profondeur maximale (Zmax) de la tuile (Tl).5. Method according to one of the preceding claims, wherein during the first rasterization step (S1): the calculation of the depth buffer (ZB1) includes the determination for at least one tile (Tl) of a value of maximum depth (Zmax) 35 when the tile (Tl) is filled.- the maximum depth (Zmax) of the tile (Tl) is compared with the minimum depth of a polygon (Zmin), the polygon not being taken into account. count if its minimum depth (Zmin) is greater than the maximum depth (Zmax) of the tile (Tl). 6. Procédé selon l'une des revendications précédentes, dans lequel les polygones du premier ensemble (EP1) ou des sous-ensembles du premier ensemble sont classés par valeur croissante de profondeur minimale (Zmin).6. Method according to one of the preceding claims, wherein the polygons of the first set (EP1) or subsets of the first set are classified by increasing value of minimum depth (Zmin). 7. Procédé selon l'une des revendications précédentes, dans lequel la première étape de rastérisation (S2) comprend une étape de comparaison 10 entre un fragment (Fr) d'image (I) et le volume englobant (PBB) de la projection d'un polygone du premier ensemble (EP1) dans l'espace des images (I).7. Method according to one of the preceding claims, wherein the first rasterization step (S2) comprises a comparison step 10 between a fragment (Fr) of image (I) and the enclosing volume (PBB) of the projection of a polygon of the first set (EP1) in the space of the images (I). 8. Procédé selon la revendication 7, dans lequel une étape de comparaison entre le fragment (Fr) et les arêtes du polygone considéré est effectuée dans le cas où la comparaison entre un fragment (Fr) et la projection 15 du volume englobant (PBB) d'un polygone du premier ensemble indique que le fragment (Fr) est au moins partiellement dans le volume englobant (PBB) de la projection du polygone dans l'espace des images (I).The method of claim 7, wherein a step of comparing the fragment (Fr) with the edges of the polygon of interest is performed in the case where the comparison between a fragment (Fr) and the projection of the bounding volume (PBB). a polygon of the first set indicates that the fragment (Fr) is at least partially in the enclosing volume (PBB) of the projection of the polygon in the space of the images (I). 9. Procédé selon l'une des revendications précédentes, comprenant, entre la première étape de rastérisation (S2) et la seconde étape 20 de rastérisation (S4) une étape intermédiaire (S3) de remplissage de l'image destinée à supprimer les zones de l'image sans géométrie visible.9. Method according to one of the preceding claims, comprising, between the first rasterization step (S2) and the second rasterization step (S4) an intermediate step (S3) for filling the image intended to eliminate the zones of the image without visible geometry. 10. Procédé selon la revendication 9, dans lequel l'étape de remplissage (S3) correspond à une dilatation des polygones du second ensemble (EP2) dans l'espace des images (I). 2510. The method of claim 9, wherein the filling step (S3) corresponds to an expansion of the polygons of the second set (EP2) in the space of the images (I). 25 11. Produit programme d'ordinateur comprenant des instructions de code agencées pour mettre en oeuvre les étapes d'un procédé selon l'une des revendications 1 à 10.11. Computer program product comprising code instructions arranged to implement the steps of a method according to one of claims 1 to 10. 12. Support de données comprenant les instructions de code d'un produit programme d'ordinateur selon la revendication 11. 30A data carrier comprising the code instructions of a computer program product according to claim 11. 13. Système informatique comprenant un processeur central (CPU) et un processeur graphique (GPU) dans lequel le processeur central et/ou le processeur graphique (GPU) sont agencés pour mettre en oeuvre des instructions d'un produit programme d'ordinateur selon la revendication 11.A computer system comprising a central processor (CPU) and a graphics processor (GPU) in which the central processor and / or the graphics processor (GPU) are arranged to implement instructions of a computer program product according to the claim 11.
FR1257764A 2012-08-10 2012-08-10 METHOD OF OPTIMIZING THE EXECUTION OF A GRAPHIC PIPELINE Expired - Fee Related FR2994500B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR1257764A FR2994500B1 (en) 2012-08-10 2012-08-10 METHOD OF OPTIMIZING THE EXECUTION OF A GRAPHIC PIPELINE
PCT/FR2013/051780 WO2014023887A1 (en) 2012-08-10 2013-07-23 Real-time image-rendering method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1257764A FR2994500B1 (en) 2012-08-10 2012-08-10 METHOD OF OPTIMIZING THE EXECUTION OF A GRAPHIC PIPELINE

Publications (2)

Publication Number Publication Date
FR2994500A1 true FR2994500A1 (en) 2014-02-14
FR2994500B1 FR2994500B1 (en) 2015-10-16

Family

ID=47191921

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1257764A Expired - Fee Related FR2994500B1 (en) 2012-08-10 2012-08-10 METHOD OF OPTIMIZING THE EXECUTION OF A GRAPHIC PIPELINE

Country Status (2)

Country Link
FR (1) FR2994500B1 (en)
WO (1) WO2014023887A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105741337B (en) * 2016-02-03 2019-02-05 合肥亚歌半导体科技合伙企业(有限合伙) A kind of triangle fill method for litho machine Grid of vector data
CN115063509B (en) * 2022-08-18 2022-11-22 深圳中微电科技有限公司 Rasterization method and device based on DAA straight line representation and storage medium

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2439129A (en) * 2006-06-12 2007-12-19 Imagination Tech Ltd Managing Memory Usage for 3D Computer Graphics
US20100007662A1 (en) * 2008-06-05 2010-01-14 Arm Limited Graphics processing systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2439129A (en) * 2006-06-12 2007-12-19 Imagination Tech Ltd Managing Memory Usage for 3D Computer Graphics
US20100007662A1 (en) * 2008-06-05 2010-01-14 Arm Limited Graphics processing systems

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
J. PLATE ET AL: "Occlusion Culling for Sub- Surface Models in Geo-Scientific Applications", 2004, XP055064053, Retrieved from the Internet <URL:http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CC8QFjAA&url=http%3A%2F%2Fwww.uni-weimar.de%2Fcms%2Ffileadmin%2Fmedien%2Fvr%2Fdocuments%2Fpublications%2FOcclusionCulling_VisSym04.pdf&ei=HGefUcb8LsKJ7Abnp4GwAg&usg=AFQjCNEjLIghlaDHM9zVp3egN3wurrJhvg&bvm=bv.47008514,d.ZGU&cad=rja> [retrieved on 20130524] *
ZHANG H ET AL: "VISIBILITY CULLING USING HIERARCHICAL OCCLUSION MAPS", COMPUTER GRAPHICS PROCEEDINGS. SIGGRAPH 97. LOS ANGELES, AUG. 3 - 8, 1997; [COMPUTER GRAPHICS PROCEEDINGS. SIGGRAPH], READING, ADDISON WESLEY, US, 3 August 1997 (1997-08-03), pages 77 - 88, XP000765805, ISBN: 978-0-201-32220-0 *

Also Published As

Publication number Publication date
FR2994500B1 (en) 2015-10-16
WO2014023887A1 (en) 2014-02-13

Similar Documents

Publication Publication Date Title
US11676342B2 (en) Providing 3D data for messages in a messaging system
US11270506B2 (en) Foveated geometry tessellation
US20230005233A1 (en) Beautification techniques for 3d data in a messaging system
EP1292921B1 (en) Refinement of a three-dimensional triangular mesh
US11508135B2 (en) Augmented reality content generators including 3D data in a messaging system
KR102624635B1 (en) 3D data generation in messaging systems
US11410401B2 (en) Beautification techniques for 3D data in a messaging system
US20240048678A1 (en) Effects for 3d data in a messaging system
US20180276882A1 (en) Systems and methods for augmented reality art creation
EP2898478B1 (en) Hybrid engine for central processing unit and graphics processing unit
US20170018111A1 (en) Context-adaptive allocation of render model resources
FR2999005A1 (en) METHOD FOR RENDERING A STOCKETED FIELD IN A MASSIVE DATABASE
CN115100334B (en) Image edge tracing and image animation method, device and storage medium
EP2297705B1 (en) Method for the real-time composition of a video
FR2964775A1 (en) METHOD FOR ESTIMATING OCCULTATION IN A VIRTUAL ENVIRONMENT
FR2994500A1 (en) METHOD OF OPTIMIZING THE EXECUTION OF A GRAPHIC PIPELINE
CN112686984A (en) Rendering method, device, equipment and medium for sub-surface scattering effect
US10026213B1 (en) Filtering for 3D scene rendering using ray divergence
Silva et al. Real-time acquisition and super-resolution techniques on 3D reconstruction
US20220292762A1 (en) Learning material reconstruction from a single image
US11941782B2 (en) GPU-based lens blur rendering using depth maps
FR3004881A1 (en) METHOD FOR GENERATING AN OUTPUT VIDEO STREAM FROM A WIDE FIELD VIDEO STREAM
CN114821002B (en) AR-based interaction method and device and electronic equipment
US11875445B2 (en) Seamless image processing of a tiled image region
CN117173314A (en) Image processing method, device, equipment, medium and program product

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

CA Change of address

Effective date: 20170912

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 9

TP Transmission of property

Owner name: AKKA INGENIERIE PRODUIT, FR

Effective date: 20201228

PLFP Fee payment

Year of fee payment: 10

PLFP Fee payment

Year of fee payment: 11

ST Notification of lapse

Effective date: 20240405