WO2014023887A1 - Real-time image-rendering method - Google Patents

Real-time image-rendering method Download PDF

Info

Publication number
WO2014023887A1
WO2014023887A1 PCT/FR2013/051780 FR2013051780W WO2014023887A1 WO 2014023887 A1 WO2014023887 A1 WO 2014023887A1 FR 2013051780 W FR2013051780 W FR 2013051780W WO 2014023887 A1 WO2014023887 A1 WO 2014023887A1
Authority
WO
WIPO (PCT)
Prior art keywords
polygons
image
depth
rasterization
visible
Prior art date
Application number
PCT/FR2013/051780
Other languages
French (fr)
Inventor
Andra DORAN
Mathias PAULIN
Olivier GOURMEL
Abilio Machado
Marc Germain
Original Assignee
Real Fusio France
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 filed Critical Real Fusio France
Publication of WO2014023887A1 publication Critical patent/WO2014023887A1/en

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

Definitions

  • 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.
  • the present invention relates to a rendering method using a rasterization step.
  • rendering in real time is at least partially performed by graphical computing acceleration means, such as GPU graphics processors, which allow the parallel processing of certain operations, in particular rasterization.
  • graphical computing acceleration means such as GPU graphics processors, which allow the parallel processing of certain operations, in particular rasterization.
  • the equipment For this type of nomadic use, the equipment must be able to efficiently explore dynamic scenes and ensure a high quality of display of the scenes, with an immobile object rendering close to reality to allow manipulations. virtual objects.
  • 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 purpose of the present invention is to solve all or some of the disadvantages mentioned above by proposing a hybrid graphics 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. to allow a real-time rendering of complex scenes, for example in nomadic uses, even on low-end equipment.
  • 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 a portion of the objects of the scene in the form of 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
  • This arrangement makes it possible to carry out the calculations on a set of minimized and sufficient polygons 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 specialization of each processor.
  • 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.
  • the method comprises a masking calculation step for determining the visible objects as a function of the visibility of a volume encompassing the object.
  • the visible or invisible state of an object is determined for a given image based on the rendering of a previous image.
  • 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.
  • the first rasterization 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.
  • the depth buffer calculation includes the determination for at least one tile of a maximum depth value when the island is filled.
  • the maximum depth of the tile is compared with the minimum depth of a polygon, the polygon not being taken into account if its minimum depth is greater than the maximum depth of the tile.
  • the polygons of the first set or subsets of the first set are classified by increasing value of minimum depth.
  • 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 space of the images.
  • 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.
  • 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.
  • 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 implement the steps of a method as described above and a data carrier comprising the code instructions of such a produ it computer program.
  • 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.
  • the central processor is arranged to implement instructions of a computer program product corresponding to the preparation step and the first step of rasterization of the method
  • the graphics processor is arranged to implement instructions of a computer program product corresponding to the second process rasterization step.
  • the central processor is arranged to implement instructions of a computer program product corresponding to the process hole filling step.
  • the graphics processor is arranged to implement instructions of a computer program product corresponding to the process hole filling step.
  • the central processor is arranged to implement instructions of a computer program product corresponding to the masking calculation step of the method.
  • 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.
  • FIG. 3 illustrates a first step of rasterization of the method according to the implementation of the method illustrated in FIG.
  • Fig. 4 is an illustration of the organization of the data structures representing the depth buffer used by the method illustrated in Fig. 1.
  • Figure 5 is a representation of an object in the scene.
  • 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.
  • 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.
  • the real-time I-image rendering method from a three-dimensional virtual Se scene comprises:
  • a step of calculating a masking S5 to identify non-visible objects in an image based on the objects present in the previous image is also possible.
  • the polygons are triangles formed from three vertexes, the triangle being the type of primitive most used to make two-dimensional images of images I from objects O d Se scene in three dimensions.
  • Each of the objects O 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 Se.
  • Each vertex V of the triangles T of an object O has coordinates that can be expressed in a reference proper to the object or in an orthonormal frame having for reference the scene Se.
  • image I generically describes the successive images of the scene Se defined by the rendering method based on the characteristics of a camera C.
  • the preparation step S1 comprises a plurality of sub-steps.
  • a first substep SS1 the coordinates of each vertex V are transformed from the orthonormal space having for reference the scene Se towards 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 on the plane (x, y) is thus expressed by its coordinates x, y, z.
  • This first sub-step SS1 thus makes it possible, after this transformation, to obtain a first list of triangles T of objects O, the vertices V of these triangles T being expressed in the reference frame having, for reference, the image I with coordinates x, y corresponding to a position in the image I and a depth information z.
  • the field of vision or frustum of the camera is defined by a pyramidal trunk delimited by NearP close plane and farP FarP.
  • the potentially visible objects O that is to say that are wholly or partly in the field of vision or frustum of the camera C, are marked as such.
  • T O objects of the scene Being outside the field of view or frustum are stored separately for later use, especially during a masking calculation step S5 described later in the text.
  • 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 the camera C.
  • 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 that have not been eliminated in substeps SS2 to SS4.
  • 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.
  • a triangle T of the second list may cover one or more tiles T1.
  • a bounding surface TSB of the projection of the triangle T is modeled in the reference frame having as a reference image I.
  • the coordinates x, y 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 parts in the tile T1.
  • This calculation can be carried out simultaneously for all the tiles T1 of the image I.
  • the triangles T of the subsets SEP1 are only potentially visible in the image I.
  • 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 thus mask a portion of triangle T at a greater depth z if their projection in a tile T1 of the image I comprises a covering.
  • 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 a visible triangles identification buffer.
  • the depth buffer ZB1 may have a resolution that is two times smaller than that of the final image I, that is to say whose width and height are half the width and the height. , respectively, of the final image I.
  • the depth buffer ZB1 is stored in a memory in a non-random manner. -linear.
  • the depth buffer ZB1 is organized by Tl tiles, and comprises several Tl tile levels.
  • a third level of T1 tiles comprising 4X4 fragments of the ZB1 depth buffer.
  • Tl tiles of the same level do not overlap, which allows parallel processing performed by separate threads.
  • 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.
  • identification buffer may have a structure similar to that of the depth buffer illustrated in Figure 4 and described above.
  • 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 to the triangles T defining at least one the value of a fragment or pixel of the first depth buffer ZB1.
  • 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 the SIMD functions allowing four operations to be performed simultaneously during a CPU central processor cycle.
  • the triangles T of each subassembly SEP1 of each tile T1 are classified according to their minimum depth zmin.
  • a tile T1 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.
  • this value zmax is compared with the zmin value of each triangle T that has not yet been processed.
  • a triangle rasterization is performed, which may lead to an update of the zmax value.
  • the considered triangle and all subsequent triangles can be ignored for rasterization of the considered tile.
  • FIGS. 6a and 6b illustrate an example of implementation of the rasterization with an identification buffer and a tile depth test, being limited to a two-dimensional case to simplify comprehension.
  • the tiles T1 as the triangles T are represented by segments.
  • the rasterization of a Tl tile is realized by considering the triangles T projecting on this tile starting with the triangle T having the minimum depth zmin going towards 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.
  • tile T1 is filled with the rasterization of the two triangles T1 and T2, 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 whose value zmin3 is greater than that of the triangles T1 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 IDT3 identifier of this triangle is entered in the IDB ID buffer for the corresponding Fr fragments.
  • the rasterization of T3 modifies the value of zmax, which is represented by a value zmax '.
  • T4 whose value zm in4 is greater than zmax ', is then considered to be a triangle.
  • the IDB buffer will contain only identifiersIDTI, IDT2 and IDT3 of trianglesTI, T2 and T3.
  • a substep of the IDB ID buffer is realisated for each pixel T1 to define a new buffer by tile visible triangles for this tile.
  • 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 treated during the masking step S5.
  • a step of filling the holes S3 can be performed.
  • Step S3 of filling holes for removing the areas of the image I without visible geometry or holes is illustrated in Figure 7.
  • 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 set forth in the article [Hasselgren, J.-P. , Akenine-Moller, T., and Ohlsson, L. 2005. Conservative Rasterization. In GPU Gems 2, M. Pharr, Ed. Addison-Wesley, 677-690.].
  • 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.
  • 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 O of the image I.
  • the second rasterization step S4 at a second resolution corresponding to the final resolution Rf of the image I on the basis of the second set of triangle EP2 is performed.
  • this rasterization step S4 is performed with a minimum of triangles T to rasterize, which increases the rendering speed of the image I.
  • the mask calculation step S5 is used to determine the potentially visible objects O to be taken into account in the rendering of the next image.
  • This step S5 is based on the temporal coherence between an image I and the previous image I and assumes that an object O visible during a rendering n will certainly be visible during an n + 1 rendering.
  • the visible or invisible state of an object O is determined for a given image I when rendering a previous image I.
  • a test is performed by comparing an OBB volume encompassing the object O and in particular a bounding box oriented, as shown in Figure 5, with respect to the depth buffer established for the image I based on the visible objects.
  • the process substeps are similar to those presented in the first rasterization step.
  • the rasterization process using the bounding boxes of objects does not modify the depth buffer but is limited 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 box. inclusive. This makes it possible to stop the rasterization of an object as soon as a fragment fulfills the condition mentioned above.
  • this shift of an image produces a "pop-up" artifact.
  • 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 O objects.
  • a device used for aircraft maintenance is considered.
  • the same procedures have been used for many years on the same hardware to avoid unpredictable problems.
  • relatively old and low performance computers are used.
  • an architecture of the Intel® GMA type is used, and more specifically a Mobile Intel® 965 Express Chipset Family with an Intel® Core2 Duo T8300 2.4 GHz.
  • 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.
  • devices intended for training new recruits at a nuclear power plant site are considered.
  • recent lightweight computers for increased mobility in hard-to-reach areas are used.
  • the target architecture considered is an Intel Core7 1 processor, 6Ghz with a GPU graphics processor on Intel HD Graphics 4000 card.
  • the central CPU 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.
  • the target architecture considered is an Intel® Core7 processor 1, 6Ghz with a graphics GPU ATI Mobility Radeon® HD 4830 Series processor.
  • the central processor can realize eight "threads" simultaneously during a CPU core cycle.
  • the speed of the process becomes limited by the capabilities of the CPU given the capabilities of the GPU.
  • some parts of the process are delegated to the GPU.
  • the step of filling the holes S3 and the second rasterization step S4 which are processed by the graphics processor GPU.

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

The present invention relates to a method for rendering images in real time from a three-dimensional virtual scene including a set of objects, which includes: a step (S1) for preparing at least a portion of the objects of the scene in the form of a first set of polygons; a first step (S2) of rasterizing the first set of polygons at a first resolution that is lower than the final resolution of the image, so as to obtain a first depth buffer, wherein information is collected during the first rasterization step, said information corresponding to the identifiers of the visible polygons from the first set of polygons, i.e. to the polygons that define at least one pixel of the first depth buffer, so as to obtain a second identifier buffer and define a second set of polygons from the first set of polygons; and a second step (S4) for rasterizing the second set of polygons at the final resolution of the image.

Description

Procédé de rendu d'image en temps réel  Real-time image rendering method
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 œuvre un tel procédé. 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.
Plus particulièrement, la présente invention concerne un procédé de rendu utilisant une étape de rastérisation.  More particularly, the present invention relates to a rendering method using a rasterization step.
Dans la plupart des équipements informatiques existants, le rendu e n te mps 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 les opérations de rastérisation.  In most existing computer equipment, rendering in real time is at least partially performed by graphical computing acceleration means, such as GPU graphics processors, which allow the parallel processing of certain operations, in particular rasterization.
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.  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.
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.  It is however desirable to use such a type of rendering in certain nomadic uses requiring user mobility for which portable equipment is required.
Pour ce type d'util isation nomade, l'équipement doit permettre d'explorer efficacement des scènes dynamiques et d'assurer une haute qualité d'affichage des scènes, avec un rendu d'objet immobile proche de la réalité afin de permettre des manipulations virtuelles des objets.  For this type of nomadic use, the equipment must be able to efficiently explore dynamic scenes and ensure a high quality of display of the scenes, with an immobile object rendering close to reality to allow manipulations. virtual objects.
Plusieurs solutions ont déjà été proposées pour accélérer le traitement du rendu.  Several solutions have already been proposed to speed up rendering processing.
Notamment, [Seiler et al. 2008, Larrabee : a many-core x86 architecture for visual Computing. ACM Trans. Graph. 27, 3 (Aug.), 18 :1- 18 .15 ] a présenté une architecture adaptée aux programmes de rastérisation.  In particular, [Seiler et al. 2008, Larrabee: a many-core x86 architecture for visual computing. ACM Trans. Graph. 27, 3 (Aug.), 18: 1- 18 .15] presented an architecture adapted to rasterization programs.
Cependant, l'utilisation de cette architecture spécifique implique des coûts de production importants et une portabilité limitée.  However, the use of this specific architecture involves significant production costs and limited portability.
Plus récemment, une approche inverse consistant à adapter le pipeline graphique à l'architecture des ordinateurs existants a été adoptée, comme dans [Liu et al . 201 0, 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, I3D'10, 75-82] et [Laine et Karas 201 1 , T. 2011. High- 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]. More recently, an inverse approach of adapting the graphical pipeline to the architecture of existing computers has been adopted, as in [Liu et al. 201 0, Freepipe: Programmable parallel rendering architecture for efficient multi-fragment effects. ACM SIGGRAPH Symposium on Interactive 3D Graphics and Game, ACM, New York, NY, USA, I3D'10, 75-82] and [Laine and Karas 201 1, 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].
Ces deux documents présentent une plateforme de programmation et de calcul parallèle connue sous le nom de CUDA™ basée sur les processeurs graphiques actuels.  These two documents present a programming and parallel computing platform known as CUDA ™ based on current graphics processors.
[Peng et Cao 201 2, A GPU-based Approach for Massive Model Rendering with Frame-to-Frame Cohérence. 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 graphique GPU, en utilisant la cohérence des trames successives sur un processeur graphique GPU haut de gamme.  [Peng and Cao 201 2, A GPU-based Approach for Massive Rendering Model with Frame-to-Frame Consistency. Computer Graphics Forum 31, 2, 393-402] introduce a hybrid CPU / GPU approach based on minimal data exchange between the CPU core CPU and the GPU graphics processor, using the coherence of successive frames on a GPU graphics processor top of the line.
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 mobiles.  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.
La société EA Digital Illusions CE (DICE) [Andersson 2009, Parallel graphies 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 3®. EA Digital Illusions Company (DICE) [Andersson 2009, Parallel graphs 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 game console.
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 œuvre d'un traitement spécifique pour chaque nouvelle scène.  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.
La présente invention a pour but de résoudre tout ou partie des 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 équipements bas de gamme.  The purpose of the present invention is to solve all or some of the disadvantages mentioned above by proposing a hybrid graphics 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. to allow a real-time rendering of complex scenes, for example in nomadic uses, even on low-end equipment.
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 :  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:
- une étape de préparation 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 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 a step of preparing at least a portion of the objects of the scene in the form of 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
- une seconde étape de rastérisation du second ensemble de polygones à la seconde résolution finale des images.  a second step of rasterization of the second set of polygons at the second final resolution of the images.
Cet agencement permet de réaliser les calculs sur un ensemble de polygones minimisé et suffisant pour réal iser 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 graphique GPU selon la spécialisation de chaque processeur.  This arrangement makes it possible to carry out the calculations on a set of minimized and sufficient polygons 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 specialization of each processor.
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.  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.
Selon un aspect de l'invention, le procédé comprend une étape de calcul de masquage destinée à déterminer les objets visibles en fonction de la visibilité d'un volume englobant l'objet.  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.
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.  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.
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 une boîte englobante orientée, par rapport au tampon de profondeur établi pour l'image I sur la base des objets visibles.  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 bounding boxes of the objects, in particular by maintaining a list or a buffer of visible objects and invisible objects, and realizing for the invisible objects, a test 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.
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 visibles dans cette tuile. Selon un aspect de l 'invention , lors de la première étape de rastérisation : 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. According to one aspect of the invention, during the first rasterization step:
- le calcul du tampon de profondeur inclut la détermination pour au moins une tuile d'une valeur de profondeur maximum lorsque la tu ile est remplie.  - The depth buffer calculation includes the determination for at least one tile of a maximum depth value when the island is filled.
- on compare la profondeur maximale de la tuile avec la profondeur m in imale d'un polygone, le polygone n 'étant pas pris en compte si sa profondeur minimale est supérieure à la profondeur maximale de la tuile.  the maximum depth of the tile is compared with the minimum depth of a polygon, the polygon not being taken into account if its minimum depth is greater than the maximum depth of the tile.
Ces d ispositions permettent de mettre en œuvre un test de 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.  These provisions allow to implement a tile depth test and to avoid the rasterization of triangles having a minimum depth greater than the maximum depth of a filled tile.
Selon un aspect de l'invention, les polygones du premier ensemble ou des sou s-ensembles du prem ier ensemble sont classés par valeur croissante de profondeur minimale.  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.
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.  These provisions make it possible in particular to easily determine all the triangles that have a minimum depth greater than the maximum depth of a tile and to stop the rasterization of a given tile based on this criterion.
Selon un aspect de l'invention, la première étape de rastérisation 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.  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 space of the 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 comparaison entre un fragment et la projection du volume englobant d'un polygone du prem ier ensemble indique que le fragment est au moins partiellement dans le volume englobant de la projection du polygone dans l'espace des images.  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.
Selon un aspect de l'invention, le procédé comprend, entre la 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.  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.
Selon un aspect de l'invention, l'étape de remplissage correspond à une dilatation des polygones du second ensemble dans l'espace des images.  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.
La présente invention concerne également un produit programme d'ordinateur comprenant des instructions de code agencées pour mettre en œuvre 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 produ it programme d'ordinateur. The present invention also relates to a computer program product comprising code instructions arranged to implement implement the steps of a method as described above and a data carrier comprising the code instructions of such a produ it computer program.
La p rés e n te i n ve n t i o n co n ce rn e ég a l e m e n t u n systè m e informatique dans lequel le processeur central et/ou le processeur graphique sont agencés pour mettre en œuvre des instructions du produit programme d'ordinateur.  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.
Selon un aspect de l'invention, le processeur central est agencé pour mettre en œuvre des instructions d'un produ it programme d'ordinateur 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 œuvre des instructions d'un produit programme d'ordinateur correspondant à la deuxième étape de rastérisation du procédé.  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 step of rasterization of the method, and the graphics processor is arranged to implement instructions of a computer program product corresponding to the second process rasterization step.
Selon un aspect de l'invention, le processeur central est agencé pour mettre en œuvre des instructions d'un produ it programme d'ordinateur correspondant à l'étape de remplissage de trous du procédé.  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.
Selon un aspect de l'invention, le processeur graphique est agencé pour mettre en œuvre des instructions d'un produit programme d'ordinateur correspondant à l'étape de remplissage de trous du procédé.  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.
Selon un aspect de l'invention, le processeur central est agencé pour mettre en œuvre des instructions d'un produ it programme d'ordinateur correspondant à l'étape de calcul de masquage du procédé.  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.
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, à titre d'exemple non limitatif, les étapes d'un procédé selon l'invention.  In any case, the invention will be better understood from 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.
La figure 1 montre un ordinogramme d'une mise en œuvre préférée du procédé selon l'invention.  Figure 1 shows a flow chart of a preferred implementation of the method according to the invention.
La figure 2 illustre une étape de préparation du procédé selon la mise en œuvre du procédé illustré à la figure 1 .  FIG. 2 illustrates a step of preparation of the method according to the implementation of the method illustrated in FIG.
La figure 3 illustre une première étape de rastérisation du procédé selon la mise en œuvre du procédé illustré à la figure 1 .  FIG. 3 illustrates a first step of rasterization of the method according to the implementation of the method illustrated in FIG.
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 .  Fig. 4 is an illustration of the organization of the data structures representing the depth buffer used by the method illustrated in Fig. 1.
La figure 5 est une représentation d'un objet dans la scène. La figure 6 est illustre une opération réalisée au cours de la première étape d rastérisation. Figure 5 is a representation of an object in the scene. FIG. 6 illustrates an operation performed during the first rasterization step.
La figure 7 illustre une étape intermédiaire du procédé selon la mise en œuvre du procédé illustré à la figure 1 .  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.  FIG. 8 is an illustration helping to understand the intermediate step of the method illustrated in FIG. 7.
La figure 9 illustre une première configuration système mettant en œuvre le procédé selon l'invention.  FIG. 9 illustrates a first system configuration implementing the method according to the invention.
La figure 10 illustre une deuxième configuration système mettant en œuvre le procédé selon l'invention.  FIG. 10 illustrates a second system configuration implementing the method according to the invention.
La figure 1 1 illustre une troisième configuration système mettant en œuvre le procédé selon l'invention.  FIG. 11 illustrates a third system configuration implementing the method according to the invention.
Comme illustré à la figure 1 , selon un mode de mise en œuvre, le procédé de rendu d'images I en temps-réel à partir d'une scène Se virtuelle en trois dimensions comprend :  As illustrated in FIG. 1, according to one embodiment, the real-time I-image rendering method from a three-dimensional virtual Se scene comprises:
- une étape de préparation S1 d'au moins une partie des objets O de la scène Se sous forme d'un premier ensemble de polygones EP1 .  a preparation step S1 of at least a part of the objects O of the scene Se in the form of a first set of polygons EP1.
- une première étape de rastérisation S2 à une résolution intermédiaire Ri inférieure à la résolution finale Rf  a first rasterization step S2 at an intermediate resolution Ri less than the final resolution Rf
- une étape intermédiaire de remplissage de trous S3, puis an intermediate step of filling S3 holes, then
- une deuxième étape de rastérisation S4. a second rasterization step S4.
En outre, u ne étape de calcu l 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.  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.
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 O d'une scène Se en trois dimensions.  In the remainder of the description, we consider that the polygons are triangles formed from three vertexes, the triangle being the type of primitive most used to make two-dimensional images of images I from objects O d Se scene in three dimensions.
Toutefois, d'autres types de polygones pourraient être envisagés selon des variantes de réalisation de l'invention.  However, other types of polygons could be envisaged according to alternative embodiments of the invention.
Chacun des objets O 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 Se. Chacun des vertex V des triangles T d'un objet O 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 Se. Each of the objects O 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 Se. Each vertex V of the triangles T of an object O has coordinates that can be expressed in a reference proper to the object or in an orthonormal frame having for reference the scene Se.
Par ailleurs, nous considérons ici que le terme image I décrit de façon générique les images successives de la scène Se définies par le procédé de rendu à partir des caractéristiques d'une caméra C.  Moreover, we consider here that the term image I generically describes the successive images of the scene Se defined by the rendering method based on the characteristics of a camera C.
Les étapes du procédé sont décrites ci-dessous.  The process steps are described below.
Comme illustré à la figure 2, l'étape de préparation S1 comprend une pluralité de sous étapes.  As illustrated in FIG. 2, the preparation step S1 comprises a plurality of sub-steps.
Ces sous étapes sont détaillées ci-après.  These sub-steps are detailed below.
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 Se 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 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.  During a first substep SS1, the coordinates of each vertex V are transformed from the orthonormal space having for reference the scene Se towards 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.
Chaque vertex V projeté sur le plan (x, y) s'exprime donc par ses coordonnées x, y, z.  Each vertex V projected on the plane (x, y) is thus expressed by its coordinates x, y, z.
Cette prem ière sous-étape SS1 permet donc après cette transformation d'obtenir une première liste de triangles T d'objets O, 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.  This first sub-step SS1 thus makes it possible, after this transformation, to obtain a first list of triangles T of objects O, the vertices V of these triangles T being expressed in the reference frame having, for reference, the image I with coordinates x, y corresponding to a position in the image I and a depth information z.
Au cours d'une deuxième sous étape SS2, le champ de vision ou frustum de la caméra est défini par un tronc pyramidal délimité par un plan proche NearP et un plan lointain FarP.  During a second substep SS2, the field of vision or frustum of the camera is defined by a pyramidal trunk delimited by NearP close plane and farP FarP.
Dans cette deuxième sous-étape SS2, les objets O 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.  In this second substep SS2, the potentially visible objects O, that is to say that are wholly or partly in the field of vision or frustum of the camera C, are marked as such.
Au cours du rendu d'une image I de la scène Se, tous les triangles During the rendering of an image I of the scene Se, all the triangles
T des objets O de la scène Se 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. T O objects of the scene Being outside the field of view or frustum are stored separately for later use, especially during a masking calculation step S5 described later in the text.
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. 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 the camera C.
Dans u ne quatrième sou s éta pe SS4, les triangles T dits dégénérés, c'est-à-dire présentant des surfaces nulles ou trop aplaties dans le repère ayant pour référentiel l'image I sont eux aussi éliminés.  In a fourth souces SS4, the so-called degenerate triangles T, that is to say having zero or flattened surfaces in the frame referenced image I are also eliminated.
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.  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.
Une seconde liste de triangles est obtenue à la fin de la quatrième sous-étape contenant les triangles de la première l iste qui n'ont pas été éliminés dans les sous-étapes SS2 à SS4.  A second list of triangles is obtained at the end of the fourth substep containing the triangles of the first list that have not been eliminated in substeps SS2 to 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.  In a fifth substep SS5, the image I is also divided into a plurality of tiles T1 of the same determined resolution.
Chaque tuile Tl est définie dans l'image I par un rectangle de coordonnées xmin, ymin et xmax, ymax.  Each tile T1 is defined in the image I by a rectangle of coordinates xmin, ymin and xmax, ymax.
Chaque tuile Tl peut ainsi être recouverte en tout ou partie par des triangles T de la deuxième liste.  Each tile T1 can thus be covered in whole or in part by triangles T of the second list.
De même, un triangle T de la deuxième liste peut recouvrir une ou plusieurs tuiles Tl.  Similarly, a triangle T of the second list may cover one or more tiles T1.
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.  In order to easily determine whether all or part of a triangle T can be contained in a tile T1, a bounding surface TSB of the projection of the triangle T is modeled in the reference frame having as a reference image I.
Les coord on n ées x, y d e l a s u rface englobante TSB sont 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.  The coordinates x, y 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 parts in the tile T1.
Ce calcul peut être réalisé simultanément pour l'ensemble des tuiles Tl de l'image I.  This calculation can be carried out simultaneously for all the tiles T1 of the image I.
A la fin de la cinquième sous étape SS5, on obtient donc un 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.  At the end of the fifth substep SS5, we thus obtain 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 given tile T1 of the image I.
Cependant, les triangles T des sous-ensembles SEP1 ne sont que potentiellement visibles dans l'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. However, the triangles T of the subsets SEP1 are only potentially visible in the image I. In fact, the triangles T of the subassemblies SEP1 may be located at different depths z relative to the camera C and have overlaps.
Une partie d'un triangle T se trouvant à une profondeur z inférieure peut donc occulter une partie de triangle T se trouvant à une profondeur z supérieure si leur projection dans une tuile Tl de l'image I comprend un recouvrement.  A part of a triangle T at a lower depth z can thus mask a portion of triangle T at a greater depth z if their projection in a tile T1 of the image I comprises a covering.
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 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.  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 a visible triangles identification buffer.
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 largeur et la hauteur sont la moitié de la largeur et de la hauteur, respectivement, de l'image finale I.  By way of example, the depth buffer ZB1 may have a resolution that is two times smaller than that of the final image I, that is to say whose width and height are half the width and the height. , respectively, of the final image I.
Le détail des sous étapes de cette première étape de rastérisation est présenté sur la figure 3.  The details of the substeps of this first rasterization step are presented in FIG.
Afin d'augmenter la cohérence mémoire, et comme la rastérisation 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.  In order to increase the memory coherence, and since the rasterization is carried out by parallel processing of 4X4 resolution Fr fragments at a time for efficient use of the SIMS functions, the depth buffer ZB1 is stored in a memory in a non-random manner. -linear.
Comme cela est représenté sur la figure 4, le tampon de profondeur ZB1 est organisé par tuiles Tl, et comprend plusieurs niveaux de tuiles Tl.  As shown in FIG. 4, the depth buffer ZB1 is organized by Tl tiles, and comprises several Tl tile levels.
A titre d'exemple, les niveaux suivant peuvent être définis :  For example, the following levels can be defined:
- un premier niveau de tuiles Tl comprenant 64X64 fragments du tampon de profondeur ZB1 ,  a first level of tiles T1 comprising 64X64 fragments of the depth buffer ZB1,
- un deuxième niveau de tuiles Tl comprenant 16X16 fragments du tampon de profondeur ZB1 ,  a second level of tiles T1 comprising 16X16 fragments of the depth buffer ZB1,
- un troisième niveau de tuiles Tl comprenant 4X4 fragments du tampon de profondeur ZB1.  a third level of T1 tiles comprising 4X4 fragments of the ZB1 depth buffer.
Il est à noter que les tuiles Tl de même niveau ne se recouvrent pas, ce qui permet un traitement en parallèle réalisé par des threads distincts.  It should be noted that Tl tiles of the same level do not overlap, which allows parallel processing performed by separate threads.
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. La rastérisation est réalisée de la façon suivante. 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. The rasterization is carried out as follows.
Pour chaque tuile Tl du premier niveau, on considère chaque triangle T du sous-ensemble SEP se projetant sur ladite tuile.  For each tile Tl of the first level, consider each triangle T of the subassembly SEP projecting on said tile.
Pour chaque triangle T, tous les fragments Fr de la tuile se trouvant à l'intérieur de la surface englobante TSB du triangle T sont comparés aux équations des côtés du triangle T.  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.
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 valeur de profondeur éventuellement déjà stockée correspondant au même Fragment.  For each Fr Fr fragment located 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.
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 est en reg istrée dans u n tam pon d ' identification I D B po u r ce m ê m e Fragment Fr.  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 is stored in a tamper. IDB identification code for this 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.  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.
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 .  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 to the triangles T defining at least one the value of a fragment or pixel of the first depth buffer ZB1.
Selon un mode de réalisation , la rastérisation est réalisée par traitement de tuiles Tl 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 util isant des fonctions SIMD permettant d'effectuer quatre opérations simultanément au cours d'un cycle de processeur central CPU.  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 the SIMD functions allowing four operations to be performed simultaneously during a CPU central processor cycle.
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.  In order to minimize the calculations to be performed to determine the visible triangles T for each fragment Fr of the depth buffer ZB1, a tile depth test is set up.
Pour permettre la réalisation de ce test, les triangles T de chaque sous ensemble SEP1 de chaque tuile Tl sont classés en fonction de leur profondeur minimale zmin. Lors de la rastérisation, lorsqu'une tuile Tl 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. To allow the realization of this test, the triangles T of each subassembly SEP1 of each tile T1 are classified according to their minimum depth zmin. During rasterization, when a tile T1 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.
Par la suite, cette valeur zmax est comparée avec la valeur zmin de chaque triangle T n'ayant pas encore été traité.  Subsequently, this value zmax is compared with the zmin value of each triangle T that has not yet been processed.
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.  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.  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.
Les figures 6a et 6b illustrent un exemple de mise en œuvre de la rastérisation avec un tampon d'identification et un test de profondeur par tuile, 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.  FIGS. 6a and 6b illustrate an example of implementation of the rasterization with an identification buffer and a tile depth test, being limited to a two-dimensional case to simplify comprehension. Thus, the tiles T1 as the triangles T are represented by segments.
L a 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 m inimale zmin en allant vers le triangle ayant la profondeur 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.  The rasterization of a Tl tile is realized by considering the triangles T projecting on this tile starting with the triangle T having the minimum depth zmin going towards 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.
On projette donc d'abord le triangle T1 présentant le zmin le plus faible. Ce triangle mod ifie la valeur du tampon de profondeur pour des 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.  So we first project the triangle T1 with the lowest zmin. This triangle modi fi es the value of the depth buffer for Fr fragments Fr of the tile T1, and thus the triangle identifier IDT1 is entered in the IDB ID buffer for the corresponding Fr fragments.
On projette ensuite le triangle T2 présentant un zmin2 > zminl . Ce triangle modifie la valeur du tampon de profondeur pour des Fragments Fr de la tu ile Tl , et donc l'identifiant I DT2 de triangle est entré dans le tampon d'identifiants IDB pour les Fragments Fr correspondants.  Next, project the triangle T2 with zmin2> zminl. This triangle modifies the value of the depth buffer for Fragments Fr of the island T1, and thus the triangle identifier I DT2 is entered in the IDB identifier buffer for the corresponding Fr Fragments.
Par ailleurs, il apparaît que la Tuile Tl est rempl ie su ite à la rastérisation des deux triangles T1 et T2, une information de profondeur étant présente dans le tampon de profondeur pour chaque fragment.  Moreover, it appears that the tile T1 is filled with the rasterization of the two triangles T1 and T2, depth information being present in the depth buffer for each fragment.
Une première valeur de zmax est donc déterminée pour la tuile. On considère ensuite un troisième triangle T3, dont la valeur zmin3 est supérieure à celle des triangles T1 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. A first value of zmax is therefore determined for the tile. We then consider a third triangle T3, whose value zmin3 is greater than that of the triangles T1 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 IDT3 identifier of this triangle is entered in the IDB ID buffer for the corresponding Fr fragments.
Dans le cas présenté, la rastérisation de T3 modifie la valeur de zmax, ce qui est représenté par une valeur zmax'.  In the case presented, the rasterization of T3 modifies the value of zmax, which is represented by a value zmax '.
On considère ensu ite un triang le T4 , dont la valeur zm in4 est supérieure à zmax'.  T4, whose value zm in4 is greater than zmax ', is then considered to be a triangle.
La rastérisation de ce triangle, comme tous les suivants avec des valeu rs de zm in su périeure à zmax' peut être él im inée car ceux-ci sont forcément occultés par un autre triangle T.  The rasterization of this triangle, like all the others with values of zm greater than zmax ', can be eliminated because these are necessarily hidden by another triangle T.
Ainsi, le tampon IDB ne contiendra que des identifiantsIDTI , IDT2 et IDT3 des trianglesTI , T2 et T3.  Thus, the IDB buffer will contain only identifiersIDTI, IDT2 and IDT3 of trianglesTI, T2 and T3.
Comme cela est illustré sur la figure 3, après avoir rastérisé tous les triangles T d'une tu ile Tl, u n e sou s étape de parcours du tampon d'identifiant IDB est réal isé pour chaque tu ile Tl pour défin ir un nouveau tampon par tuile des triangles visibles pour cette tuile.  As illustrated in FIG. 3, after having rasterized all the triangles T of a pixel T1, a substep of the IDB ID buffer is realisated for each pixel T1 to define a new buffer by tile visible triangles for this tile.
Ensuite, tous les tampons de triangles visibles de l'ensemble des tuiles Tl sont fusionnés et les doublons correspondant à des triangles visibles sur plusieurs tuiles Tl sont supprimés de façon à définir un second tampon ou 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.  Then, all the visible triangle buffers of the set of tiles T1 are merged and the duplicates corresponding to triangles visible on several tiles T1 are deleted so as to define a second buffer or set of visible EP2 polygons or triangles for the image. I, which corresponds to the result of the first rasterization step.
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 comme invisible et seront traités lors de l'étape de masquage S5.  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 treated during the masking step S5.
Suite à la première étape de rastérisation, une étape de remplissage des trous S3 peut être réalisée.  Following the first rasterization step, a step of filling the holes S3 can be performed.
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 certains triangles T de petites tailles soient considérés comme dégénérés au cours de l'étape préliminaire S1 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.  Indeed, since the processing performed during the first rasterization step 1 is performed at a lower resolution Ri, it is possible that some small triangles T are considered degenerate during the preliminary step S1 and thus removed during the first rasterization step S2, which can generate holes in the image I of higher final resolution Rf during the second rasterization step S4.
L'étape S3 de rempl issage des trous destinée à supprimer les zones de l'image I sans géométrie visible ou trous est illustrée à la figure 7. Cette étape de remplissage consiste à dilater tous les triangles visibles composant l'image I. Step S3 of filling holes for removing the areas of the image I without visible geometry or holes is illustrated in Figure 7. This filling step consists in dilating all the visible triangles composing the 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 Ohlsson, L. 2005. Conservative Rasterization. In GPU Gems 2, M. Pharr, Ed. Addison-Wesley, 677-690.].  The dilation in itself is carried out using for example the method set forth in the article [Hasselgren, J.-P. , Akenine-Moller, T., and Ohlsson, L. 2005. Conservative Rasterization. In GPU Gems 2, M. Pharr, Ed. Addison-Wesley, 677-690.].
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 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.  As illustrated in Figure 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.
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 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.  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 the length of the image. set of holes and does not create significant visual artifacts in motion.
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 O de l'image I.  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 O of the image I.
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.  Following this step of filling the holes, the second rasterization step S4 at a second resolution corresponding to the final resolution Rf of the image I on the basis of the second set of triangle EP2 is performed.
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.  Thus, this rasterization step S4 is performed with a minimum of triangles T to rasterize, which increases the rendering speed of the image I.
Par la su ite, l'étape de calcu l de masq uageS5 destinée à déterminer les objets O potentiellement visibles à prendre en compte dans le rendu de la prochaine image est effectuée.  By following it, the mask calculation step S5 is used to determine the potentially visible objects O to be taken into account in the rendering of the next image.
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 O visible lors d'un rendu n sera certainement visible lors d'un rendu n+1 .  This step S5 is based on the temporal coherence between an image I and the previous image I and assumes that an object O visible during a rendering n will certainly be visible during an n + 1 rendering.
Il en va de même pour les objets O non visibles.  The same goes for O objects not visible.
Ainsi, l'état visible ou invisible d'un objet O est déterminé pour une image donnée I lors du rendu d'une image I précédente.  Thus, the visible or invisible state of an object O is determined for a given image I when rendering a previous image I.
Toutefois, pour les objets invisible, un test est réalisé en comparant un volume OBB englobant l'objet O 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. However, for invisible objects, a test is performed by comparing an OBB volume encompassing the object O and in particular a bounding box oriented, as shown in Figure 5, with respect to the depth buffer established for the image I based on the visible objects.
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 rastérisation d'un faible nombre de triangles.  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.
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 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.  The process substeps are similar to those presented in the first rasterization step. However, the rasterization process using the bounding boxes of objects does not modify the depth buffer but is limited 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 box. inclusive. This makes it possible to stop the rasterization of an object as soon as a fragment fulfills the condition mentioned above.
Comme le tampon de profondeur ZB1 est déjà rempli lorsque la comparaison avec la boîte englobante OBB des objets O débute, il est possible de mettre en œuvre le test de profondeur par tuile Tl décrit en référence avec la première étape de rastérisation.  Since the depth buffer ZB1 is already filled when the comparison with the OBB bounding box of the O objects begins, it is possible to implement the Tl tile depth test described with reference to the first rasterization step.
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 image.  If an object is marked as potentially visible during this object masking calculation step, it will be rendered in the next 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 rafraîchissement proportionnelle à la vitesse de la caméra, cet artéfact 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 O visibles.  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 O objects.
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 précédemment.  We will now describe three examples of hardware configurations on which the use of the previously described method has been tested.
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 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. 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 architecture of the Intel® GMA type is used, and more specifically a Mobile Intel® 965 Express Chipset Family 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.
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.  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 an Intel Core7 1 processor, 6Ghz with a GPU graphics processor on Intel HD Graphics 4000 card. The central CPU 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.
Selon une troisième configuration illustrée sur la figure 1 1 , 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 Séries. 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.  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. As an example, the target architecture considered is an Intel® Core7 processor 1, 6Ghz with a graphics GPU ATI Mobility Radeon® HD 4830 Series processor. 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.
Il apparaît bien entendu que les différentes mises en œuvre du procédé de rendu détaillés ci-dessus ne constituent que des exemples de mises en œuvre de l'invention telle que définie par les revendications ci-jointes. Des variantes de ces différentes mises en œuvre 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.  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 easily be combined by those skilled in the art.

Claims

REVENDICATIONS
1 . Procédé de rendu d'images (I) en temps-réel à partir d'une scène (Se) virtuelle en trois dimensions comprenant un ensemble d'objets (O), comportant : 1. A real-time image rendering method (I) from a three-dimensional virtual scene (Se) comprising a set of objects (O), comprising:
- 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 (EP1 ) ;  a step of preparing (S1) at least part of the objects of the scene in the form of a first set of polygons (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 résolution finale (Rf) des images (I) d e façon à obten i r u n ta m pon 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 ), de façon à définir un second ensemble de polygones (EP2) parmi le premier ensemble de polygones (EP1 ) ; et  a first rasterization step (S2) of the first set of polygons (EP1) at a first resolution (Ri) less than a second final resolution (Rf) of the images (I) so as to obtain a depth of depth (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 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
- une seconde étape de rastérisation (S4) du second ensemble de polygones (EP2) à la seconde résolution finale (Rf) des images (I).  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 rend u d ' images (I) selon la revendication 1 , comprenant une étape de calcul de masquage (S5) destinée à déterminer les objets visibles en fonction de la visibil ité d'un volu me (OBB) englobant l'objet (O).  2. An image rendering method (I) according to claim 1, comprising a masking calculation step (S5) for determining the visible objects as a function of the visibility of a volume (OBB) encompassing the object (O).
3. Procédé selon la revendication 2, dans lequel l'état visible ou invisible d'un objet (O) est déterminé pour une image donnée (I) sur la base du rendu d'une image (I) précédente.  The method of claim 2, wherein the visible or invisible state of an object (O) 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 (S1 ) 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 chaque tuile (Tl).  4. Method according to one of the preceding claims, wherein the preparation step (S1) 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 ) :  5. Method according to one of the preceding claims, wherein during the first rasterization step (S1):
- le calcul du tampon de profondeur (ZB1 ) inclut la détermination pour au moins une tu ile (Tl) d'une valeur de profondeur maximum (Zmax) lorsque la tuile (Tl) est remplie. - on compare la profondeur maximale (Zmax) de la tuile (Tl) avec la profondeur minimale d'un polygone (Zm in), le polygone n'étant pas pris en compte si sa profondeur m in imale (Zm in) est su périeure à la profondeur maximale (Zmax) de la tuile (Tl). the calculation of the depth buffer (ZB1) includes the determination for at least one island (Tl) of a maximum depth value (Zmax) when the tile (Tl) is filled. - we compare the maximum depth (Zmax) of the tile (Tl) with the minimum depth of a polygon (Zm in), the polygon not being taken into account if its maximum depth (Zm in) is higher at 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 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 step of comparison between a fragment (Fr) of image (I) and the surrounding 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 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).  8. The method according to claim 7, wherein a step of comparing the fragment (Fr) and the edges of the polygon in question is performed in the case where the comparison between a fragment (Fr) and the projection of the enclosing volume (PBB) of 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. P rocéd é se l o n l ' u n e d es reve n d i cat i o n s p récéd e n tes , comprenant, entre la première étape de rastérisation (S2) et la seconde étape de rastérisation (S4) une étape intermédiaire (S3) de rempl issage de l'image destinée à supprimer les zones de l'image sans géométrie visible.  9. A method of providing a receded solution comprising, between the first rasterization step (S2) and the second rasterization step (S4), an intermediate step (S3) of filling the image to delete areas of the image without visible geometry.
10. Procédé selon la revendication 9, d ans l eq uel l'étape de remplissage (S3) correspond à u ne d i latation des polygones d u second ensemble (EP2) dans l'espace des images (I).  10. The method according to claim 9, wherein the filling step (S3) corresponds to a distribution of the polygons of the second set (EP2) in the space of the images (I).
1 1 . Produit programme d'ordinateur comprenant des instructions de code agencées pour mettre en œuvre les étapes d'un procédé selon l'une des revendications 1 à 10.  1 1. 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 1 1 .  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 graph ique (GPU) sont agencés po u r m ettre en œ uvre d es instructions d'un produit programme d'ordinateur selon la revendication 1 1 .  13. A computer system comprising a central processor (CPU) and a graphics processor (GPU) in which the central processor and / or graphics processor (GPU) are arranged to perform instructions of a program product. computer according to claim 1 1.
PCT/FR2013/051780 2012-08-10 2013-07-23 Real-time image-rendering method WO2014023887A1 (en)

Applications Claiming Priority (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
FR12/57764 2012-08-10

Publications (1)

Publication Number Publication Date
WO2014023887A1 true WO2014023887A1 (en) 2014-02-13

Family

ID=47191921

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2013/051780 WO2014023887A1 (en) 2012-08-10 2013-07-23 Real-time image-rendering method

Country Status (2)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105741337A (en) * 2016-02-03 2016-07-06 合肥亚歌半导体科技合伙企业(有限合伙) Triangle filling method for rasterizing vector data of lithography machines
CN115063509A (en) * 2022-08-18 2022-09-16 深圳中微电科技有限公司 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 *

Cited By (4)

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

Also Published As

Publication number Publication date
FR2994500B1 (en) 2015-10-16
FR2994500A1 (en) 2014-02-14

Similar Documents

Publication Publication Date Title
US11676342B2 (en) Providing 3D data for messages in a messaging system
US20230386157A1 (en) Generating 3d data in a messaging system
Kopf et al. One shot 3d photography
CN108351864B (en) Concave geometric dense paving
EP1292921B1 (en) Refinement of a three-dimensional triangular mesh
US20180276882A1 (en) Systems and methods for augmented reality art creation
US20210065464A1 (en) Beautification techniques for 3d data in a messaging system
US11783556B2 (en) Augmented reality content generators including 3D data in a messaging system
US11457196B2 (en) Effects for 3D data in a messaging system
US10163247B2 (en) Context-adaptive allocation of render model resources
KR20220051376A (en) 3D Data Generation in Messaging Systems
FR2999005A1 (en) METHOD FOR RENDERING A STOCKETED FIELD IN A MASSIVE DATABASE
EP2898478A1 (en) Hybrid engine for central processing unit and graphics processing unit
CN115100334B (en) Image edge tracing and image animation method, device and storage medium
CN107392990A (en) Render the global illumination of 3D scenes
EP2297705B1 (en) Method for the real-time composition of a video
WO2014023887A1 (en) Real-time image-rendering method
KR20190122246A (en) Image processing methods and devices, storage media and electronic devices
Dev Mobile expressive renderings: The state of the art
FR2964775A1 (en) METHOD FOR ESTIMATING OCCULTATION IN A VIRTUAL ENVIRONMENT
US10026213B1 (en) Filtering for 3D scene rendering using ray divergence
CN112686984B (en) Rendering method, device, equipment and medium for sub-surface scattering effect
US11875445B2 (en) Seamless image processing of a tiled image region
CA2209275C (en) Method for dynamically generating synthetic images with an automatic level of detail, and device therefor
CN113908542A (en) Method and device for processing terrain data in game

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13756590

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13756590

Country of ref document: EP

Kind code of ref document: A1