FR2994500A1 - Procede d'optimisation de l'execution d'un pipeline graphique - Google Patents
Procede d'optimisation de l'execution d'un pipeline graphique Download PDFInfo
- Publication number
- FR2994500A1 FR2994500A1 FR1257764A FR1257764A FR2994500A1 FR 2994500 A1 FR2994500 A1 FR 2994500A1 FR 1257764 A FR1257764 A FR 1257764A FR 1257764 A FR1257764 A FR 1257764A FR 2994500 A1 FR2994500 A1 FR 2994500A1
- Authority
- FR
- France
- Prior art keywords
- polygons
- image
- rasterization
- depth
- tile
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 239000000872 buffer Substances 0.000 claims abstract description 51
- 238000009877 rendering Methods 0.000 claims abstract description 29
- 238000002360 preparation method Methods 0.000 claims abstract description 9
- 239000012634 fragment Substances 0.000 claims description 36
- 238000004364 calculation method Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 10
- 230000000873 masking effect Effects 0.000 claims description 9
- 102100036962 5'-3' exoribonuclease 1 Human genes 0.000 claims description 5
- 101000804879 Homo sapiens 5'-3' exoribonuclease 1 Proteins 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 10
- 238000012360 testing method Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 208000001034 Frostbite Diseases 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 101100136092 Drosophila melanogaster peng gene Proteins 0.000 description 1
- 241000102542 Kara Species 0.000 description 1
- 101100001708 Mus musculus Angptl4 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000916 dilatatory effect Effects 0.000 description 1
- 230000010339 dilation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
- G06T15/405—Hidden part removal using Z-buffer
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
La présente invention a pour objet un procédé de rendu d'images en temps-réel à partir d'une scène virtuelle en trois dimensions comprenant un ensemble d'objets, comprenant : - une étape de préparation (S1) d'au moins une partie des objets de la scène sous forme d'un premier ensemble de polygones ; - une première étape de rastérisation (S2) du premier ensemble de polygones à une première résolution inférieure à la résolution finale de l'image de façon à obtenir un premier tampon de profondeur ; des informations étant collectées lors de la première étape de rastérisation correspondant aux identifiants des polygones visibles du premier ensemble de polygones, c'est-à-dire aux polygones définissant au moins un pixel du premier tampon de profondeur, de façon à obtenir un deuxième tampon d'identifiant et de définir un second ensemble de polygones parmi le premier ensemble de polygones ; et - une seconde étape de rastérisation (S4) du second ensemble de polygones à la résolution finale de l'image.
Description
La présente invention a pour objet un procédé de rendu d'images en temps-réel à partir d'une scène virtuelle en trois dimensions comprenant un ensemble d'objets, ainsi qu'un système mettant en oeuvre un tel procédé. Plus particulièrement, la présente invention concerne un procédé 5 de rendu utilisant une étape de rastérisation. Dans la plupart des équipements informatiques existants, le rendu en temps réel est au moins partiellement effectué par des moyens d'accélération du calcul graphique, comme des processeurs graphiques GPU, qui permettent le traitement en parallèle de certaines opérations, en particulier 10 les opérations de rastérisation. Cependant, certains équipements comme les ordinateurs portables ou les téléphones portables comprennent des moyens d'accélération du calcul graphique peu perfectionnés, ce qui induit une lenteur d'utilisation et conduit à limiter l'utilisation du rendu en temps réel. 15 Il est pourtant souhaitable d'utiliser un tel type de rendu dans certaines utilisations nomades nécessitant une mobilité de l'utilisateur pour lesquelles des équipements portables sont nécessaires. Pour ce type d'utilisation nomade, l'équipement doit permettre d'explorer efficacement des scènes dynamiques et d'assurer une haute qualité 20 d'affichage des scènes, avec un rendu d'objet immobile proche de la réalité afin de permettre des manipulations virtuelles des objets. Plusieurs solutions ont déjà été proposées pour accélérer le traitement du rendu. Notamment, [Seiler et al. 2008, Larrabee : a many-core x86 25 architecture for visual computing. ACM Trans. Graph. 27, 3 (Aug.), 18 :118 :15] a présenté une architecture adaptée aux programmes de rastérisation. Cependant, l'utilisation de cette architecture spécifique implique des coûts de production importants et une portabilité limitée. Plus récemment, une approche inverse consistant à adapter le 30 pipeline graphique à l'architecture des ordinateurs existants a été adoptée, comme dans [Liu et al. 2010, Freepipe : a programmable parallel rendering architecture for efficient multi-fragment effects. In proceedings of the 2010 ACM SIGGRAPH symposium on Interactive 3D Graphics and game, ACM, New York, NY, USA, 13D'10, 75-82] et [Laine et Karas 2011, T. 2011. High- 35 performance software rasterization on gpus. In Proceedings of the ACM SIGGRAPH Symposium on High Performance Graphics, ACM, New York, NY, USA, HPG '11, 79-88]. Ces deux documents présentent une plateforme de programmation et de calcul parallèle connue sous le nom de CUDATM basée sur les 5 processeurs graphiques actuels. [Peng et Cao 2012, A GPU-based Approach for Massive Mode! Rendering with Frame-to-Frame Coherence. Computer Graphics Forum 31, 2, 393-402] introduisent une approche de CPU/GPU hybride basée sur l'échange minimaliste de données entre le processeur central CPU et le processeur 10 graphique GPU, en utilisant la cohérence des trames successives sur un processeur graphique GPU haut de gamme. Néanmoins, ces processeurs graphiques GPU haut de gamme ne sont pas présents dans la majorité des équipements mobiles, ce qui limite une possible utilisation de cette technique dans la plupart des équipements 15 mobiles. La société EA Digital Illusions CE (CE) [Andersson 2009, Parallel graphics in frostbite - Current &Future. Course Notes SIGGRAPH 2009] a créé un moteur de jeu nommée « Frostbite Engine » basé sur un pipeline hybride pour leur multi-plateforme, en particulier pour la console de jeux PlayStation e. 20 Cependant, ce pipeline graphique utilise pour une étape de calcul de masquage, des géométries supplémentaires préprogrammées afin de calculer efficacement les objets masqués, ce qui implique la mise en oeuvre d'un traitement spécifique pour chaque nouvelle scène. La présente invention a pour but de résoudre tout ou partie des 25 inconvénients mentionnés ci-dessus en proposant un pipeline graphique hybride qui puisse exploiter efficacement les processeurs disponibles sur un ordinateur actuel, à savoir le processeur graphique dit GPU et le processeur central dit CPU de manière à permettre un rendu en temps réel de scènes complexes, par exemple dans des utilisations nomades, même sur des 30 équipements bas de gamme. A cet effet, la présente invention concerne un procédé de rendu d'images en temps-réel à partir d'une scène virtuelle en trois dimensions comprenant un ensemble d'objets, comportant : - une étape de préparation d'au moins une partie des objets de la 35 scène sous forme d'un premier ensemble de polygones ; - une première étape de rastérisation du premier ensemble de polygones à une première résolution inférieure à une seconde résolution finale des images de façon à obtenir un tampon de profondeur ; des informations étant collectées lors de la première étape de rastérisation correspondant aux identifiants des polygones visibles du premier ensemble de polygones, c'est-à-dire aux polygones à l'origine d'au moins un fragment du premier tampon de profondeur, de façon à définir un second ensemble de polygones parmi le premier ensemble de polygones ; et - une seconde étape de rastérisation du second ensemble de 10 polygones à la seconde résolution finale des images. Cet agencement permet de réaliser les calculs sur un ensemble de polygones minimisé et suffisant pour réaliser un rendu de qualité, ce qui optimise les ressources machine, notamment en équilibrant les charges de traitement de données entre le processeur central CPU et le processeur 15 graphique GPU selon la spécialisation de chaque processeur. Par ailleurs, la performance d'un procédé de rendu est d'autant plus importante qu'il permet de diminuer la quantité de données de calcul et donc d'opérations à faire exécuter par le processeur graphique GPU. Selon un aspect de l'invention, le procédé comprend une étape de 20 calcul de masquage destinée à déterminer les objets visibles en fonction de la visibilité d'un volume englobant l'objet. Selon un aspect de l'invention, l'état visible ou invisible d'un objet est déterminé pour une image donnée sur la base du rendu d'une image précédente. 25 Ces dispositions permettent de limiter les traitements à réaliser lors de la première étape de rastérisation en réalisant un test préalable simple sur les boîtes englobantes des objets, notamment en maintenant une liste ou un tampon d'objets visibles et d'objets invisibles, et en réalisant, pour les objets invisibles, un test en comparant un volume englobant l'objet, et en particulier 30 une boîte englobante orientée, par rapport au tampon de profondeur établi pour l'image I sur la base des objets visibles. Selon un aspect de l'invention, l'étape de préparation comprend une étape de division de l'image en tuiles, un sous ensemble de polygones du premier ensemble étant défini correspondant aux polygones susceptibles d'être 35 visibles dans cette tuile.
Selon un aspect de l'invention, lors de la première étape de rastérisation : - le calcul du tampon de profondeur inclut la détermination pour au moins une tuile d'une valeur de profondeur maximum lorsque la tuile est 5 remplie. - on compare la profondeur maximale de la tuile avec la profondeur minimale d'un polygone, le polygone n'étant pas pris en compte si sa profondeur minimale est supérieure à la profondeur maximale de la tuile. Ces dispositions permettent de mettre en oeuvre un test de 10 profondeur par tuile et d'éviter la rastérisation de triangles présentant une profondeur minimale supérieure à la profondeur maximale d'une tuile remplie. Selon un aspect de l'invention, les polygones du premier ensemble ou des sous-ensembles du premier ensemble sont classés par valeur croissante de profondeur minimale. 15 Ces dispositions permettent notamment de déterminer facilement l'ensemble des triangles qui présentent une profondeur minimale supérieure à la profondeur maximale d'une tuile et d'arrêter la rastérisation d'une tuile donnée sur la base de ce critère. Selon un aspect de l'invention, la première étape de rastérisation 20 comprend une étape de comparaison entre un fragment d'image et le volume englobant de la projection d'un polygone du premier ensemble dans l'espace des images. Selon un aspect de l'invention, une étape de comparaison entre le fragment et les arêtes du polygone considéré est effectuée dans le cas où la 25 comparaison entre un fragment et la projection du volume englobant d'un polygone du premier ensemble indique que le fragment est au moins partiellement dans le volume englobant de la projection du polygone dans l'espace des images. Selon un aspect de l'invention, le procédé comprend, entre la 30 première étape de rastérisation et la seconde étape de rastérisation, une étape intermédiaire de remplissage de l'image destinée à supprimer les zones de l'image sans géométrie visible. Selon un aspect de l'invention, l'étape de remplissage correspond à une dilatation des polygones du second ensemble dans l'espace des images. 35 La présente invention concerne également un produit programme d'ordinateur comprenant des instructions de code agencées pour mettre en oeuvre les étapes d'un procédé tel que décrit précédemment et un support de données comprenant les instructions de code d'un tel produit programme d'ordinateur. La présente invention concerne également un système 5 informatique dans lequel le processeur central et/ou le processeur graphique sont agencés pour mettre en oeuvre des instructions du produit programme d'ordinateur. Selon un aspect de l'invention, le processeur central est agencé pour mettre en oeuvre des instructions d'un produit programme d'ordinateur 10 correspondant à l'étape de préparation et à la première étape de rastérisation du procédé, et le processeur graphique est agencé pour mettre en oeuvre des instructions d'un produit programme d'ordinateur correspondant à la deuxième étape de rastérisation du procédé. Selon un aspect de l'invention, le processeur central est agencé 15 pour mettre en oeuvre des instructions d'un produit programme d'ordinateur correspondant à l'étape de remplissage de trous du procédé. Selon un aspect de l'invention, le processeur graphique est agencé pour mettre en oeuvre des instructions d'un produit programme d'ordinateur correspondant à l'étape de remplissage de trous du procédé. 20 Selon un aspect de l'invention, le processeur central est agencé pour mettre en oeuvre des instructions d'un produit programme d'ordinateur correspondant à l'étape de calcul de masquage du procédé. De toute façon, l'invention sera bien comprise à l'aide de la description qui suit, en référence au dessin schématique annexé représentant, 25 à titre d'exemple non limitatif, les étapes d'un procédé selon l'invention. La figure 1 montre un ordinogramme d'une mise en oeuvre préférée du procédé selon l'invention. La figure 2 illustre une étape de préparation du procédé selon la mise en oeuvre du procédé illustré à la figure 1. 30 La figure 3 illustre une première étape de rastérisation du procédé selon la mise en oeuvre du procédé illustré à la figure 1. La figure 4 est une illustration de l'organisation des structures de données représentant le tampon de profondeur utilisée par le procédé illustré à la figure 1. 35 La figure 5 est une représentation d'un objet dans la scène.
La figure 6 est illustre une opération réalisée au cours de la première étape d rastérisation. La figure 7 illustre une étape intermédiaire du procédé selon la mise en oeuvre du procédé illustré à la figure 1.
La figure 8 est une illustration aidant à la compréhension de l'étape intermédiaire du procédé illustrée à la figure 7. La figure 9 illustre une première configuration système mettant en oeuvre le procédé selon l'invention. La figure 10 illustre une deuxième configuration système mettant 10 en oeuvre le procédé selon l'invention. La figure 11 illustre une troisième configuration système mettant en oeuvre le procédé selon l'invention. Comme illustré à la figure 1, selon un mode de mise en oeuvre, le procédé de rendu d'images I en temps-réel à partir d'une scène Sc virtuelle en 15 trois dimensions comprend : - une étape de préparation Si d'au moins une partie des objets 0 de la scène Sc sous forme d'un premier ensemble de polygones EP1. - une première étape de rastérisation S2 à une résolution intermédiaire Ri inférieure à la résolution finale Rf 20 - une étape intermédiaire de remplissage de trous S3, puis - une deuxième étape de rastérisation S4. En outre, une étape de calcul d'un masquage S5 permettant d'identifier des objets non-visibles dans une image sur la base des objets présents dans l'image précédente. 25 Dans la suite de la description, nous considérons que les polygones sont des triangles formés à partir de trois vertex, le triangle étant le type de primitive le plus utilisé pour réaliser des rendus d'images I en deux dimensions à partir d'objets 0 d'une scène Sc en trois dimensions. Toutefois, d'autres types de polygones pourraient être envisagés 30 selon des variantes de réalisation de l'invention. Chacun des objets 0 de la scène est donc formé par une pluralité de triangles, chaque triangle T étant composé de trois vertex V et associé à une normale N à la surface du triangle T représentative de l'orientation du triangle T dans la scène Sc.
Chacun des vertex V des triangles T d'un objet 0 présente des coordonnées qui peuvent être exprimées dans un repère propre à l'objet ou dans un repère orthonormé ayant pour référentiel la scène Sc. Par ailleurs, nous considérons ici que le terme image I décrit de 5 façon générique les images successives de la scène Sc définies par le procédé de rendu à partir des caractéristiques d'une caméra C. Les étapes du procédé sont décrites ci-dessous. Comme illustré à la figure 2, l'étape de préparation Si comprend une pluralité de sous étapes. 10 Ces sous étapes sont détaillées ci-après. Au cours d'une première sous étape SS1, les coordonnées de chaque vertex V sont transformées depuis l'espace orthonormé ayant pour référentiel la scène Sc vers l'espace orthonormé de coordonnées x, y, z ayant pour référentiel la position de la caméra C, puis projetées sur le plan (x, y) de 15 l'image I en conservant également une information de profondeur z associée au vertex V dans le repère ayant pour référentiel la caméra C. Chaque vertex V projeté sur le plan (x, y) s'exprime donc par ses coordonnées x, y, z. Cette première sous-étape SS1 permet donc après cette 20 transformation d'obtenir une première liste de triangles T d'objets 0, les vertex V de ces triangles T étant exprimés dans le repère ayant pour référentiel l'image I avec des coordonnées x, y correspondant à une position dans l'image I et une information de profondeur z. Au cours d'une deuxième sous étape SS2, le champ de vision ou 25 frustum de la caméra est défini par un tronc pyramidal délimité par un plan proche NearP et un plan lointain FarP. Dans cette deuxième sous-étape SS2, les objets 0 potentiellement visible, c'est-à-dire qui se trouvent en tout ou partie dans le champ de vision ou frustum de la caméra C, sont marqués en tant que tels. 30 Au cours du rendu d'une image I de la scène Sc, tous les triangles T des objets 0 de la scène Sc se trouvant en dehors du champ de vision ou frustum sont quant à eux mémorisés séparément en vue d'une utilisation ultérieure, notamment lors d'une étape de calcul de masquage S5 décrite plus loin dans le texte. 35 Dans une troisième sous étape SS3, les triangles T qui ne font pas face à la caméra C sont éliminés, l'orientation des triangles T par rapport à la caméra C étant déduite à partir de la normale N à la surface de chaque triangle T dans le repère ayant pour référentiel la caméra C. Dans une quatrième sous étape SS4, les triangles T dits dégénérés, c'est-à-dire présentant des surfaces nulles ou trop aplaties dans le 5 repère ayant pour référentiel l'image I sont eux aussi éliminés. Ces triangles T sont éliminés en convertissant les coordonnées réelles (x, y) de chaque vertex V en coordonnées entières du plus proche fragment Fr de l'image I, et en supprimant après cette conversion les triangles T de surface nulle ou trop faible. 10 Une seconde liste de triangles est obtenue à la fin de la quatrième sous-étape contenant les triangles de la première liste qui n'ont pas été éliminés dans les sous-étapes SS2 à SS4. Dans une cinquième sous étape SS5, l'image I est également divisée en une pluralité de tuiles Tl de même résolution déterminée. 15 Chaque tuile Tl est définie dans l'image I par un rectangle de coordonnées xmin, ymin et xmax, ymax. Chaque tuile Tl peut ainsi être recouverte en tout ou partie par des triangles T de la deuxième liste. De même, un triangle T de la deuxième liste peut recouvrir une ou 20 plusieurs tuiles Tl. Afin de déterminer facilement si tout ou partie d'un triangle T peut être contenu dans une tuile Tl, on modélise une surface englobante TSB de la projection du triangle T dans le repère ayant pour référentiel l'image I. Les coordonnées x, y de la surface englobante TSB sont 25 comparées aux coordonnées xmin, ymin et xmax, ymax de la tuile Tl pour déterminer les parties de triangle potentiellement visibles dans la tuile Tl. Ce calcul peut être réalisé simultanément pour l'ensemble des tuiles Tl de l'image I. A la fin de la cinquième sous étape SS5, on obtient donc un 30 premier ensemble EP1 de triangles T potentiellement visibles dans l'image I avec des sous-ensembles SEP1 de triangles T susceptibles d'être visibles dans une tuile Tl déterminée de l'image I. Cependant, les triangles T des sous-ensembles SEP1 ne sont que potentiellement visibles dans l'image I.
En effet, les triangles T des sous-ensembles SEP1 peuvent être situés à des profondeurs z différentes par rapport à la caméra C et présenter des recouvrements. Une partie d'un triangle T se trouvant à une profondeur z inférieure 5 peut donc occulter une partie de triangle T se trouvant à une profondeur z supérieure si leur projection dans une tuile TI de l'image I comprend un recouvrement. Afin de déterminer les parties visibles des triangles T pour chaque fragment Fr de l'image, une première étape de rastérisation S2 est réalisée sur 10 le premier ensemble EP1 de triangles T à une première résolution Ri inférieure à la résolution finale Rf de l'image I de façon à obtenir un tampon de profondeur ZB1 et un tampon d'identification des triangles visibles. A titre d'exemple, le tampon de profondeur ZB1 peut présenter une résolution deux fois inférieure à celle de l'image finale I, c'est-à-dire dont la 15 largeur et la hauteur sont la moitié de la largeur et de la hauteur, respectivement, de l'image finale I. Le détail des sous étapes de cette première étape de rastérisation est présenté sur la figure 3. Afin d'augmenter la cohérence mémoire, et comme la rastérisation 20 est réalisée par traitement en parallèle de fragments Fr de résolution 4X4 à la fois pour une utilisation efficace des fonctions SIMS, le tampon de profondeur ZB1 est stocké dans une mémoire d'une manière non-linéaire. Comme cela est représenté sur la figure 4, le tampon de profondeur ZB1 est organisé par tuiles TI, et comprend plusieurs niveaux de 25 tuiles TI. A titre d'exemple, les niveaux suivant peuvent être définis : - un premier niveau de tuiles TI comprenant 64X64 fragments du tampon de profondeur ZB1, - un deuxième niveau de tuiles TI comprenant 16X16 fragments du 30 tampon de profondeur ZB1, - un troisième niveau de tuiles TI comprenant 4X4 fragments du tampon de profondeur ZB1. Il est à noter que les tuiles TI de même niveau ne se recouvrent pas, ce qui permet un traitement en parallèle réalisé par des threads distincts. 35 Par ailleurs, dans le cas où un triangle recouvre plusieurs tuiles Tl, seule la partie de triangle T recouvrant la tuile Tl est rastérisée.
La rastérisation est réalisée de la façon suivante. Pour chaque tuile Tl du premier niveau, on considère chaque triangle T du sous-ensemble SEP se projetant sur ladite tuile. Pour chaque triangle T, tous les fragments Fr de la tuile se trouvant 5 à l'intérieur de la surface englobante TSB du triangle T sont comparés aux équations des côtés du triangle T. Pour chaque fragment Fr se trouvant à l'intérieur du triangle T, une valeur de profondeur est mémorisée dans le premier tampon de profondeur ZB1, si la profondeur courante du triangle considérée est inférieure à une 10 valeur de profondeur éventuellement déjà stockée correspondant au même Fragment. Comme illustré à la figure 3, si une valeur de profondeur est mise à jour dans le tampon de profondeur ZB1 pour un Fragment donné Fr, une information d'identification ID du triangle T correspondant à cette mise à jour 15 est enregistrée dans un tampon d'identification IDB pour ce même Fragment Fr. Il est à noter que le tampon d'identification peut présenter une structure similaire à celle du tampon de profondeur illustrée par la figure 4 et décrite ci-dessus. 20 Ainsi, au cours de cette première étape de rastérisation S2, des informations d'identification ID sont collectées, dans le tampon d'identification IDB, ces informations d'identification correspondant aux identifiants des triangles T visibles, c'est-à-dire aux triangles T définissant au moins un la valeur d'un fragment ou pixel du premier tampon de profondeur ZB1. 25 Selon un mode de réalisation, la rastérisation est réalisée par traitement de tuiles TI de 4X4 fragments Fr à la fois, chaque groupe de quatre fragments Fr étant traité en parallèle par un seul « thread » ou fil de traitement, en utilisant des fonctions SIMD permettant d'effectuer quatre opérations simultanément au cours d'un cycle de processeur central CPU. 30 Afin de minimiser les calculs à réaliser pour déterminer les triangles T visibles pour chaque fragment Fr du tampon de profondeur ZB1, un test de profondeur par tuile est mis en place. Pour permettre la réalisation de ce test, les triangles T de chaque sous ensemble SEP1 de chaque tuile TI sont classés en fonction de leur 35 profondeur minimale zmin.
Lors de la rastérisation, lorsqu'une tuile TI est remplie, c'est à dire lorsque le tampon de profondeur ZB1 comprend une information de profondeur pour chaque fragment Fr de ladite tuile Tl, une valeur correspondant à la profondeur maximale zmax présente dans le tampon de profondeur pour les fragments Fr de la tuile est déterminée. Par la suite, cette valeur zmax est comparée avec la valeur zmin de chaque triangle T n'ayant pas encore été traité. Si la valeur zmin est inférieure à la valeur zmax, une rastérisation du triangle est opérée, qui peut conduire à une mise à jour de la valeur zmax.
Si la valeur zmin du triangle est supérieure à la valeur zmax de la tuile, alors le triangle considéré ainsi que tous les triangles suivants peuvent être ignorés pour la rastérisation de la tuile considérée. Les figures 6a et 6b illustrent un exemple de mise en oeuvre de la rastérisation avec un tampon d'identification et un test de profondeur par tuile, 15 en se limitant à un cas à deux dimensions pour simplifier la compréhension. Ainsi, les tuiles Tl comme les triangles T sont représentés par des segments. La rastérisation d'une tuile Tl est réalisé en considérant les triangles T se projetant sur cette tuile en commençant par le triangle T ayant la profondeur minimale zmin en allant vers le triangle ayant la profondeur 20 minimale la plus élevée, la profondeur d'un triangle T étant déterminée à partir de la profondeur minimale zmin d'un de ces vertex V parmi les trois vertex V composant le triangle T. On projette donc d'abord le triangle Ti présentant le zmin le plus faible. Ce triangle modifie la valeur du tampon de profondeur pour des 25 Fragments Fr de la tuile Tl, et donc l'identifiant IDT1 de triangle est entré dans le tampon d'identifiants IDB pour les Fragments Fr correspondants. On projette ensuite le triangle T2 présentant un zmin2 > zmin1. Ce triangle modifie la valeur du tampon de profondeur pour des Fragments Fr de la tuile Tl, et donc l'identifiant IDT2 de triangle est entré dans le tampon 30 d'identifiants IDB pour les Fragments Fr correspondants. Par ailleurs, il apparaît que la Tuile Tl est remplie suite à la rastérisation des deux triangles Ti et T2, une information de profondeur étant présente dans le tampon de profondeur pour chaque fragment. Une première valeur de zmax est donc déterminée pour la tuile. 35 On considère ensuite un troisième triangle T3, dont la valeur zmin3 est supérieure à celle des triangles Ti et T2, mais inférieure à zmax. Ce triangle modifie la valeur du tampon de profondeur pour des Fragments Fr de la tuile Tl, et donc l'identifiant IDT3 de ce triangle est entré dans le tampon d'identifiants IDB pour les Fragments Fr correspondants. Dans le cas présenté, la rastérisation de T3 modifie la valeur de 5 zmax, ce qui est représenté par une valeur zmax'. On considère ensuite un triangle T4, dont la valeur zmin4 est supérieure à zmax'. La rastérisation de ce triangle, comme tous les suivants avec des valeurs de zm in supérieure à zmax' peut être éliminée car ceux-ci sont 10 forcément occultés par un autre triangle T. Ainsi, le tampon IDB ne contiendra que des identifiantsIDT1, IDT2 et IDT3 des trianglesT1, T2 et T3. Comme cela est illustré sur la figure 3, après avoir rastérisé tous les triangles T d'une tuile TI, une sous étape de parcours du tampon 15 d'identifiant IDB est réalisé pour chaque tuile TI pour définir un nouveau tampon par tuile des triangles visibles pour cette tuile. Ensuite, tous les tampons de triangles visibles de l'ensemble des tuiles TI sont fusionnés et les doublons correspondant à des triangles visibles sur plusieurs tuiles TI sont supprimés de façon à définir un second tampon ou 20 ensemble de polygones ou triangles EP2 visibles pour l'image I, ce qui correspond au résultat de la première étape de rastérisation. Il est à noter que les triangles T du second ensemble de triangles EP2 peuvent également être classés selon leur appartenance à un objet O. Tous les objets qui ne contiennent pas de triangles visibles sont marqués 25 comme invisible et seront traités lors de l'étape de masquage S5. Suite à la première étape de rastérisation, une étape de remplissage des trous S3 peut être réalisée. En effet, comme le traitement réalisé lors de la première étape de rastérisation 1 est réalisé à une résolution inférieure Ri, il est possible que 30 certains triangles T de petites tailles soient considérés comme dégénérés au cours de l'étape préliminaire 51 et donc supprimés lors de la première étape de rastérisation S2, ce qui peut générer des trous dans l'image I de résolution finale Rf supérieure lors de la deuxième étape de rastérisation S4. L'étape 53 de remplissage des trous destinée à supprimer les 35 zones de l'image I sans géométrie visible ou trous est illustrée à la figure 7.
Cette étape de remplissage consiste à dilater tous les triangles visibles composant l'image I. La dilatation en elle-même est réalisée en utilisant par exemple la méthode exposée dans l'article [Hasselgren, J., Akenine-Môller, T., and 5 Ohlsson, L. 2005. Conservative Rasterization. In GPU Gems 2, M. Pharr, Ed. Addison-Wesley, 677-6901. Comme cela est illustré à la figure 8, l'algorithme utilisé calcule des quadrants auquel chaque normale d'arête appartient et, en fonction de leur position, détermine un, deux ou trois vertex à insérer pour chaque vertex 10 original. Le facteur de dilatation dépend du rapport de résolution entre le tampon de profondeur ZB1 utilisé dans la première étape de rastérisation et le tampon de profondeur utilisé dans la seconde étape de rastérisation. A titre d'exemple, pour un tapon de profondeur ZB1 qui présente la moitié de la taille de la largeur et la moitié de la hauteur de l'image finale, une 15 dilatation de 0,4 de la taille de pixel est suffisante pour couvrir l'ensemble des trous et ne crée pas d'artefacts visuels significatifs en mouvement. Comme illustré à la figure 7, les nouvelles coordonnées des projections des vertex V des triangles T visibles de l'image I sont mémorisées dans un tampon de vertex VB3 pour chacun des objets 0 de l'image I.
20 Suite à cette étape de remplissage des trous, la seconde étape de rastérisation S4 à une seconde résolution correspondant à la résolution finale Rf de l'image I sur la base du second ensemble de triangle EP2 est réalisée. Ainsi, cette étape de rastérisation S4 est réalisée avec un minimum de triangles T à rastériser, ce qui augmente la vitesse du rendu de l'image I.
25 Par la suite, l'étape de calcul de masquageS5 destinée à déterminer les objets 0 potentiellement visibles à prendre en compte dans le rendu de la prochaine image est effectuée. Cette étape S5 est basée sur la cohérence temporelle entre une image I et l'image I précédente et part de l'hypothèse selon laquelle un objet 0 30 visible lors d'un rendu n sera certainement visible lors d'un rendu n+1. Il en va de même pour les objets 0 non visibles. Ainsi, l'état visible ou invisible d'un objet 0 est déterminé pour une image donnée I lors du rendu d'une image I précédente. Toutefois, pour les objets invisible, un test est réalisé en comparant 35 un volume OBB englobant l'objet 0 et en particulier une boîte englobante orientée, comme illustré à la figure 5, par rapport au tampon de profondeur établi pour l'image I sur la base des objets visibles. Ainsi, l'objet entier n'est pas testé. Cette approche assure un résultat conservatif en ce qui concerne la visibilité, tout en nécessitant la 5 rastérisation d'un faible nombre de triangles. Les sous étapes de procédés sont similaires à celle présentées dans la première étape de rastérisation. Toutefois le procédé de rastérisation utilisant les boîtes englobantes d'objets ne modifie par le tampon de profondeur mais se limite à marque l'objet comme potentiellement visible si au moins un 10 des Fragments du tampon de profondeur présente une profondeur supérieure à la profondeur de la boîte englobante. Ceci permet notamment d'arrêter la rastérisation d'un objet dès qu'un Fragment rempli la condition mentionnée ci-dessus. Comme le tampon de profondeur ZB1 est déjà rempli lorsque la 15 comparaison avec la boîte englobante OBB des objets 0 débute, il est possible de mettre en oeuvre le test de profondeur par tuile Tl décrit en référence avec la première étape de rastérisation. Si un objet est marqué comme potentiellement visible lors de cette étape de calcul de masquage par objet, il sera rendu lors de la prochaine 20 image. Il est possible que ce décalage d'une image produise un artefact de type « pop-up ». Toutefois, cet artefact correspond à la durée du rendu d'une image I et ne concerne que les premiers pixels visibles d'un objet. En maintenant une fréquence de rafraichissement proportionnelle à la vitesse de 25 la caméra, cet artefact reste quasiment imperceptible. Il est par ailleurs possible de le corriger en réalisant une étape de préparation et une première étape de rastérisation spécifique pour les nouveaux objets 0 visibles. Nous allons à présent décrire trois exemples de configurations matérielles sur lesquelles a été testée l'utilisation du procédé décrit 30 précédemment. Selon une première configuration illustrée sur la figure 9, un dispositif utilisé pour la maintenance des avions est considéré. Pour cette application, les mêmes procédures ont été utilisées depuis de nombreuses années sur le même matériel pour éviter tout problème imprévisible. Pour cette 35 raison, des ordinateurs relativement anciens et à faibles performances sont utilisés. A titre d'exemple, une architecture du type Intel® GMA est utilisée, et plus précisément un Mobile Intel@ 965 Express Chipset Family avec un processeur Intel@ Core2 duo T8300 2,4 GHz. Dans cette configuration, le processeur central exécute deux « threads » simultanément au cours d'un cycle de processeur central CPU. Toutes les étapes du procédé sont traitées par le processeur central CPU hormis la deuxième étape de rastérisation S4 qui est traitée par le processeur graphique GPU. Selon une seconde configuration illustrée sur la figure 10, des dispositifs destinés à la formation des nouvelles recrues sur un site de centrale nucléaire sont considérés. Pour cette application, des ordinateurs légers récents permettant une mobilité accrue dans des zones difficiles d'accès sont utilisés. A titre d'exemple, l'architecture cible considérée est un processeur CPU Intel Core7 1,6Ghz avec un processeur graphique GPU sur carte Intel HD Graphics 4000. Le processeur central CPU propose une technologie hyperthreading qui permet d'utiliser 8 threads en parallèle. Dans ce cas, toutes les étapes sont traitées par le processeur central CPU hormis la deuxième étape de rastérisation S4 qui est traitée par le processeur graphique GPU. Selon une troisième configuration illustrée sur la figure 11, des dispositifs destinés à la maintenance d'automobiles sont considérés. Pour cette application, des ordinateurs moins portables mais présentant des meilleures performances sont utilisés, étant donné que les tâches à réaliser demandent moins de mobilité et des lieux d'accès plus facile. A titre d'exemple, l'architecture cible considérée est un processeur CPU Intel@ Core7 1,6Ghz avec un processeur graphique GPU ATI Mobility Radeon @ HD 4830 Series. Pour cette architecture, le processeur central peut réaliser huit « threads » simultanément au cours d'un cycle de processeur central CPU. Toutefois, la rapidité du procédé devient limitée par les capacités du CPU étant donné les capacités du GPU. Ainsi, pour permettre un équilibrage de charge performant, certaines parties du procédé sont déléguées sur le GPU. En particulier, l'étape de remplissage des trous S3 et la deuxième étape de rastérisation S4 qui sont traitées par le processeur graphique GPU. Il apparaît bien entendu que les différentes mises en oeuvre du procédé de rendu détaillés ci-dessus ne constituent que des exemples de mises en oeuvre de l'invention telle que définie par les revendications ci-jointes. Des variantes de ces différentes mises en oeuvre peuvent être envisagées et les différents modes de réalisations décrits peuvent être combinés de façon aisée par l'homme du métier.
Claims (13)
- REVENDICATIONS1. Procédé de rendu d'images (I) en temps-réel à partir d'une scène (Sc) virtuelle en trois dimensions comprenant un ensemble d'objets (0), 5 comportant : - une étape de préparation (Si) d'au moins une partie des objets de la scène sous forme d'un premier ensemble de polygones (EP1) ; - une première étape de rastérisation (S2) du premier ensemble de polygones (EP1) à une première résolution (Ri) inférieure à une seconde 10 résolution finale (Rf) des images (I) de façon à obtenir un tampon de profondeur (ZB1) ;des informations (IDB) étant collectées lors de la première étape de rastérisation (S2) correspondant aux identifiants (PID) des polygones visibles du premier ensemble de polygones (EP1), c'est-à-dire aux polygones à l'origine d'au moins un fragment (Fr) du premier tampon de profondeur (ZB1), 15 de façon à définir un second ensemble de polygones (EP2) parmi le premier ensemble de polygones (EP1) ; et - une seconde étape de rastérisation (S4) du second ensemble de polygones (EP2) à la seconde résolution finale (Rf) des images (I).
- 2. Procédé de rendu d'images (I) selon la revendication 1, 20 comprenant une étape de calcul de masquage (S5) destinée à déterminer les objets visibles en fonction de la visibilité d'un volume (OBB) englobant l'objet (0).
- 3. Procédé selon la revendication 2, dans lequel l'état visible ou invisible d'un objet (0) est déterminé pour une image donnée (I) sur la base du 25 rendu d'une image (I) précédente.
- 4. Procédé selon l'une des revendications précédentes, dans lequel l'étape de préparation (Si) comprend une étape de division de l'image (I) en tuiles (Tl), un sous ensemble (SEP1) de polygones du premier ensemble (EP1) étant défini correspondant aux polygones susceptibles d'être visibles dans 30 chaque tuile (Tl).
- 5. Procédé selon l'une des revendications précédentes, dans lequel lors de la première étape de rastérisation (S1) : - le calcul du tampon de profondeur (ZB1) inclut la détermination pour au moins une tuile (Tl) d'une valeur de profondeur maximum (Zmax) 35 lorsque la tuile (Tl) est remplie.- on compare la profondeur maximale (Zmax) de la tuile (Tl) avec la profondeur minimale d'un polygone (Zmin), le polygone n'étant pas pris en compte si sa profondeur minimale (Zmin) est supérieure à la profondeur maximale (Zmax) de la tuile (Tl).
- 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).
- 7. Procédé selon l'une des revendications précédentes, dans lequel la première étape de rastérisation (S2) comprend une étape de comparaison 10 entre un fragment (Fr) d'image (I) et le volume englobant (PBB) de la projection d'un polygone du premier ensemble (EP1) dans l'espace des images (I).
- 8. Procédé selon la revendication 7, dans lequel une étape de comparaison entre le fragment (Fr) et les arêtes du polygone considéré est effectuée dans le cas où la comparaison entre un fragment (Fr) et la projection 15 du volume englobant (PBB) d'un polygone du premier ensemble indique que le fragment (Fr) est au moins partiellement dans le volume englobant (PBB) de la projection du polygone dans l'espace des images (I).
- 9. Procédé selon l'une des revendications précédentes, comprenant, entre la première étape de rastérisation (S2) et la seconde étape 20 de rastérisation (S4) une étape intermédiaire (S3) de remplissage de l'image destinée à supprimer les zones de l'image sans géométrie visible.
- 10. Procédé selon la revendication 9, dans lequel l'étape de remplissage (S3) correspond à une dilatation des polygones du second ensemble (EP2) dans l'espace des images (I). 25
- 11. Produit programme d'ordinateur comprenant des instructions de code agencées pour mettre en oeuvre les étapes d'un procédé selon l'une des revendications 1 à 10.
- 12. Support de données comprenant les instructions de code d'un produit programme d'ordinateur selon la revendication 11. 30
- 13. Système informatique comprenant un processeur central (CPU) et un processeur graphique (GPU) dans lequel le processeur central et/ou le processeur graphique (GPU) sont agencés pour mettre en oeuvre des instructions d'un produit programme d'ordinateur selon la revendication 11.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1257764A FR2994500B1 (fr) | 2012-08-10 | 2012-08-10 | Procede d'optimisation de l'execution d'un pipeline graphique |
PCT/FR2013/051780 WO2014023887A1 (fr) | 2012-08-10 | 2013-07-23 | Procédé de rendu d'image en temps réel |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR1257764A FR2994500B1 (fr) | 2012-08-10 | 2012-08-10 | Procede d'optimisation de l'execution d'un pipeline graphique |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2994500A1 true FR2994500A1 (fr) | 2014-02-14 |
FR2994500B1 FR2994500B1 (fr) | 2015-10-16 |
Family
ID=47191921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR1257764A Expired - Fee Related FR2994500B1 (fr) | 2012-08-10 | 2012-08-10 | Procede d'optimisation de l'execution d'un pipeline graphique |
Country Status (2)
Country | Link |
---|---|
FR (1) | FR2994500B1 (fr) |
WO (1) | WO2014023887A1 (fr) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105741337B (zh) * | 2016-02-03 | 2019-02-05 | 合肥亚歌半导体科技合伙企业(有限合伙) | 一种用于光刻机矢量数据栅格化的三角形填充方法 |
CN115063509B (zh) * | 2022-08-18 | 2022-11-22 | 深圳中微电科技有限公司 | 一种基于daa直线表示的光栅化方法、装置及存储介质 |
Citations (2)
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 |
-
2012
- 2012-08-10 FR FR1257764A patent/FR2994500B1/fr not_active Expired - Fee Related
-
2013
- 2013-07-23 WO PCT/FR2013/051780 patent/WO2014023887A1/fr active Application Filing
Patent Citations (2)
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)
Title |
---|
J. PLATE ET AL: "Occlusion Culling for Sub- Surface Models in Geo-Scientific Applications", 2004, XP055064053, Retrieved from the Internet <URL:http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CC8QFjAA&url=http%3A%2F%2Fwww.uni-weimar.de%2Fcms%2Ffileadmin%2Fmedien%2Fvr%2Fdocuments%2Fpublications%2FOcclusionCulling_VisSym04.pdf&ei=HGefUcb8LsKJ7Abnp4GwAg&usg=AFQjCNEjLIghlaDHM9zVp3egN3wurrJhvg&bvm=bv.47008514,d.ZGU&cad=rja> [retrieved on 20130524] * |
ZHANG H ET AL: "VISIBILITY CULLING USING HIERARCHICAL OCCLUSION MAPS", COMPUTER GRAPHICS PROCEEDINGS. SIGGRAPH 97. LOS ANGELES, AUG. 3 - 8, 1997; [COMPUTER GRAPHICS PROCEEDINGS. SIGGRAPH], READING, ADDISON WESLEY, US, 3 August 1997 (1997-08-03), pages 77 - 88, XP000765805, ISBN: 978-0-201-32220-0 * |
Also Published As
Publication number | Publication date |
---|---|
WO2014023887A1 (fr) | 2014-02-13 |
FR2994500B1 (fr) | 2015-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11676342B2 (en) | Providing 3D data for messages in a messaging system | |
US11748957B2 (en) | Generating 3D data in a messaging system | |
US11270506B2 (en) | Foveated geometry tessellation | |
EP1292921B1 (fr) | Raffinement d'un maillage triangulaire en trois dimensions | |
US11508135B2 (en) | Augmented reality content generators including 3D data in a messaging system | |
KR102624635B1 (ko) | 메시징 시스템에서의 3d 데이터 생성 | |
US11410401B2 (en) | Beautification techniques for 3D data in a messaging system | |
US20240048678A1 (en) | Effects for 3d data in a messaging system | |
US20180276882A1 (en) | Systems and methods for augmented reality art creation | |
EP2898478B1 (fr) | Moteur hybride pour processeur central et processeur graphique | |
FR2999005A1 (fr) | Procede de rendu d'un terrain stocke dans une base de donnees massive | |
WO2017011605A1 (fr) | Attribution, adaptée au contexte, de ressources de modèle de dispositif de rendu | |
CN115100334B (zh) | 一种图像描边、图像动漫化方法、设备及存储介质 | |
EP2297705B1 (fr) | Procede de composition temps reel d'une video | |
FR2964775A1 (fr) | Procede d'estimation de l'occultation dans un environnement virtuel | |
FR2994500A1 (fr) | Procede d'optimisation de l'execution d'un pipeline graphique | |
CN112686984A (zh) | 次表面散射效果的渲染方法及装置、设备、介质 | |
US11670042B2 (en) | Learning material reconstruction from a single image | |
US11941782B2 (en) | GPU-based lens blur rendering using depth maps | |
FR3004881A1 (fr) | Procede de generation d'un flux video de sortie a partir d'un flux video large champ | |
CN114821002B (zh) | 基于ar的互动方法、装置及电子设备 | |
US11875445B2 (en) | Seamless image processing of a tiled image region | |
CN117173314B (zh) | 一种图像处理方法、装置、设备、介质及程序产品 | |
Al-Rousan et al. | Interactive non-photorealistic rendering | |
CN116524564A (zh) | 虚拟形象的生成方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 5 |
|
PLFP | Fee payment |
Year of fee payment: 6 |
|
CA | Change of address |
Effective date: 20170912 |
|
PLFP | Fee payment |
Year of fee payment: 7 |
|
PLFP | Fee payment |
Year of fee payment: 9 |
|
TP | Transmission of property |
Owner name: AKKA INGENIERIE PRODUIT, FR Effective date: 20201228 |
|
PLFP | Fee payment |
Year of fee payment: 10 |
|
PLFP | Fee payment |
Year of fee payment: 11 |
|
ST | Notification of lapse |
Effective date: 20240405 |