Le Ray tracing : que la lumière soit

S’il y a bien un mot que l’on retiendra de l’année 2019 pour les jeux vidéo c’est bien le ray tracing. Technologie novatrice, elle nous est présentée comme le porte-étendard de ce que l’on appelle la “next-gen”. Qu’en est-il réellement ? Le ray tracing est-il vraiment si incroyable et si indispensable ? Nous allons tenter d’apporter un peu de lumière sur toutes les questions que vous vous posez.

Ray tracing : une innovation pas si nouvelle

En faisant quelques recherches, on se rend assez vite compte que le ray tracing n’est pas si nouveau que cela. La technique apparaît sous sa forme primaire de ray casting en 1969 par Arthur Appel, travaillant chez IBM. Par son ouvrage Some Techniques for Shading Machines Rendering of Solids et plusieurs pionniers comme Robert Cook de chez Lucasfilms, Turner Whitted, Thomas Porter et Loren Carpenter, le ray tracing est devenu le standard dans l’industrie du cinéma et des images de synthèse.

Les premières utilisations comme rendu graphique remontent à 2003 où Jason Rupard, alors assistant de recherche à l’université de Floride, en explique le fonctionnement.

Pour représenter des images du monde réel sur ordinateur, un programme doit transcrire des images tri-dimensionnelles sur un écran en deux dimensions. Plusieurs méthodes existent avec des niveaux de réalismes variés. L’une des plus réussies tombe dans la catégorie “méthode écran vers monde” de visionnage, autrement appelé “ray tracing”. La technologie graphique de l’ordinateur va simuler des rayons lumineux dans un environnement 3D.

Comme les rayons lumineux ont des propriétés physiques prévisibles, l’algorithme de ray tracing peut tenter de calculer la zone exacte “colorée” de chaque rayon ou intersection avec un objet, nous rapporte Rupard.

En l’occurence, trois choses nous intéressent vraiment : l’éclairage direct, l’éclairage indirect et la gestion de la réflexion d’un objet. L’éclairage direct apporte une couleur à un objet et permet de créer une ombre dynamique.

raytracing-exemple

L’éclairage indirect permet – en se basant sur une propriété physique de la lumière – de représenter la perte d’énergie d’un photon après qu’il ait heurté un objet, ce qui va créer des effets de débordement de couleur, des ombres douces et naturelles mais surtout un éclairage diffus.raytracing-lumière-indirecteraytracing-combinaison-lumière

Finalement, la conductivité de la lumière au travers d’un élément réfléchissant ou disposant d’un indice de réfraction (liquide), créant des réflexions (miroirs) ou de la réfraction (déviations des photons) par tous ces éléments est d’ailleurs visible sur ce qu’on appelle la boite De Cornell – en référence à l’université du même nom – utilisée pour tester depuis longtemps les propriétés des solutions de gestion de la physique de source lumineuses.

la-boite-de-Cornell

Les niveaux les plus avancés de ray tracing permettent à la lumière de rebondir d’objet en objet, de la même manière qu’elle le fait dans la vie réelle. Il distingue donc deux formes d’illumination :

  • Local Illumination : on est sur la forme la plus basique de ray tracing. Seule la relation entre les sources lumineuses et un objet unique est prise en compte. Même si il y a plusieurs autres objets, les effets de leur présence ne sont pas calculés (par exemple, l’effet “miroir” de réflexion de la lumière).
  • Global Illumination : la forme plus avancée, apporte la réflexion de l’ensemble des surfaces environnantes à l’objet. Le rendu est plus cohérent, physiquement plus juste et produit des images plus réalistes. Le défaut principal : c’est aussi la forme la plus coûteuse et qui ne fonctionne que sur les processeurs graphiques haut de gamme.

Du coup, pourquoi n’avons nous pas vu plus de ray tracing depuis ce temps au cinéma, à la télévision ou dans nos jeux ? La réponse est : à cause du temps de traitement.

Le ray tracing est un algorithme très chronophage. La majorité du temps de traitement est consacré à déterminer l’intersection d’un faisceau. Pour trouver l’intersection, vous devez le tester avec chacun des objets de la scène, puis choisir l’intersection la plus proche. Ainsi, si vous avez 86 000 objets et que votre image a une résolution de 800×600 – soit 480 000 faisceaux projetés – 41,28 milliards d’intersections doivent être calculées.

La résolution choisie dans l’exemple correspond à la résolution la plus utilisée en 2003. De nos jours, même en partant sur du full HD (1920×1080) et toujours sur la base d’un rayon par pixel, avec le même nombre d’objets on atteint 178,3 milliards d’intersections ! Sans oublier qu’il faut compter un certains nombres de photons virtuels par source lumineuse, pour obtenir une approximation. Plus on utilisera de photons, plus l’image sera précise et donc coûteuse. Une charge colossale, impossible a supporter sur des environnements entièrement modélisés par ordinateur jusqu’ici. De gros studios comme Pixar auront attendu 2013 avant d’adopter réellement la technologie. Dans un article de Numerama consacré au ray tracing, on apprend que “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.”

RTX, ray casting, GI : des approches différentes du ray tracing

Vous pourrez lire beaucoup de termes se rapportant au ray tracing : LI, GI, RTX, ray casting, hardware accelerated, Ambient Occlusion, HFTS, ray-traced Caustics. Ce sont autant de techniques que les développeurs peuvent utiliser pour implémenter du ray tracing dans leur jeu.

À l’heure actuelle, il n’existe aucun jeu qui soit entièrement ray tracé. Il s’agit à chaque fois d’une combinaison de techniques d’éclairage traditionnelles, appelé rastérisation (ou matricialisation), et de ray tracing sur des surfaces spécifiques comme les flaques ou le métal. Battlefield V en est un bon exemple :

On voit les troupes réfléchis dans l’eau, la réflexion du terrain sur les avions et la réflexion des explosions sur la carrosserie de la voiture. Cela permet de réduire le nombre de faisceaux présents et d’optimiser les performances. Le ray tracing n’est implémenté qu’à un niveau de réflexions.

On peut également améliorer les ombres pour les rendre plus dynamiques et réalistes grâce au ray tracing. Un parfait exemple de cette utilisation est le dernier épisode de Lara Croft, Shadow of the Tomb Raider :

Les ombres sont plus profondes, avec des bords plus doux et une définition supérieure. Atteindre ce niveau sans ray tracing est particulièrement compliqué. Les développeurs doivent user d’artifices pour reproduire l’effet voulu, en ajustant les propriétés de chaque source lumineuse. Cette méthode se nomme Hybrid Frustum Traced Shadows (HFTS). Cela demande beaucoup de temps et d’effort – avec un résultat pas forcément très visible.

On arrive au cas du Global Illumination. Le premier jeu a l’avoir implémenté est le dernier titre de 4A Games, Metro Exodus :

Comme expliqué dans la première partie, on est vraiment sur une autre échelle de rendu : les faisceaux sont calculés individuellement pour chaque pixel. Le rendu est plus naturel, les lumières sont mises à jour en temps réel selon l’évolution de la scène.  Pour reprendre les mots de Digital Foundry, “le ray tracing nous laisse d’autant plus bouche-bée à de nombreux moments déjà spectaculaires.”

Tout ceci se fait malheureusement au détriment des performances : compter en moyenne une perte de 15 fps, avec moins de 60 images/seconde en 1080p même pour une 2080 Ti, carte la plus puissante du marché actuellement.

Une dernière technique, et l’une des plus récentes, est le Ray-traced Caustics. Aucun rapport avec des produits dangereux, il est fait référence ici aux réflexions de la lumière sur une surface ou un objet incurvé (ou de la projection de ce “foyer de rayons” sur une autre surface). Vous pouvez facilement observer le phénomène lorsque les vagues à la surface de l’eau se courbent et altèrent la réfraction de la lumière en la courbant elle-même. On peut également l’observer en plongée.

diffraction-lumière-caustics

Reproduire cet effet dans les jeux était, jusqu’alors, le fruit d’approximations et de raccourcis pour un résultat en temps réel rarement précis et réaliste. La démo technique du titre de NetEase, Justice Online, nous donne un aperçu du résultat qu’il est possible d’atteindre :

L’utilisation du DirectX ray tracing (DXR RT) permet enfin aux développeurs de créer des caustiques réalistes. La démo utilise aussi des ombres et réflexions ray tracées, améliorant significativement la cohérence des scènes.

Series X/PS5 : à quoi s’attendre pour le ray tracing ?

Microsoft a confirmé la présence de ray tracing avec accélération matérielle dans sa prochaine console. L’idée est de libérer de la charge système en ayant un GPU avec des noyaux dédiés au ray tracing. Dans le cadre des jeux vidéo, les développeurs ont besoin de ray tracing en temps réel. Cela n’est possible qu’avec du matériel spécifiquement prévu pour cette tâche. L’astuce est d’utiliser des noyaux dédiés au ray tracing et de les booster grâce à la puissance de calcul du GPU. Si Nvidia a eu la primauté du ray tracing par sa technologie RTX, AMD n’est pas resté inerte pendant ce temps. Début 2019, Crytek avait dévoilé une démo technique avec un haut niveau de ray tracing sur une RX Vega 56, une carte ne valant que 300€.

D’autres voies existent, comme le “path tracing“, en post-traitement, du projet Reshade qui livre des résultats similaires sans impacter les performances.

Le ray tracing est avant tout un mot-valise qui inclut beaucoup de traitements différents qui ont tous le même but : apporter toujours plus de réalisme et de fidélité. Microsoft va-t-il préférer une approche existante ou en créer une nouvelle ? Il faudra patienter encore un peu pour le savoir. Le support logiciel du RT au sein de DirectX sous la forme de DXR, annoncé en 2018, est certainement la piste que la marque a envisagé. Toutefois, la firme de Redmond aime créer la surprise ces derniers temps. Du côté de la concurrence, il n’y a eu qu’une seule mention de ray tracing avec accélération matérielle de la part de Mark Cerny durant une interview au magazine Wired. Comment cela sera concrétisé dans la future PS5 reste toujours un mystère.

En résumé, le ray tracing est une technique de rendu graphique où les sources lumineuses projettent des rayons de lumière. Sa vocation est d’améliorer la fidélité de la représentation d’une scène 3D, ainsi que la cohérence des différents éléments entre eux grâce a une gestion de l’éclairage basé sur la physique de la lumiere. Toutefois, cette technologie nécessite une énorme puissance de calcul. N’espérez pas voir chaque jeu de la prochaine génération le supporter ou l’utiliser dans son intégralité. La technologie n’en est qu’à ses débuts encore et seule une poignée de jeux PC la supportent actuellement… au prix de performances très dégradées, et pour un apport visuel pas toujours évident. On espère avoir pu apporter un peu de clarté sur cette technologie, dont on entendra encore beaucoup parler durant toute l’année 2020.

On se quitte avec une dernière vidéo de ce que pourrait être Minecraft sur nos prochaines consoles :

 

MAJ à 22h34 : merci à Greg (@El_Perplexo) pour ses explications détaillées qui contribuent à une meilleure compréhension de la technologie.

3

  1. On verra comment c’est optimisé.

  2. C’est joli ! j’espère juste que cela s’imbriquera facilement dans la conception des jeux.

  3. Oui c’est joli en démo après a voir sur le monstre

Vos réactions

Mot de passe oublié