Article de reference

Rendu (infographie)

Une image rendue avec POV-Ray 3.6 Une visualisation architecturale rendue dans plusieurs styles à l'aide de Blender Le rendu est le processus de génération d'une image photoréal...

Une image rendue avec POV-Ray 3.6
Une visualisation architecturale rendue dans plusieurs styles à l'aide de Blender

Le rendu est le processus de génération d'une image photoréaliste ou non photoréaliste à partir de données d'entrée telles que des modèles 3D . Le mot « rendu » (dans l'un de ses sens) désignait à l'origine la tâche effectuée par un artiste pour représenter une chose réelle ou imaginaire (l'œuvre d'art finie est également appelée « rendu »). Aujourd'hui, « rendre » signifie généralement générer une image ou une vidéo à partir d'une description précise (souvent créée par un artiste) à l'aide d'un programme informatique .

Une application logicielle ou un composant qui effectue le rendu est appelé moteur de rendu , moteur de rendu , système de rendu , moteur graphique ou simplement moteur de rendu .

On distingue le rendu en temps réel , dans lequel les images sont générées et affichées immédiatement (idéalement suffisamment rapidement pour donner l'impression d'un mouvement ou d'une animation), et le rendu hors ligne (parfois appelé pré-rendu ), dans lequel des images, ou des images de film ou de vidéo , sont générées pour une visualisation ultérieure. Le rendu hors ligne peut utiliser un moteur de rendu plus lent et de meilleure qualité. Les applications interactives telles que les jeux doivent principalement utiliser le rendu en temps réel, même si elles peuvent intégrer du contenu pré-rendu.

Le rendu peut produire des images de scènes ou d'objets définis à l'aide de coordonnées dans l'espace 3D , vus d'un point de vue particulier . Un tel rendu 3D utilise des connaissances et des idées issues de l'optique , de l'étude de la perception visuelle , des mathématiques et de l'ingénierie logicielle , et il a des applications telles que les jeux vidéo , les simulateurs , les effets visuels pour le cinéma et la télévision, la visualisation de conception et le diagnostic médical . Un rendu 3D réaliste nécessite de trouver des solutions approximatives à l' équation de rendu , qui décrit comment la lumière se propage dans un environnement.

Le rendu en temps réel utilise des algorithmes de rastérisation hautes performances qui traitent une liste de formes et déterminent quels pixels sont couverts par chaque forme. Lorsqu'un plus grand réalisme est requis (par exemple pour la visualisation architecturale ou les effets visuels ), des algorithmes pixel par pixel plus lents tels que le lancer de rayons sont utilisés à la place. (Le lancer de rayons peut également être utilisé de manière sélective pendant le rendu rastérisé pour améliorer le réalisme de l'éclairage et des reflets.) Un type de lancer de rayons appelé traçage de chemin est actuellement la technique la plus courante pour le rendu photoréaliste. Le traçage de chemin est également populaire pour générer des images non photoréalistes de haute qualité, telles que des cadres pour des films d'animation 3D. La rastérisation et le traçage de rayons peuvent tous deux être accélérés (« accélérés ») par des microprocesseurs spécialement conçus appelés GPU .

Les algorithmes de rastérisation sont également utilisés pour restituer des images contenant uniquement des formes 2D telles que des polygones et du texte . Les applications de ce type de rendu comprennent l'illustration numérique , la conception graphique , l'animation 2D , la PAO et l'affichage d' interfaces utilisateur .

Historiquement, le rendu était appelé synthèse d'image mais aujourd'hui ce terme désigne probablement la génération d'images par IA . Le terme « rendu neuronal » est parfois utilisé lorsqu'un réseau neuronal est le principal moyen de générer une image mais qu'un certain degré de contrôle sur l'image de sortie est fourni. Les réseaux neuronaux peuvent également aider au rendu sans remplacer les algorithmes traditionnels, par exemple en supprimant le bruit des images tracées par chemin.

Caractéristiques

Une image rendue peut être interprétée en termes de plusieurs caractéristiques visibles. La recherche et le développement en matière de rendu ont été largement motivés par la recherche de moyens de simuler efficacement ces caractéristiques. Certaines d'entre elles sont directement liées à des algorithmes et techniques particuliers, tandis que d'autres sont produites ensemble.

  • Ombrage – comment la couleur et la luminosité d’une surface varient avec l’éclairage
  • Cartographie de texture – une méthode d’application de détails aux surfaces
  • Bump-mapping – une méthode de simulation de bosses à petite échelle sur des surfaces
  • Brouillard/milieu participant – comment la lumière s’atténue lorsqu’elle traverse une atmosphère ou un air non clair
  • Les ombres – l’effet d’obstruction de la lumière
  • Ombres douces – obscurité variable causée par des sources lumineuses partiellement obscurcies
  • Réflexion – reflet semblable à un miroir ou très brillant
  • Transparence (optique) , transparence (graphique) ou opacité – transmission nette de la lumière à travers des objets solides
  • Translucidité – transmission hautement dispersée de la lumière à travers des objets solides
  • Réfraction – courbure de la lumière associée à la transparence
  • Diffraction – courbure, propagation et interférence de la lumière passant par un objet ou une ouverture qui perturbe le rayon
  • Éclairage indirect – surfaces éclairées par la lumière réfléchie par d’autres surfaces, plutôt que directement par une source lumineuse (également appelée illumination globale)
  • Caustiques (une forme d'éclairage indirect) – réflexion de la lumière sur un objet brillant ou focalisation de la lumière à travers un objet transparent pour produire des reflets brillants sur un autre objet
  • Profondeur de champ – les objets apparaissent flous ou hors de la mise au point lorsqu'ils sont trop loin devant ou derrière l'objet mis au point
  • Flou de mouvement – ​​les objets apparaissent flous en raison d’un mouvement à grande vitesse ou du mouvement de la caméra
  • Rendu non photoréaliste – rendu de scènes dans un style artistique, destiné à ressembler à une peinture ou à un dessin

Entrées

Avant de pouvoir restituer une scène 3D ou une image 2D, il faut la décrire de manière à ce que le logiciel de rendu puisse la comprendre. Historiquement, les entrées pour le rendu 2D et 3D étaient généralement des fichiers texte , qui sont plus faciles à modifier et à déboguer que les fichiers binaires pour les humains. Pour les graphiques 3D, les formats texte ont été largement supplantés par des formats binaires plus efficaces et par des API qui permettent aux applications interactives de communiquer directement avec un composant de rendu sans générer de fichier sur le disque (bien qu'une description de scène soit généralement toujours créée en mémoire avant le rendu).

Les algorithmes de rendu traditionnels utilisent des descriptions géométriques de scènes 3D ou d'images 2D. Les applications et algorithmes qui rendent des visualisations de données numérisées à partir du monde réel ou de simulations scientifiques peuvent nécessiter différents types de données d'entrée.

Le format PostScript (auquel on attribue souvent l'essor de la PAO ) fournit un moyen standardisé et interopérable de décrire les graphiques 2D et la mise en page . Le format Scalable Vector Graphics (SVG) est également basé sur du texte, et le format PDF utilise le langage PostScript en interne. En revanche, bien que de nombreux formats de fichiers graphiques 3D aient été standardisés (y compris les formats basés sur du texte tels que VRML et X3D ), différentes applications de rendu utilisent généralement des formats adaptés à leurs besoins, ce qui a conduit à une prolifération de formats propriétaires et ouverts, les fichiers binaires étant plus courants.

Graphiques vectoriels 2D

Une description d' image graphique vectorielle peut inclure :

Géométrie 3D

Une description de scène géométrique peut inclure :

Il existe de nombreux formats de fichiers permettant de stocker des objets 3D individuels ou des « modèles ». Ceux-ci peuvent être importés dans une scène plus vaste ou chargés à la demande par un logiciel de rendu ou des jeux. Une scène réaliste peut nécessiter des centaines d'éléments tels que des objets ménagers, des véhicules et des arbres, et les artistes 3D utilisent souvent de grandes bibliothèques de modèles. Dans la production de jeux, ces modèles (ainsi que d'autres données telles que des textures, des fichiers audio et des animations) sont appelés « actifs ».

Données volumétriques

La visualisation scientifique et technique nécessite souvent le rendu de données volumétriques générées par des analyses ou des simulations 3D . La source la plus courante de ces données est peut-être les scanners médicaux et les IRM , qui doivent être rendus à des fins de diagnostic. Les données volumétriques peuvent être extrêmement volumineuses et nécessitent des formats de données spécialisés pour les stocker efficacement, en particulier si le volume est clairsemé (avec des régions vides qui ne contiennent pas de données).

Avant le rendu, les ensembles de niveaux pour les données volumétriques peuvent être extraits et convertis en un maillage de triangles, par exemple en utilisant l' algorithme des cubes en marche . Des algorithmes ont également été développés qui fonctionnent directement avec des données volumétriques, par exemple pour restituer des représentations réalistes de la façon dont la lumière est diffusée et absorbée par les nuages ​​et la fumée, et ce type de rendu volumétrique est largement utilisé dans les effets visuels pour les films. Lors du rendu de données volumétriques à faible résolution sans interpolation, les cubes individuels ou « voxels » peuvent être visibles, un effet parfois utilisé délibérément pour les graphismes de jeux.

Photogrammétrie et numérisation

Les photographies d'objets du monde réel peuvent être incorporées dans une scène rendue en les utilisant comme textures pour des objets 3D. Les photos d'une scène peuvent également être assemblées pour créer des images panoramiques ou des cartes d'environnement , ce qui permet de restituer la scène de manière très efficace mais uniquement à partir d'un seul point de vue. La numérisation d'objets et de scènes réels à l'aide d' une lumière structurée ou d'un lidar produit des nuages ​​de points constitués des coordonnées de millions de points individuels dans l'espace, parfois accompagnés d'informations de couleur. Ces nuages ​​de points peuvent être rendus directement ou convertis en maillages avant le rendu. (Remarque : « nuage de points » fait parfois également référence à un style de rendu minimaliste qui peut être utilisé pour n'importe quelle géométrie 3D, similaire au rendu filaire.)

Approximations neuronales et champs lumineux

Une approche expérimentale plus récente consiste à décrire des scènes à l'aide de champs de radiance qui définissent la couleur, l'intensité et la direction de la lumière entrante à chaque point de l'espace. (Cela est conceptuellement similaire, mais pas identique, au champ lumineux enregistré par un hologramme .) Pour une résolution utile, la quantité de données dans un champ de radiance est si importante qu'il est impossible de la représenter directement sous forme de données volumétriques, et une fonction d'approximation doit être trouvée. Les réseaux neuronaux sont généralement utilisés pour générer et évaluer ces approximations, parfois en utilisant des images vidéo ou une collection de photographies d'une scène prises sous différents angles, comme « données d'apprentissage ».

Des algorithmes liés aux réseaux neuronaux ont récemment été utilisés pour trouver des approximations d'une scène sous forme de gaussiennes 3D . La représentation obtenue est similaire à un nuage de points , sauf qu'elle utilise des taches floues et partiellement transparentes de dimensions et d'orientations variables au lieu de points. Comme pour les champs de rayonnement neuronal , ces approximations sont souvent générées à partir de photographies ou d'images vidéo.

Sorties

Le rendu peut être affiché immédiatement à l'écran (plusieurs fois par seconde, dans le cas d'un rendu en temps réel comme dans les jeux) ou enregistré dans un format de fichier graphique raster tel que JPEG ou PNG . Les applications de rendu haut de gamme utilisent généralement le format de fichier OpenEXR , qui peut représenter des dégradés de couleurs plus fins et un éclairage à plage dynamique élevée , ce qui permet d'appliquer ultérieurement un mappage de tons ou d'autres ajustements sans perte de qualité.

Les animations rendues rapidement peuvent être enregistrées directement sous forme de fichiers vidéo, mais pour un rendu de haute qualité, les images individuelles (qui peuvent être rendues par différents ordinateurs dans un cluster ou une ferme de rendu et peuvent prendre des heures, voire des jours, à rendre) sont générées sous forme de fichiers séparés et combinées ultérieurement dans un clip vidéo.

La sortie d'un moteur de rendu comprend parfois plus que de simples valeurs de couleur RVB . Par exemple, le spectre peut être échantillonné à l'aide de plusieurs longueurs d'onde de lumière, ou des informations supplémentaires telles que la profondeur (distance par rapport à la caméra) ou le matériau de chaque point de l'image peuvent être incluses (ces données peuvent être utilisées pendant la composition ou lors de la génération de cartes de texture pour le rendu en temps réel, ou utilisées pour aider à supprimer le bruit d'une image tracée par chemin). Des informations de transparence peuvent être incluses, ce qui permet de composer des objets de premier plan rendus avec des photographies ou des vidéos. Il est également parfois utile de stocker les contributions de différentes lumières, ou d'un éclairage spéculaire et diffus, sous forme de canaux séparés, afin que l'éclairage puisse être ajusté après le rendu. Le format OpenEXR permet de stocker de nombreux canaux de données dans un seul fichier.

Techniques

Le choix de la manière de restituer une scène 3D implique généralement des compromis entre la vitesse, l'utilisation de la mémoire et le réalisme (bien que le réalisme ne soit pas toujours souhaité).Les algorithmes développés au fil des années suivent une progression souple, les méthodes les plus avancées devenant pratiques à mesure que la puissance de calcul et la capacité de mémoire augmentent. Plusieurs techniques peuvent être utilisées pour une seule image finale.

Une distinction importante est à faire entre les algorithmes d'ordre d'image , qui itèrent sur les pixels du plan d'image, et les algorithmes d'ordre d'objet , qui itèrent sur les objets de la scène. Pour les scènes simples, l'ordre des objets est généralement plus efficace, car il y a moins d'objets que de pixels.

Graphiques vectoriels 2D
Les écrans vectoriels des années 1960-1970 utilisaient la déflexion d'un faisceau d'électrons pour dessiner des segments de ligne directement sur l'écran. De nos jours, les graphiques vectoriels sont rendus par des algorithmes de rastérisation qui prennent également en charge les formes remplies. En principe, n'importe quel moteur de rendu graphique vectoriel 2D peut être utilisé pour restituer des objets 3D en les projetant d'abord sur un plan d'image 2D.
Rastérisation 3D
Adapte les algorithmes de rastérisation 2D afin qu'ils puissent être utilisés plus efficacement pour le rendu 3D, en gérant la suppression des surfaces cachées via des techniques de balayage par lignes ou de tampon z . Différents effets réalistes ou stylisés peuvent être obtenus en colorant les pixels recouverts par les objets de différentes manières. Les surfaces sont généralement divisées en maillages de triangles avant d'être rastérisées. La rastérisation est généralement synonyme de rendu « d'ordre d'objet » (comme décrit ci-dessus).
Lancer de rayons
Utilise des formules géométriques pour calculer le premier objet qu'un rayon intersecte. Il peut être utilisé pour implémenter le rendu « d'ordre d'image » en lançant un rayon pour chaque pixel et en trouvant un point correspondant dans la scène. Le lancer de rayons est une opération fondamentale utilisée à la fois à des fins graphiques et non graphiques, par exemple pour déterminer si un point est dans l'ombre ou pour vérifier ce qu'un ennemi peut voir dans un jeu .
Traçage de rayons
Simule les trajectoires de rebond de la lumière causées par la réflexion et la réfraction spéculaires , nécessitant un nombre variable d'opérations de projection de rayons pour chaque trajectoire. Les formes avancées utilisent les techniques de Monte Carlo pour restituer des effets tels que les lumières de zone, la profondeur de champ , les reflets flous et les ombres douces , mais le calcul de l'illumination globale relève généralement du domaine du traçage de trajectoire.
Radiosité
Une approche d'analyse par éléments finis qui décompose les surfaces de la scène en morceaux et estime la quantité de lumière que chaque morceau reçoit des sources lumineuses ou indirectement d'autres surfaces. Une fois l' irradiance de chaque surface connue, la scène peut être rendue à l'aide de la rastérisation ou du lancer de rayons.
Traçage de chemin
Utilise l'intégration de Monte Carlo avec une forme simplifiée de lancer de rayons, calculant la luminosité moyenne d'un échantillon des chemins possibles qu'un photon pourrait emprunter lorsqu'il se déplace d'une source lumineuse à la caméra (pour certaines images, des milliers de chemins doivent être échantillonnés par pixel ). Il a été introduit comme un moyen statistiquement impartial de résoudre l' équation de rendu , donnant au lancer de rayons une base mathématique rigoureuse.

Chacune des approches ci-dessus comporte de nombreuses variantes et certaines se chevauchent. Le traçage de chemin peut être considéré soit comme une technique distincte, soit comme un type particulier de traçage de rayons. Notez que l' utilisation de la terminologie liée au traçage de rayons et au traçage de chemin a considérablement changé au fil du temps.

Rendu d'un terrain fractal par marche de rayons

Le lancer de rayons est une famille d'algorithmes, utilisés par le lancer de rayons, pour trouver des intersections entre un rayon et un objet complexe, tel qu'un ensemble de données volumétriques ou une surface définie par une fonction de distance signée . Ce n'est pas, en soi, une méthode de rendu, mais il peut être incorporé dans le lancer de rayons et le traçage de chemin, et est utilisé par la rastérisation pour implémenter la réflexion dans l'espace écran et d'autres effets.

Une technique appelée cartographie photonique trace les chemins des photons d'une source lumineuse à un objet, accumulant des données sur l'irradiance qui sont ensuite utilisées lors du traçage de rayons conventionnel ou du traçage de chemin. Le rendu d'une scène en utilisant uniquement des rayons tracés de la source lumineuse à la caméra est peu pratique, même s'il correspond plus étroitement à la réalité, car un grand nombre de photons devraient être simulés, dont seule une infime fraction atteint réellement la caméra.

Certains auteurs appellent le traçage de rayons conventionnel le traçage de rayons « arrière » car il trace les chemins des photons en arrière depuis la caméra jusqu'à la source lumineuse, et appellent les chemins suivants depuis la source lumineuse (comme dans le mappage de photons) le traçage de rayons « avant ». Cependant, parfois, le sens de ces termes est inversé. Le traçage des rayons commençant à la source lumineuse peut également être appelé traçage de particules ou traçage de lumière , ce qui évite cette ambiguïté.

Le rendu en temps réel, y compris les graphismes de jeux vidéo, utilise généralement la rastérisation, mais la combine de plus en plus avec le lancer de rayons et le traçage de chemins. Pour permettre une illumination globale réaliste , le rendu en temps réel s'appuie souvent sur un éclairage pré-rendu (« cuit ») pour les objets stationnaires. Pour les objets en mouvement, il peut utiliser une technique appelée sondes lumineuses , dans laquelle l'éclairage est enregistré en rendant des vues omnidirectionnelles de la scène à des points choisis dans l'espace (souvent des points sur une grille pour permettre une interpolation plus facile ). Celles-ci sont similaires aux cartes d'environnement , mais utilisent généralement une très faible résolution ou une approximation telle que les harmoniques sphériques . (Remarque : Blender utilise le terme « sondes lumineuses » pour une classe plus générale de données d'éclairage préenregistrées, y compris les cartes de réflexion. )

Exemples comparant différentes techniques de rendu

Rastérisation

Une visualisation architecturale du télescope extrêmement grand de 2009, probablement rendue à l'aide d'une combinaison de techniques

Le terme rastérisation (au sens large) englobe de nombreuses techniques utilisées pour le rendu 2D et le rendu 3D en temps réel . Les films d'animation 3D étaient rendus par rastérisation avant que le lancer de rayons et le traçage de chemin ne deviennent pratiques.

Un moteur de rendu combine la rastérisation avec le traitement de la géométrie (qui n'est pas spécifique à la rastérisation) et le traitement des pixels qui calcule les valeurs de couleur RVB à placer dans le tampon d'image pour l'affichage.

Les principales tâches de rastérisation (y compris le traitement des pixels) sont :

  • Déterminer quels pixels sont couverts par chaque forme géométrique dans la scène 3D ou l'image 2D (il s'agit de l'étape de rastérisation proprement dite, au sens strict)
  • Mélange entre les couleurs et les profondeurs définies aux sommets des formes, par exemple en utilisant des coordonnées barycentriques ( interpolation )
  • Déterminer si des parties de formes sont cachées par d'autres formes, en raison d'une superposition 2D ou d'une profondeur 3D ( suppression de la surface cachée )
  • Évaluation d'une fonction pour chaque pixel recouvert par une forme ( ombrage )
  • Lissage des bords des formes pour que les pixels soient moins visibles ( anticrénelage )
  • Mélange de formes transparentes superposées ( compositing )

La rastérisation 3D fait généralement partie d'un pipeline graphique dans lequel une application fournit des listes de triangles à restituer, et le système de rendu transforme et projette leurs coordonnées, détermine quels triangles sont potentiellement visibles dans la fenêtre d'affichage et exécute les tâches de rastérisation et de traitement des pixels ci-dessus avant d'afficher le résultat final à l'écran.

Historiquement, la rastérisation 3D utilisait des algorithmes comme l' algorithme de Warnock et le rendu par balayage (également appelé « conversion par balayage »), qui peuvent gérer des polygones arbitraires et peuvent rastériser plusieurs formes simultanément. Bien que ces algorithmes soient toujours importants pour le rendu 2D, le rendu 3D divise désormais généralement les formes en triangles et les rastérise individuellement à l'aide de méthodes plus simples.

Il existe des algorithmes très performants pour la rastérisation des lignes 2D , notamment des lignes anticrénelées , ainsi que des ellipses et des triangles pleins. Un cas particulier important de rastérisation 2D est le rendu de texte , qui nécessite un anticrénelage et un arrondi soigneux des coordonnées pour éviter de déformer les formes des lettres et préserver l'espacement, la densité et la netteté.

Une fois les coordonnées 3D projetées sur le plan de l'image , la rastérisation est avant tout un problème 2D, mais la 3ème dimension nécessite la suppression des surfaces cachées . Les premiers outils d'infographie utilisaient des algorithmes géométriques ou le lancer de rayons pour supprimer les parties cachées des formes, ou utilisaient l' algorithme du peintre , qui triait les formes par profondeur (distance par rapport à la caméra) et les rendait de l'arrière vers l'avant. Le tri en profondeur a ensuite été évité en incorporant la comparaison de profondeur dans l' algorithme de rendu par balayage . L' algorithme z-buffer effectue les comparaisons indirectement en incluant une valeur de profondeur ou « z » dans le framebuffer . Un pixel n'est couvert par une forme que si la valeur z de cette forme est inférieure (indiquant plus proche de la caméra) à la valeur z actuellement dans le tampon. Le z-buffer nécessite de la mémoire supplémentaire (une ressource coûteuse à l'époque où il a été inventé) mais simplifie le code de rastérisation et permet plusieurs passes. La mémoire est désormais plus rapide et plus abondante, et un z-buffer est presque toujours utilisé pour le rendu en temps réel.

L' algorithme de base du tampon z présente l'inconvénient que chaque pixel est soit entièrement recouvert par un seul objet, soit rempli par la couleur d'arrière-plan, ce qui provoque des bords irréguliers dans l'image finale. Les premières approches d'anticrénelage ont résolu ce problème en détectant lorsqu'un pixel est partiellement recouvert par une forme et en calculant la zone couverte. Le tampon A (et d'autres techniques de sous-pixels et d'échantillonnage multiple ) résolvent le problème avec moins de précision mais avec des performances plus élevées. Pour les graphiques 3D en temps réel, il est devenu courant d'utiliser des heuristiques complexes (et même des réseaux neuronaux ) pour effectuer l'anticrénelage.

Dans la rastérisation 3D, la couleur est généralement déterminée par un pixel shader ou fragment shader , un petit programme exécuté pour chaque pixel. Le shader n'accède pas (ou ne peut pas) directement aux données 3D de la scène entière (cela serait très lent et donnerait lieu à un algorithme similaire au lancer de rayons) et diverses techniques ont été développées pour restituer des effets tels que des ombres et des reflets en utilisant uniquement le mappage de texture et plusieurs passes.

Les implémentations de rastérisation 3D plus anciennes et plus basiques ne prenaient pas en charge les shaders et utilisaient des techniques d'ombrage simples telles que l'ombrage plat (l'éclairage est calculé une fois pour chaque triangle, qui est ensuite rendu entièrement dans une seule couleur), l'ombrage Gouraud (l'éclairage est calculé à l'aide de vecteurs normaux définis aux sommets, puis les couleurs sont interpolées sur chaque triangle), ou l'ombrage Phong (les vecteurs normaux sont interpolés sur chaque triangle et l'éclairage est calculé pour chaque pixel).

Jusqu'à une époque récente, Pixar utilisait la rastérisation pour le rendu de ses films d'animation . Contrairement aux moteurs de rendu couramment utilisés pour les graphiques en temps réel, le système de rendu Reyes du logiciel RenderMan de Pixar était optimisé pour le rendu de très petits polygones (de la taille d'un pixel) et incorporait des techniques d'échantillonnage stochastique plus généralement associées au lancer de rayons .

Lancer de rayons

L'une des méthodes les plus simples pour restituer une scène 3D consiste à tester si un rayon partant du point de vue (l'« œil » ou la « caméra ») croise l'une des formes géométriques de la scène, en répétant ce test en utilisant une direction de rayon différente pour chaque pixel. Cette méthode, appelée lancer de rayons , était importante dans les premiers graphiques informatiques et constitue un élément fondamental pour les algorithmes plus avancés. Le lancer de rayons peut être utilisé pour restituer des formes définies par des opérations de géométrie solide constructive (CSG).

Les premières expériences de projection de rayons incluent les travaux d'Arthur Appel dans les années 1960. Appel a rendu les ombres en projetant un rayon supplémentaire de chaque point de surface visible vers une source lumineuse. Il a également essayé de rendre la densité d'éclairage en projetant des rayons aléatoires de la source lumineuse vers l'objet et en traçant les points d'intersection (similaire à la technique ultérieure appelée cartographie photonique ).

La marche des rayons peut être utilisée pour trouver la première intersection d'un rayon avec une forme complexe telle que cette fractale de Mandelbulb .

Lors du rendu de scènes contenant de nombreux objets, tester l'intersection d'un rayon avec chaque objet devient très coûteux. Des structures de données spéciales sont utilisées pour accélérer ce processus en permettant d'exclure rapidement un grand nombre d'objets (comme les objets derrière la caméra). Ces structures sont analogues aux index de base de données pour trouver les objets pertinents. Les plus courantes sont la hiérarchie des volumes englobants (BVH), qui stocke une boîte englobante ou une sphère pré-calculée pour chaque branche d'un arbre d'objets, et l' arbre kd qui divise récursivement l'espace en deux parties. Les GPU récents incluent l'accélération matérielle pour les tests d'intersection BVH. Les arbres kd sont un cas particulier de partitionnement de l'espace binaire , qui était fréquemment utilisé dans les premiers graphiques informatiques (il peut également générer un ordre de rastérisation pour l' algorithme du peintre ). Les octrees , une autre technique historiquement populaire, sont encore souvent utilisés pour les données volumétriques.

Les formules géométriques suffisent pour trouver l'intersection d'un rayon avec des formes telles que des sphères , des polygones et des polyèdres , mais pour la plupart des surfaces courbes, il n'existe pas de solution analytique ou l'intersection est difficile à calculer avec précision à l'aide de nombres à virgule flottante de précision limitée . Des algorithmes de recherche de racines tels que la méthode de Newton peuvent parfois être utilisés. Pour éviter ces complications, les surfaces courbes sont souvent approximées sous forme de maillages de triangles . Le rendu de volume (par exemple le rendu de nuages ​​et de fumée) et certaines surfaces telles que les fractales peuvent nécessiter un parcours de rayons au lieu d'un lancer de rayons de base.

Traçage de rayons

Spiral Sphere et Julia, détail , une image générée par ordinateur créée par l'artiste visuel Robert W. McGregor en utilisant uniquement POV-Ray 3.6 et son langage de description de scène intégré

Le lancer de rayons peut être utilisé pour restituer une image en traçant les rayons lumineux vers l'arrière à partir d'une caméra simulée. Après avoir trouvé un point sur une surface d'où provient un rayon, un autre rayon est tracé vers la source lumineuse pour déterminer si quelque chose projette une ombre sur ce point. Dans le cas contraire, un modèle de réflectance (tel que la réflectance lambertienne pour les surfaces mates ou le modèle de réflexion de Phong pour les surfaces brillantes) est utilisé pour calculer la probabilité qu'un photon arrivant de la lumière soit réfléchi vers la caméra, et cela est multiplié par la luminosité de la lumière pour déterminer la luminosité des pixels. S'il existe plusieurs sources lumineuses, les contributions de luminosité des lumières sont additionnées. Pour les images en couleur, les calculs sont répétés pour plusieurs longueurs d'onde de lumière (par exemple, rouge, vert et bleu).

Le lancer de rayons classique (également appelé lancer de rayons de style Whitted ou lancer de rayons récursif ) étend cette méthode afin qu'elle puisse restituer des miroirs et des objets transparents. Si un rayon tracé vers l'arrière depuis la caméra provient d'un point sur un miroir, la formule de réflexion de l'optique géométrique est utilisée pour calculer la direction d'où provient le rayon réfléchi, et un autre rayon est projeté vers l'arrière dans cette direction. Si un rayon provient d'une surface transparente, les rayons sont projetés vers l'arrière pour les rayons réfléchis et réfractés (en utilisant la loi de Snell pour calculer la direction réfractée), et le lancer de rayons doit donc prendre en charge un « arbre » de rayons ramifié. Dans les implémentations simples, une fonction récursive est appelée pour tracer chaque rayon.

Le lancer de rayons effectue généralement un anticrénelage en prenant la moyenne de plusieurs échantillons pour chaque pixel. Il peut également utiliser plusieurs échantillons pour des effets tels que la profondeur de champ et le flou de mouvement . Si des directions ou des temps de rayons uniformément espacés sont utilisés pour chacune de ces caractéristiques, de nombreux rayons sont nécessaires et un certain crénelage restera. Le lancer de rayons de style Cook , stochastique ou Monte Carlo évite ce problème en utilisant un échantillonnage aléatoire au lieu d'échantillons uniformément espacés. Ce type de lancer de rayons est communément appelé lancer de rayons distribué ou lancer de rayons de distribution car il échantillonne les rayons à partir de distributions de probabilité . Le lancer de rayons de distribution peut également restituer des ombres « douces » réalistes à partir de grandes lumières en utilisant un échantillon aléatoire de points sur la lumière lors du test d'ombrage, et il peut simuler l'aberration chromatique en échantillonnant plusieurs longueurs d'onde du spectre de lumière .

Les matériaux de surface réels réfléchissent de petites quantités de lumière dans presque toutes les directions car ils présentent de petites bosses et rainures (ou microscopiques). Un traceur de rayons de distribution peut simuler cela en échantillonnant les directions possibles des rayons, ce qui permet de restituer des réflexions floues à partir de surfaces brillantes et métalliques. Cependant, si cette procédure est répétée de manière récursive pour simuler un éclairage indirect réaliste, et si plusieurs échantillons sont prélevés à chaque point de la surface, l'arbre de rayons devient rapidement énorme. Un autre type de traçage de rayons, appelé traçage de chemin , gère la lumière indirecte plus efficacement, en évitant les ramifications, et garantit que la distribution de tous les chemins possibles d'une source lumineuse à la caméra est échantillonnée de manière impartiale .

Le lancer de rayons était souvent utilisé pour le rendu des reflets dans les films d'animation, jusqu'à ce que le traçage de chemin devienne la norme pour le rendu des films. Des films tels que Shrek 2 et Monsters University ont également utilisé le traçage de rayons de distribution ou le traçage de chemin pour précalculer l'éclairage indirect d'une scène ou d'une image avant de la restituer à l'aide de la rastérisation.

Les progrès de la technologie GPU ont rendu possible le traçage de rayons en temps réel dans les jeux, bien qu'il soit actuellement presque toujours utilisé en combinaison avec la rastérisation. Cela permet des effets visuels difficiles à obtenir avec la seule rastérisation, notamment la réflexion des surfaces courbes et des objets interréfléchissants, et des ombres précises sur une large plage de distances et d'orientations de surface. La prise en charge du traçage de rayons est incluse dans les versions récentes des API graphiques utilisées par les jeux, telles que DirectX , Metal et Vulkan .

Le lancer de rayons a été utilisé pour restituer des trous noirs simulés et l'apparence d'objets se déplaçant à une vitesse proche de celle de la lumière, en prenant en compte la courbure de l'espace-temps et les effets relativistes lors de la simulation des rayons lumineux.

Radiosité

Démonstration classique de la radiosité. Les surfaces sont divisées en mailles 16x16 ou 16x32. En haut : lumière directe uniquement. En bas : solution de radiosité (pour un albédo de 0,85).
En haut : la même scène avec un maillage de radiosité plus fin, lissant les patchs lors du rendu final en utilisant l'interpolation bilinéaire . En bas : la scène rendue avec le path tracing (en utilisant le moteur de rendu PBRT).

La radiosité (du nom de la quantité radiométrique du même nom ) est une méthode de rendu d'objets éclairés par la lumière rebondissant sur des surfaces rugueuses ou mates . Ce type d'éclairage est appelé lumière indirecte , éclairage d'environnement ou éclairage diffus , et le problème de son rendu réaliste est appelé illumination globale . La rastérisation et les formes de base de lancer de rayons (autres que le lancer de rayons de distribution et le lancer de chemin) ne peuvent qu'approximer grossièrement la lumière indirecte, par exemple en ajoutant une quantité d'éclairage « ambiant » uniforme choisie par l'artiste. Les techniques de radiosité sont également adaptées au rendu de scènes avec des lumières de zone telles que des panneaux d'éclairage fluorescents rectangulaires, qui sont difficiles à rastériser et à lancer de rayons traditionnel. La radiosité est considérée comme une méthode basée sur la physique , ce qui signifie qu'elle vise à simuler le flux de lumière dans un environnement à l'aide d'équations et de données expérimentales issues de la physique, mais elle suppose souvent que toutes les surfaces sont opaques et parfaitement lambertiennes , ce qui réduit le réalisme et limite son applicabilité.

Dans la méthode de radiosité originale (proposée pour la première fois en 1984) maintenant appelée radiosité classique , les surfaces et les lumières de la scène sont divisées en morceaux appelés patchs , un processus appelé maillage (cette étape en fait une méthode d'éléments finis ). Le code de rendu doit ensuite déterminer quelle fraction de la lumière émise ou réfléchie de manière diffuse (diffusée) par chaque patch est reçue par chaque autre patch. Ces fractions sont appelées facteurs de forme ou facteurs de vue (utilisés pour la première fois en ingénierie pour modéliser le transfert de chaleur radiatif ). Les facteurs de forme sont multipliés par l' albédo de la surface réceptrice et placés dans une matrice . L'éclairage de la scène peut alors être exprimé sous la forme d'une équation matricielle (ou de manière équivalente d'un système d'équations linéaires ) qui peut être résolue par des méthodes d' algèbre linéaire .

La résolution de l'équation de radiosité donne la quantité totale de lumière émise et réfléchie par chaque patch, qui est divisée par la surface pour obtenir une valeur appelée radiosité qui peut être utilisée lors de la rastérisation ou du lancer de rayons pour déterminer la couleur des pixels correspondant aux parties visibles du patch. Pour le rendu en temps réel, cette valeur (ou plus communément l' irradiance , qui ne dépend pas de l'albédo de surface local) peut être précalculée et stockée dans une texture (appelée carte d'irradiance ) ou stockée sous forme de données de vertex pour les modèles 3D. Cette fonctionnalité a été utilisée dans les logiciels de visualisation architecturale pour permettre des visites en temps réel de l'intérieur d'un bâtiment après avoir calculé l'éclairage.

La grande taille des matrices utilisées dans la radiosité classique (le carré du nombre de patchs) pose des problèmes pour les scènes réalistes. Les implémentations pratiques peuvent utiliser des itérations de Jacobi ou de Gauss-Seidel , ce qui équivaut (au moins dans le cas de Jacobi) à simuler la propagation de la lumière un rebond à la fois jusqu'à ce que la quantité de lumière restante (non encore absorbée par les surfaces) soit insignifiante. Le nombre d'itérations (rebonds) requis dépend de la scène, et non du nombre de patchs, de sorte que le travail total est proportionnel au carré du nombre de patchs (en revanche, la résolution de l'équation matricielle à l'aide de l'élimination gaussienne nécessite un travail proportionnel au cube du nombre de patchs). Les facteurs de forme peuvent être recalculés lorsqu'ils sont nécessaires, pour éviter de stocker une matrice complète en mémoire.

La qualité du rendu est souvent déterminée par la taille des patchs, par exemple des maillages très fins sont nécessaires pour représenter avec précision les bords des ombres. Une amélioration importante est la radiosité hiérarchique , qui utilise un maillage plus grossier (patchs plus grands) pour simuler le transfert de lumière entre des surfaces éloignées les unes des autres, et subdivise de manière adaptative les patchs selon les besoins. Cela permet d'utiliser la radiosité pour des scènes beaucoup plus grandes et plus complexes.

Les versions alternatives et étendues de la méthode de radiosité prennent en charge les surfaces non lambertiennes, telles que les surfaces brillantes et les miroirs, et utilisent parfois des volumes ou des « clusters » d'objets ainsi que des patchs de surface. La radiosité stochastique ou Monte Carlo utilise l'échantillonnage aléatoire de diverses manières, par exemple en prenant des échantillons de lumière incidente au lieu de l'intégrer sur tous les patchs, ce qui peut améliorer les performances mais ajoute du bruit (ce bruit peut être réduit en utilisant des itérations déterministes comme étape finale, contrairement au bruit de traçage de chemin). Les versions simplifiées et partiellement précalculées de la radiosité sont largement utilisées pour le rendu en temps réel, combinées à des techniques telles que la radiosité octree qui stocke des approximations du champ lumineux .

Traçage de chemin

Dans le cadre de l'approche connue sous le nom de rendu basé sur la physique , le traçage de chemin est devenu la technique dominante pour le rendu de scènes réalistes, y compris les effets pour les films. Par exemple, le logiciel 3D open source populaire Blender utilise le traçage de chemin dans son moteur de rendu Cycles. Les images produites à l'aide du traçage de chemin pour l'éclairage global sont généralement plus bruyantes que lors de l'utilisation de la radiosité (le principal algorithme concurrent pour l'éclairage réaliste), mais la radiosité peut être difficile à appliquer à des scènes complexes et est sujette à des artefacts qui surviennent lors de l'utilisation d'une représentation en mosaïque de l'irradiance .

Comme le lancer de rayons distribué , le traçage de chemin est une sorte de lancer de rayons stochastique ou aléatoire qui utilise l'intégration Monte Carlo ou Quasi-Monte Carlo . Il a été proposé et nommé en 1986 par Jim Kajiya dans le même article que l' équation de rendu . Kajiya a observé qu'une grande partie de la complexité du lancer de rayons distribué pouvait être évitée en ne traçant qu'un seul chemin à la fois depuis la caméra (dans l'implémentation de Kajiya, cette règle de « non-ramification » a été brisée en traçant des rayons supplémentaires de chaque point d'intersection de surface vers des points choisis au hasard sur chaque source lumineuse). Kajiya a suggéré de réduire le bruit présent dans les images de sortie en utilisant l'échantillonnage stratifié et l'échantillonnage d'importance pour prendre des décisions aléatoires telles que le choix du rayon à suivre à chaque étape d'un chemin. Même avec ces techniques, le traçage de chemin n'aurait pas été pratique pour le rendu de films, en utilisant les ordinateurs disponibles à l'époque, car le coût de calcul de la génération de suffisamment d'échantillons pour réduire la variance à un niveau acceptable était trop élevé. Monster House , le premier long métrage rendu entièrement à l'aide du traçage de chemin, n'est sorti que 20 ans plus tard.

Dans sa forme de base, le traçage de chemin est inefficace (nécessitant trop d'échantillons) pour le rendu des caustiques et des scènes où la lumière entre indirectement par des espaces étroits. Des tentatives ont été faites pour remédier à ces faiblesses dans les années 1990. Le traçage de chemin bidirectionnel présente des similitudes avec le mappage de photons , traçant les rayons de la source lumineuse et de la caméra séparément, puis trouvant des moyens de connecter ces chemins (mais contrairement au mappage de photons, il échantillonne généralement de nouveaux chemins lumineux pour chaque pixel plutôt que d'utiliser les mêmes données mises en cache pour tous les pixels). Metropolis Light Transport échantillonne les chemins en modifiant les chemins qui ont été précédemment tracés, en passant plus de temps à explorer les chemins qui sont similaires à d'autres chemins « brillants », ce qui augmente les chances de découvrir des chemins encore plus brillants. L'échantillonnage à importance multiple offre un moyen de réduire la variance lors de la combinaison d'échantillons provenant de plusieurs méthodes d'échantillonnage, en particulier lorsque certains échantillons sont beaucoup plus bruyants que les autres.

Ce travail ultérieur a été résumé et développé dans la thèse de doctorat d' Eric Veach en 1997, qui a contribué à susciter l'intérêt pour le traçage de chemin dans la communauté de l'infographie. Le moteur de rendu Arnold , sorti pour la première fois en 1998, a prouvé que le traçage de chemin était pratique pour le rendu des images de films, et qu'il existait une demande pour un rendu impartial et basé sur la physique dans l'industrie cinématographique ; d'autres moteurs de rendu de traçage de chemin commerciaux et open source ont commencé à apparaître. Le coût de calcul a été abordé par des avancées rapides dans les performances du processeur et des clusters .

La simplicité relative du traçage de chemin et sa nature de méthode de Monte Carlo (échantillonnage de centaines ou de milliers de chemins par pixel) ont rendu son implémentation sur un GPU intéressante , en particulier sur les GPU récents qui prennent en charge la technologie d'accélération du traçage de rayons tels que RTX et OptiX de Nvidia . Cependant, le traçage de chemin bidirectionnel et le transport de lumière Metropolis sont plus difficiles à implémenter efficacement sur un GPU.

Les recherches visant à améliorer le traçage de chemins se poursuivent. Les approches récentes de guidage de chemins construisent des approximations de la distribution de probabilité du champ lumineux dans chaque volume d'espace, de sorte que les chemins peuvent être échantillonnés plus efficacement. De nombreuses techniques ont été développées pour débruiter la sortie du traçage de chemins, réduisant le nombre de chemins nécessaires pour obtenir une qualité acceptable, au risque de perdre certains détails ou d'introduire des artefacts à petite échelle qui sont plus gênants que le bruit ; les réseaux neuronaux sont désormais largement utilisés à cette fin.

Rendu neuronal

Le rendu neuronal est une méthode de rendu utilisant des réseaux neuronaux artificiels . Le rendu neuronal comprend des méthodes de rendu basées sur des images qui sont utilisées pour reconstruire des modèles 3D à partir d'images en 2 dimensions. L'une de ces méthodes est la photogrammétrie , qui est une méthode dans laquelle une collection d'images sous plusieurs angles d'un objet est transformée en un modèle 3D. Des développements récents ont également été réalisés dans la génération et le rendu de modèles 3D à partir de textes et de peintures grossières, notamment par Nvidia , Google et diverses autres sociétés.

Bases scientifiques et mathématiques

L’implémentation d’un moteur de rendu réaliste comporte toujours un élément de base de simulation ou d’émulation physique – un calcul qui ressemble ou abstrait un processus physique réel.

Le terme « basé sur la physique » désigne l'utilisation de modèles physiques et d'approximations plus générales et largement acceptées en dehors du rendu. Un ensemble particulier de techniques connexes s'est progressivement imposé dans la communauté du rendu.

Les concepts de base sont relativement simples, mais difficiles à calculer ; et un algorithme ou une approche unique et élégant est difficile à trouver pour les moteurs de rendu à usage plus général. Afin de répondre aux exigences de robustesse, de précision et de praticité, une implémentation sera une combinaison complexe de différentes techniques.

La recherche en rendu s’intéresse à la fois à l’adaptation des modèles scientifiques et à leur application efficace.

Les mathématiques utilisées dans le rendu comprennent : l'algèbre linéaire , le calcul , les mathématiques numériques , le traitement du signal et les méthodes de Monte Carlo .

L'équation de rendu

Il s'agit du concept théorique et académique clé du rendu. Il constitue l'expression formelle la plus abstraite de l'aspect non perceptif du rendu. Tous les algorithmes plus complets peuvent être considérés comme des solutions à des formulations particulières de cette équation.

Signification : à une position et une direction particulières, la lumière sortante (L o ) est la somme de la lumière émise (L e ) et de la lumière réfléchie. La lumière réfléchie étant la somme de la lumière entrante (L i ) de toutes les directions, multipliée par la réflexion de surface et l'angle entrant. En reliant la lumière sortante à la lumière entrante, via un point d'interaction, cette équation représente l'ensemble du « transport de lumière » - tout le mouvement de la lumière - dans une scène.

La fonction de distribution de la réflectance bidirectionnelle

La fonction de distribution de réflectance bidirectionnelle (BRDF) exprime un modèle simple d'interaction de la lumière avec une surface comme suit :

L'interaction lumineuse est souvent approximée par des modèles encore plus simples : la réflexion diffuse et la réflexion spéculaire, bien que les deux puissent ÉGALEMENT être des BRDF.

Optique géométrique

Le rendu s'intéresse pratiquement exclusivement à l'aspect particulaire de la physique de la lumière, connu sous le nom d'optique géométrique . Traiter la lumière, à son niveau de base, comme des particules qui rebondissent est une simplification, mais appropriée : les aspects ondulatoires de la lumière sont négligeables dans la plupart des scènes et sont nettement plus difficiles à simuler. Les phénomènes ondulatoires notables incluent la diffraction (comme on le voit dans les couleurs des CD et des DVD ) et la polarisation (comme on le voit dans les écrans LCD ). Les deux types d'effets, si nécessaire, sont obtenus par un ajustement orienté vers l'apparence du modèle de réflexion.

Perception visuelle

Bien que moins étudiée, la compréhension de la perception visuelle humaine est précieuse pour le rendu. Cela est principalement dû au fait que les affichages d'images et la perception humaine ont des plages limitées. Un moteur de rendu peut simuler une large gamme de luminosité et de couleurs, mais les écrans actuels (écran de cinéma, moniteur d'ordinateur, etc.) ne peuvent pas gérer autant de choses et il faut donc supprimer ou compresser quelque chose. La perception humaine a également des limites et n'a donc pas besoin de disposer d'images à large plage pour créer du réalisme. Cela peut aider à résoudre le problème de l'adaptation des images aux écrans et, en outre, suggérer des raccourcis qui pourraient être utilisés dans la simulation de rendu, car certaines subtilités ne seront pas perceptibles. Ce sujet connexe est le mappage de tons .

Échantillonnage et filtrage

Un problème auquel tout système de rendu doit faire face, quelle que soit l'approche adoptée, est le problème de l'échantillonnage . Essentiellement, le processus de rendu tente de représenter une fonction continue de l'espace image aux couleurs en utilisant un nombre fini de pixels. En conséquence du théorème d'échantillonnage de Nyquist-Shannon (ou théorème de Kotelnikov), toute forme d'onde spatiale pouvant être affichée doit être constituée d'au moins deux pixels, ce qui est proportionnel à la résolution de l'image . En termes plus simples, cela exprime l'idée qu'une image ne peut pas afficher de détails, de pics ou de creux de couleur ou d'intensité, qui sont plus petits qu'un pixel.

Si un algorithme de rendu naïf est utilisé sans aucun filtrage, les hautes fréquences dans la fonction d'image provoqueront la présence d'un aliasing disgracieux dans l'image finale. L'aliasing se manifeste généralement par des crénelures , ou des bords irréguliers sur les objets où la grille de pixels est visible. Afin de supprimer l'aliasing, tous les algorithmes de rendu (s'ils veulent produire de belles images) doivent utiliser une sorte de filtre passe-bas sur la fonction d'image pour supprimer les hautes fréquences, un processus appelé antialiasing .

Matériel

Le rendu est généralement limité par la puissance de calcul disponible et la bande passante mémoire , et du matériel spécialisé a donc été développé pour l'accélérer (« l'accélérer »), en particulier pour le rendu en temps réel . Des fonctionnalités matérielles telles qu'un tampon d'image pour les graphiques raster sont nécessaires pour afficher la sortie du rendu de manière fluide en temps réel.

Histoire

Français À l'ère des moniteurs vectoriels (également appelés écrans calligraphiques ), une unité de traitement d'affichage (DPU) était un processeur ou un coprocesseur dédié qui maintenait une liste d'éléments visuels et les redessinait en continu sur l'écran en contrôlant un faisceau d'électrons . Les DPU avancés tels que le Line Drawing System-1 d' Evans & Sutherland (et les modèles ultérieurs produits dans les années 1980) incorporaient des fonctions de transformation de coordonnées 3D pour accélérer le rendu des images filaires . Evans & Sutherland a également fabriqué le système de projection de planétarium Digistar , qui était un écran vectoriel capable de restituer à la fois les étoiles et les graphiques filaires (les Digistar et Digistar II basés sur le vecteur ont été utilisés dans de nombreux planétariums, et quelques-uns sont peut-être encore en fonctionnement). Un prototype Digistar a été utilisé pour le rendu des champs d'étoiles en 3D pour le film Star Trek II : La Colère de Khan – certaines des premières séquences graphiques informatiques en 3D jamais vues dans un long métrage.

Le rendu graphique 3D ombré des années 1970 et du début des années 1980 était généralement mis en œuvre sur des ordinateurs à usage général, tels que le PDP-10 utilisé par les chercheurs de l'Université de l'Utah . Il était difficile d'accélérer l'utilisation de matériel spécialisé car il impliquait un pipeline d'étapes complexes, nécessitant l'adressage des données, la prise de décision et des capacités de calcul généralement fournies uniquement par les processeurs (bien que des circuits dédiés pour accélérer des opérations particulières aient été proposés ). Des superordinateurs ou des ordinateurs multi-CPU ou des clusters spécialement conçus étaient parfois utilisés pour le lancer de rayons. En 1981, James H. Clark et Marc Hannah ont conçu le Geometry Engine, une puce VLSI pour effectuer certaines des étapes du pipeline de rastérisation 3D, et ont créé la société Silicon Graphics (SGI) pour commercialiser cette technologie.

Les ordinateurs personnels et les consoles de jeux des années 1980 contenaient des coprocesseurs graphiques capables de faire défiler et de remplir des zones de l'écran, et de dessiner des sprites et des lignes, bien qu'ils ne soient pas utiles pour restituer des images réalistes. Vers la fin des années 1980, les cartes graphiques pour PC et les jeux d'arcade avec accélération du rendu 3D ont commencé à apparaître, et dans les années 1990, cette technologie est devenue courante. Aujourd'hui, même les processeurs mobiles à faible consommation intègrent généralement des fonctionnalités d'accélération graphique 3D.

Les GPU

Les accélérateurs graphiques 3D des années 1990 ont évolué vers les GPU modernes. Les GPU sont des processeurs à usage général, comme les CPU , mais ils sont conçus pour des tâches qui peuvent être divisées en de nombreuses sous-tâches petites, similaires et pour la plupart indépendantes (comme le rendu de pixels individuels) et exécutées en parallèle . Cela signifie qu'un GPU peut accélérer n'importe quel algorithme de rendu qui peut être divisé en sous-tâches de cette manière, contrairement aux accélérateurs 3D des années 1990 qui n'étaient conçus que pour accélérer des algorithmes de rastérisation spécifiques et des effets d'ombrage et d'éclairage simples (bien que des astuces puissent être utilisées pour effectuer des calculs plus généraux).

En raison de leurs origines, les GPU fournissent généralement encore une accélération matérielle spécialisée pour certaines étapes d'un pipeline de rastérisation 3D traditionnel , y compris la suppression de surfaces cachées à l'aide d'un tampon z et le mappage de texture avec des mipmaps , mais ces fonctionnalités ne sont plus toujours utilisées. Les GPU récents ont des fonctionnalités pour accélérer la recherche des intersections de rayons avec une hiérarchie de volumes englobants , pour aider à accélérer toutes les variantes de lancer de rayons et de traçage de chemin , ainsi que des fonctionnalités d'accélération de réseau neuronal parfois utiles pour le rendu.

Les GPU sont généralement intégrés à des systèmes de mémoire à large bande passante pour prendre en charge les exigences de bande passante de lecture et d'écriture du rendu haute résolution en temps réel, en particulier lorsque plusieurs passes sont nécessaires pour restituer une image. Cependant, la latence de la mémoire peut être plus élevée que sur un processeur, ce qui peut être un problème si le chemin critique d'un algorithme implique de nombreux accès à la mémoire. La conception du GPU accepte une latence élevée comme inévitable (en partie parce qu'un grand nombre de threads partagent le bus mémoire ) et tente de la « cacher » en basculant efficacement entre les threads, de sorte qu'un thread différent peut effectuer des calculs pendant que le premier thread attend la fin d'une lecture ou d'une écriture.

Les algorithmes de rendu ne fonctionneront efficacement sur un GPU que s'ils peuvent être implémentés à l'aide de petits groupes de threads qui effectuent principalement les mêmes opérations. À titre d'exemple de code répondant à cette exigence : lors du rendu d'un petit carré de pixels dans une image simple tracée par rayons , tous les threads croiseront probablement des rayons avec le même objet et effectueront les mêmes calculs d'éclairage. Pour des raisons de performances et d'architecture, les GPU exécutent des groupes d'environ 16 à 64 threads appelés warps ou wavefronts en lock-step (tous les threads du groupe exécutent les mêmes instructions en même temps). Si tous les threads du groupe n'ont pas besoin d'exécuter des blocs de code particuliers (en raison de conditions), certains threads seront inactifs ou les résultats de leurs calculs seront ignorés, ce qui entraînera une dégradation des performances.

Chronologie des algorithmes et des techniques

Voici une chronologie approximative des techniques de rendu fréquemment mentionnées, y compris les domaines de recherche actuels. Notez que même dans les cas où une idée était citée dans un article spécifique, il y avait presque toujours plusieurs chercheurs ou équipes travaillant dans le même domaine (y compris des travaux connexes antérieurs). Lorsqu'une méthode est proposée pour la première fois, elle est souvent très inefficace et il faut des recherches supplémentaires et des efforts pratiques pour la transformer en une technique utile.

La liste se concentre sur la recherche universitaire et n'inclut pas le matériel. (Pour plus d'informations sur l'histoire, voir #Liens externes, ainsi que Infographie#Histoire et Âge d'or des jeux vidéo d'arcade#Technologie .)

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index