Le 20 août dernier, la conférence du géant de la carte graphique Nvidia apportait trois nouveaux produits se voulant fracassants. Les GeForce RTX 2070, RTX 2080, RTX 2080 Ti et Titan RTX allaient toutes les quatre être basées sur la nouvelle architecture concoctée par la firme, sous le nom de Turing. Mais surtout, le « R » de « RTX » annonçait la commercialisation à grande échelle d’une technologie capable de mettre des étoiles dans les yeux : le ray tracing, censé apporter un réalisme inégalé dans les effets de lumière à l’écran.
Dans une démonstration assez spectaculaire, Nvidia plonge dans le décor du jeu de guerre Battlefield V. Le feu des canons se reflète autant sur la carrosserie des voitures que dans les flaques d’eau sur le bitume. Des éléments de la scène, qui sans ray tracing seraient sombres et ternes, se mettent à flamboyer. Pour comprendre ces techniques qui se veulent le nec plus ultra de l’image 3D, il faut se plonger tout au fond de son GPU, dans ce que l’on appelle le pipeline graphique.
Au fond du pipeline graphique
C’est une évidence facile à oublier : quand on joue à un jeu « en 3D », la scène que l’on voit sur son écran n’est pas en trois dimensions. Elle est en deux dimensions, vu que l’écran est plat. Même dans un casque de réalité virtuelle, ce sont bien deux scènes en 2D qui s’affichent devant vos deux yeux, l’illusion stéréoscopique se chargeant du reste. Pourtant, le jeu vidéo tel que stocké dans les entrailles de l’ordinateur est bel et bien fait de modèles 3D, et il faut les reconstituer sur un écran en deux dimensions. C’est ce qui s’appelle le « rendu », et c’est le travail de la carte graphique.
Le fameux pipeline graphique est l’ensemble des procédés nécessaires au rendu. On peut les regrouper en trois grandes étapes.
- D’abord, il faut intégrer toutes les modifications qui ont pu se produire sur la scène, comme des actions du joueur ou des mouvements de divers personnages : c’est l’« application », et ça ne se passe pas encore sur la carte graphique, mais sur le microprocesseur central (CPU).
- Ensuite, la carte graphique prend le relais et s’occupe de la « géométrie », une série assez complexe de tâches consistant à réajuster les éléments du décor, à rajouter une lumière ambiante ou à se débarrasser des objets se trouvant hors caméra.
- La dernière étape, celle qui nous intéresse, est la rastérisation. Celle-ci consiste à plaquer les éléments 3D issus de l’étape « géométrie » du pipeline sur la grille (en anglais, raster) de pixels qui sera affichée à l’écran. Dans la langue courante, la rastérisation désigne une famille d’algorithmes qui effectuent le rendu d’éléments du décor, appelés primitives, un par un. Dans la 3D, les primitives sont généralement des polygones formant chaque petite facette d’un objet en volume. On peut comparer la chose à la peinture d’un tableau. L’algorithme le plus connu de cette famille est le rendu scanline, qui « peint le tableau » ligne par ligne en faisant ressortir les polygones « les plus en avant » de la scène.
Ray tracing, ray casting
Mais le monde réel n’est pas un tableau flamand de la Renaissance. Le rendu scanline et autre algorithme apparenté ont beaucoup de mal à prendre en compte les effets de lumière. Dans la vie réelle, la lumière émise par le soleil ou autre source d’éclairage rebondit sur les objets, se diffracte dans plusieurs directions, se reflète dans l’eau ou les surfaces métalliques, et ce avant d’arriver dans nos yeux. Tout cela cause des jeux d’ombres et de lumières, et affecte également la couleur perçue des éléments du décor (une ombre n’est par exemple jamais noire).
Le ray tracing vise à recopier ces phénomènes physiques de la manière la plus fidèle possible. Les trajectoires des faisceaux de lumière sont calculées de façon à déterminer où ils rebondissent. Et au lieu de faire partir les photons de la source de lumière et de voir où ils vont, le ray tracing prend le chemin inverse : inutile, en effet, de consacrer des efforts à des photons qui se perdront dans la nature !
Seuls les grains de lumière arrivant dans la caméra sont pris en compte, et leur trajectoire est calculée « à l’envers ». C’est un peu la même idée que celle qu’avaient les savants de l’Antiquité, qui pensaient que c’étaient les yeux humains qui émettaient de la lumière.
Le ray casting a été implémenté en jeu vidéo dès 1992
Et le ray tracing est d’ailleurs un concept général, pas nouveau, implémenté de plusieurs manières au cours du temps. Cela fait très longtemps qu’il est envisagé comme méthode de rendu graphique. Le premier algorithme en la matière a été décrit par le chercheur Arthur Appel d’IBM en… 1968.
On parlait alors de ray casting, qui est l’implémentation la plus basique possible de ce principe. Des rayons imaginaires partent de la caméra pour atteindre chaque pixel de l’écran ; au premier objet rencontré, ils s’arrêtent. Un des avantages du procédé était sa supériorité relative sur le rendu scanline pour toutes les surfaces courbes.
La première implémentation en temps réel du ray casting a lieu en 1986, et son utilisation dans le jeu vidéo arrive vite. En 1991, le programmeur John Carmack — aujourd’hui devenu chief technical officer chez Oculus — s’initie au domaine de la trois dimensions sur ordinateur, qui était alors surtout réservé à des jeux de simulateur de vol. En effet, la 3D est à l’époque trop gourmande par rapport à la puissance de calcul des ordinateurs personnels pour être utilisée dans des jeux d’action.
Le ray casting permet à Carmack de ne faire calculer que les portions de la scène visibles par la caméra, au lieu du décor entier. Le programmeur développe un moteur de ray casting en six semaines de travail, et sort avec ses collègues le jeu de tir à la première personneWolfenstein 3D en mai 1992 sur MS-DOS. D’autres jeux suivront au cours de la décennie.
Pourquoi on n’en parle que maintenant ?
Mais le ray casting des années 90 est simpliste : il ne prend pas en compte les rayons diffractés plusieurs fois, rebondissant d’un objet à l’autre. De fait, il ne représente qu’un intérêt très limité pour les effets de lumière et le réalisme visuel. Après les premiers travaux d’Arthur Appel sur le ray casting en 1968, les rayons secondaires seront pour la première fois pris en compte en 1979 par Turner Whitted, qui travaille aujourd’hui dans la division recherche de Nvidia. Coïncidence.
Whitted propose d’appliquer l’algorithme du ray casting de manière récursive, en prenant en compte trois formes de rayons émis à chaque fois que de la lumière touche un objet : la réflexion, la réfraction et l’ombre. La réflexion est ce qui se passe dans un miroir ou dans une vitre, tandis que la réfraction cause des halos de lumière plus diffus. L’ombre est considérée comme un rayon « noir » à part entière. Le terme de ray tracing, tel qu’employé de nos jours, désigne cette approche des rayons de lumière secondaires.
Calculer les rayons secondaires est très lent
C’est là que le bât blesse : calculer ces rayons additionnels est lent. Très lent. Tellement lent que jusqu’il y a une décennie, même les productions hollywoodiennes étaient réticentes à l’idée de le faire pour leurs images de synthèse. Pixar, un des pionniers historiques de l’animation 3D, n’a adopté le ray tracing qu’en 2013 ; dans un environnement entièrement créé par ordinateur, l’effort de calcul demandé était tout simplement trop important auparavant. La réalisation du film Monsters University a ainsi nécessité d’allouer 20 Go de RAM au traitement de chaque image — sachant qu’il y a 24 images dans une seconde de film.
Si tel est le cas dans des studios dotés de supercalculateurs, qui peuvent se permettre de passer des heures voire des jours pour faire le rendu d’une scène, il est facilement compréhensible que de tels moyens aient longtemps été inenvisageables en temps réel sur un simple PC. En 2008, Intel a démontré l’utilisation de ray tracing en temps réel sur le jeu de tir Enemy Territory: Quake Wars.
Celui-ci tournait à une résolution de 1080 pixels par 720 pixels et à la fréquence franchement saccadée de 15 à 20 images par seconde, sur une configuration à quatre CPU haut de gamme. (Oui, quatre CPU ayant quatre cœurs chacun, soit seize cœurs). S’il faut admettre que les reflets dans l’eau sont bien supérieurs en qualité que le reste des graphismes, on est bien sûr loin de ce que propose un jeu de 2018 même rastérisé. Quake Wars: Ray Traced est resté à l’état de projet de recherche et n’a jamais été commercialisé.
Le ray tracing utilisé seul ne saurait non plus faire des miracles. Ce n’est qu’une approximation de comment la lumière se propage dans la vraie vie ; et plus on veut que l’algorithme soit rapide, plus on le force à être approximatif. Par ailleurs, l’algorithme de ray tracing mis au point par Whitted parvient difficilement à rendre compte de certains effets de lumière, comme la transluminance (mettez vos doigts devant une source de lumière et regardez leurs bords briller en rouge, si vous avez la peau claire) ou la caustique (mettez un verre sous le soleil et regardez-le projeter des motifs lumineux autour de lui).
C’est pour cela qu’au cinéma, le ray tracing est idéalement couplé à d’autres algorithmes, comme le photon mapping ou le path tracing, qui imitent encore plus finement les phénomènes optiques naturels — au prix d’une consommation de puissance de calcul encore plus élevée. D’autres techniques jouent sur les textures visuelles des objets pour réaliser les effets souhaités, mais nous n’entrerons pas dans ces détails.
Mais alors, quid des RTX de Nvidia ? Elles sont les premières cartes graphiques à apporter le ray tracing en temps réel au grand public. Valent-elles vraiment le coup ? Si elles ne feront pas la différence sur un jeu qui n’a pas été réalisé pour le ray tracing, 21 titres compatibles avec la technologie sont actuellement en préparation, dont par exemple Shadow of the Tomb Raider ou Metro Exodus. Il faudra attendre la commercialisation des RTX en septembre pour tester si les détails apportés par le ray tracing participeront vraiment à l’immersion du joueur, ou si au contraire ils seront noyés dans le feu de l’action.
+ rapide, + pratique, + exclusif
Zéro publicité, fonctions avancées de lecture, articles résumés par l'I.A, contenus exclusifs et plus encore.
Découvrez les nombreux avantages de Numerama+.
Vous avez lu 0 articles sur Numerama ce mois-ci
Tout le monde n'a pas les moyens de payer pour l'information.
C'est pourquoi nous maintenons notre journalisme ouvert à tous.
Mais si vous le pouvez,
voici trois bonnes raisons de soutenir notre travail :
- 1 Numerama+ contribue à offrir une expérience gratuite à tous les lecteurs de Numerama.
- 2 Vous profiterez d'une lecture sans publicité, de nombreuses fonctions avancées de lecture et des contenus exclusifs.
- 3 Aider Numerama dans sa mission : comprendre le présent pour anticiper l'avenir.
Si vous croyez en un web gratuit et à une information de qualité accessible au plus grand nombre, rejoignez Numerama+.
Abonnez-vous à Numerama sur Google News pour ne manquer aucune info !