Ray tracing : qu’est-ce que c’est et comment ça améliore vos jeux vidéo

Chéri, j'ai ray tracing les gosses

 
Le ray tracing est dans toutes les bouches, aussi bien dans l’univers des cartes graphiques pour PC que les consoles de nouvelle génération comme la PS5 et la Xbox Series X. Mais qu’est-ce que c’est, au juste, le ray tracing ? Nous allons tout vous expliquer.
Crédits : Nvidia

Nvidia a frappé fort en 2018. En présentant ses cartes graphiques GeForce RTX, le constructeur a montré la voie à toute une industrie. Désormais pris en charge par les PlayStation 5 et Xbox Series X|S, le ray tracing a également été adopté par AMD et se pose comme une technologie incontournable.

Le ray tracing est-il une technologie à prendre en compte lors de l’achat d’un ordinateur portable ou d’une carte graphique ? Et d’abord, c’est quoi le ray tracing ? C’est justement ce que nous allons essayer d’explorer avec cet article.

Qu’est-ce que le ray tracing ?

Avant d’entrer dans les détails et pour le dire le plus simplement possible, le ray tracing est une technique qui permet d’émuler le parcours de la lumière et ses interactions avec l’environnement, autrement dit son altération vis-à-vis des phénomènes physiques et des objets ; notamment des effets de réflexion et de réfraction, mais aussi les ombres et d’autres phénomènes optiques plus complexes.

Cinéma et jeu vidéo : deux univers en constant rapprochement

Pas vraiment nouvelle, cette technique a été mise au point par Arthur Appel, ingénieur chez IBM, en 1969. Après un long chemin semé d’embûches, notamment en raison du coût qu’elle engendrait, elle fait doucement son nid au cinéma avant d’être démocratisée grâce aux studios Pixar en 2006 avec le film d’animation Cars. Depuis, l’industrie cinématographique a fait sienne cette technique afin de produire des scènes et des effets spéciaux toujours plus réalistes. Alors pourquoi le ray tracing n’est-il pas arrivé plus tôt dans nos jeux vidéo ? Pour la bonne raison que le procédé est extrêmement gourmand en matière de puissance de calcul. Les studios qui l’utilisent possèdent des moyens considérables pour le mettre en œuvre. En réalité, chaque trame est pré-calculée à l’aide de « fermes de rendus » (des supercalculateurs en gros) après avoir créé la scène, tandis que le ray tracing est encore associé à d’autres algorithmes comme le path tracing ou le photon mapping.

On comprend bien qu’il ne peut en être de même pour le jeu vidéo qui doit tourner en temps réel, hormis pour les scènes cinématiques, cela va de soi. Le constat est d’autant plus marquant que la fréquence d’image au cinéma est bien moins élevée. Là où un film diffuse 24 images par seconde, un jeu visera plutôt les 60 images par secondes, voire 120 ou plus. Dans le meilleur des cas, la puce graphique doit donc calculer chaque image en moins de 16 millisecondes. Alors comment diable Nvidia a-t-il réussi à implémenter le ray tracing* et son calcul en temps réel ?

Quelque part entre illusion et réalisme, ombres et lumières

Pipeline de rendu et rastérisation

Pour comprendre le fonctionnement du ray tracing, il faut d’abord se pencher sur le rendu graphique et la façon dont la lumière était travaillée auparavant. Sans détailler l’ensemble du pipeline de rendu, il est nécessaire d’évoquer la rastérisation, utilisée pour afficher des objets en 3D sur un écran qui, de son côté, se limite à deux dimensions. Et oui, nos moniteurs, et même nos casques de réalité virtuelle, n’affichent qu’une image en 2D.

Les algorithmes de rastérisation utilisent les coordonnées produites lors des étapes parallèles du rendu 3D pour convertir l’image vectorielle en image matricielle, autrement dit, des primitives géométrique … en lignes de pixels qui sont alors stockées dans le frame buffer avant d’être envoyées à l’écran. Ça, c’est pour faire simple, car si ce procédé permet de « dessiner » un objet et des couleurs à l’écran, il nécessite de nombreux ajustements en parallèles pour créer un environnement réaliste. Il a d’abord l’anti-aliasing, le mapping, le filtrage anisotropique, et bien sûr l’application des ombres avec les shaders, des lumières et autres réflexions.

Textures, couleurs, orientation et position dans l’espace, et autres caractéristiques des objets sont ainsi créés selon la vision des développeurs. L’éclairage est « factice », uniquement basé sur des calculs théoriques qui déterminent les jeux d’ombres et de lumières à appliquer suivant l’orientation et le positionnement des objets. Les graphismes ont évolué au fil des années, avec des textures qui peuvent imiter la réflexion par exemple mais puisque les sources lumineuses sont statiques il était encore difficile de s’approcher d’un rendu photoréaliste. Le fait est qu’il existe un autre élément fondamental à prendre en compte, en opposition au cinéma, le joueur balade sa caméra sous différents angles de vue, et dans la majorité des cas il est également amené à modifier son environnement ; l’illusion perd alors assez vite de sa « magie ».

Comment fonctionne le ray tracing ?

Le ray tracing apporte ce dynamisme qui manquait alors cruellement aux jeux vidéo, aussi bien pour des titres qui misent beaucoup sur le réalisme que d’autres jeux à l’univers et à l’imagination plus décalés et moins en phase avec la réalité. Pour apporter ce naturel à l’image, il est nécessaire de prendre en compte les phénomènes physiques que l’on rencontre dans le monde réel.

Afin d’imiter le comportement des ondes de manière fidèle, chose impossible avec la rastérisation, les algorithmes de ray tracing « lancent des rayons » – des photons – depuis la caméra et non pas vers celle-ci. La trajectoire des rayons se déplace donc vers l’extérieur, les faisceaux interagissent avec leur environnement, les objets et autres surfaces, et peuvent rebondir autant que nécessaire et émuler les phénomènes de réfraction, réflexion ou encore de diffraction.

Cette technique permet de limiter les calculs vectoriels inutiles puisque les photons se déplacent ici dans la direction opposée. Les seuls rayons calculés sont ceux qui partent du point de vue du spectateur, une économie dantesque en comparaison d’un modèle où devrait être calculé chaque rayon provenant d’une ou plusieurs sources lumineuses.

Déjà depuis le début des années 90, une forme minimaliste de la technique a été implémentée, il s’agit du ray casting. L’idée est simple : tracer un rayon depuis la caméra vers l’objet afin de créer une modélisation, un effet 3D à partir d’un environnement 2D. Vous l’avez compris, il s’agit des prémices des jeux vidéo tels qu’on les connaît aujourd’hui, avec Wolfenstein 3D et Doom, pour déboucher un peu plus tard sur des formes plus abouties par exemple avec Quake, Myst ou Alone in the Dark.

Le ray tracing va beaucoup plus loin : il offre la possibilité de lancer les rayons de manière récursive, c’est-à-dire qu’à chaque fois qu’un rayon heurte un objet, un ou plusieurs rayons vont être projetés dans d’autres directions, et ce en prenant en compte la nature de l’objet, sa surface, sa texture, sa couleur et ainsi de suite.

Ray tracing et calcul en temps réel : une révolution

Présentée en 2018 par Nvidia, l’architecture Turing a introduit un nouveau type d’unités de calcul à côté de ses Tensor Cores et CUDA Cores. Ce sont les RT Cores, dédiés à l’accélération et à la gestion des calculs de lancer de rayons en temps réel. L’architecture Ampère a enfoncé le clou, deux ans plus tard, grâce à de meilleurs niveaux de performances et une technologie déjà plus mature. Aujourd’hui Nvidia conserve une longueur d’avance sur AMD, qui a mis quelque temps avant de dégainer et implémenter le ray tracing avec son architecture RDNA 2. Il ne fait néanmoins aucun doute que les rouges ont vite remonté la pente et que la bataille se présente serrée pour les années à venir.

Nvidia a par ailleurs tellement été associé au ray tracing qu’il n’est pas rare d’entendre aujourd’hui beaucoup de joueurs utiliser le nom « RTX » pour évoquer la technologie. Comme nous l’avons vu, le ray tracing (RT) est une technique qui peut être utilisée dans bien d’autres domaines que le jeu vidéo. RTX est quant à lui une marque déposée par Nvidia, il s’agit d’une plateforme qui fusionne diverses technologies, à commencer par le ray tracing, mais aussi le machine learning et la rastérisation. Elle intègre par ailleurs des API et SDK, des fonctionnalités pour accélérer le pipeline de rendu. On peut citer OptiX, DirectX et Vulkan pour le ray tracing, PhysX, FleX et CUDA pour modéliser les interactions objets/environnement.

Maintenant, la question qui nous intéresse est de savoir comment le calcul en temps réel est rendu possible. Les cartes graphiques de nouvelle génération sont-elles devenues aussi puissantes que les supercalculateurs des studios hollywoodiens ?

Les architectures Turing et Ampère, couplées aux technologies de calcul en temps réel et à la réduction de la finesse de gravure des puces (et à l’agrandissement de leur taille), ont permis pour la première fois en 2018 de profiter de GPU grand public aux performances suffisantes pour gérer le ray tracing. Depuis, de nombreux jeux exploitent le lancer de rayons, tout comme les technologies développées dans le but de réduire les besoins en ressources, et donc la baisse inéluctable de framerate lorsque l’on active le ray tracing.

Entre les vidéos de démonstration et le rendu en jeu, il y a cependant un monde. En vérité, les possibilités offertes aux développeurs sont nombreuses, mais ils sont dans l’obligation de faire des choix afin produire des scènes et environnements parfaitement fluides et ne pas sacrifier le framerate. Dans la plupart des cas, le ray tracing est utilisé sur des zones précises, celles qui participent le plus à rendre la scène réaliste, tandis que la rastérisation continue d’officier avec l’efficacité qu’on lui connaît, et surtout, en demandant beaucoup moins de puissances de calcul.

Plus on utilise de rayons par pixel, meilleure sera l’image et plus les calculs seront coûteux. Le bon compromis consiste à utiliser des filtres de débruitage (denoising), accélérés grâce au machine learning, avec les RT Cores pour Nvidia. Le but est d’économiser du temps de rendu en ne sélectionnant que les rayons les plus importants, tout en générant une image de haute qualité.

Quelques exemples

Comme évoqué ci-dessus, le ray tracing se retrouve par « fragments » dans nos jeux vidéo. Son utilisation est parfois parcimonieuse, d’autres fois beaucoup plus complète. On va principalement retrouver du ray tracing sur des éléments qui apportent réalisme à la scène, notamment pour :

  • Créer ombres et réflexions simples
  • Simuler un éclairage direct (Direct Illumunination)
  • Simuler un éclairage indirect (Global Illumination)
  • Combiner éclairage direct et indirect pour créer des scènes complètes (Full Ray Tracing)
  • Créer un environnement sonore (on parle de ray tracing audio)

Cyberpunk 2077 est l’un des jeux qui a le plus recours au ray tracing, une véritable vitrine pour cette technologie. Difficile de se prendre au petit jeu des 7 différences, le ray tracing transfigure totalement l’image.

RTX Off - Ultra
RTX On - Ultra

Control fait beaucoup également pour démontrer les bienfaits du ray tracing. Nos images comparatives parlent d’elles-mêmes, si bien que la scène sans ray tracing paraitrait presque « vide ».

RTX Off - Ultra
RTX On - Ultra

L’usage du ray tracing est beaucoup plus dosé avec The Medium et se contente des reflets et des ombres. Néanmoins, il peut concrètement changer une scène.

RTX Off - Ultra
RTX On - Ultra

Doom Eternal n’a recours quant à lui à quelques effets de reflets uniquement, ce qui n’empêche pas d’apporter un petit supplément d’âme à l’image.

RTX Off - Ultra
RTX On - Ultra

L’upscaling (DLSS et FSR), le remède miracle ?

L’autre solution pour faire des économies de calculs nous vient des technologies nommées DLSS pour Deep Learning Super Sampling chez Nvidia et FSR pour FidelityFX Super Resolution chez AMD, ces deux technologies consistent à exécuter le rendu du jeu dans une définition inférieure avant de le mettre à l’échelle, dans la définition de l’affichage. Le procédé s’effectue à l’aide d’algorithmes et de réseaux neuronaux pour le DLSS, là où il consiste en un upscaling spatial bien plus classique pour le FSR.

L’intérêt premier est de compenser la perte en framerate induites par les calculs dédiés au ray tracing. La mise à l’échelle, upscaling, peut être plus ou moins importante, l’objectif étant de trouver le bon compromis entre qualité et performances suivant le jeu et la définition. Mais l’upscaling peut également faire un grand bien à des jeux sans ray tracing ! C’est du moins le souhait de Nvidia qui autorise désormais d’implémenter son DLSS sur des titres divers, une approche vertueuse qui demande toutefois à se démocratiser. Le FSR est quant à lui open-source et logiquement moins complexe à mettre en œuvre par les développeurs. Le caméléon propose lui aussi une méthode basée sur la mise à l’échelle spatiale : Nvidia Image Scaling. Moins efficace que le DLSS, elle porte l’intérêt d’être compatible avec la majorité des jeux puisque cette fonction est directement intégrée dans les pilotes graphiques.

Ray-tracing audio : c’est quoi au juste ?

Tout comme la lumière, le son est une onde qui se propage dans l’espace. Alors pourquoi ne pas appliquer la technique du ray tracing à l’audio ? Cela semble d’autant plus cohérent que la problématique est similaire à celle de la lumière dans un jeu : dans le monde réel le son est différent selon notre position, les surfaces sur lesquelles il rebondit, ou encore selon la nature des objets avec lesquels il interagit.

La bonne idée derrière le ray tracing audio consiste donc à utiliser les mêmes algorithmes, mais cette fois-ci pour émuler le voyage des ondes sonores dans l’espace, avec pour objectif de se rapprocher d’un son tridimensionnel et renforcer l’immersion. Encore une fois, il est question ici d’apporter encore et toujours plus de réalisme.

Crédits : Microsoft

La première implémentation connue du ray tracing audio a été réalisée par le studio Playground Games avec Forza Horizon 5, sur Xbox Series X. Le vrombissement des moteurs s’adapte alors en temps réel à l’environnement du joueur. Pour cela, les développeurs ont dû définir les caractéristiques physiques de nombreux éléments. Par exemple, les vibrations ne se propagent pas de la même manière dans un tunnel, une rue ou sur une autoroute, tandis que tous les matériaux n’absorbent ou ne renvoient pas le son de la même manière. Enfin, il n’est pas nécessaire de calculer la trajectoire complète de l’onde, mais uniquement celles qui affectent l’auditeur.

Bien que le concept semble alléchant sur le papier pour améliorer l’expérience des joueurs, il reste confronté, comme d’autres solutions logicielles surround, au matériel utilisé par les joueurs. L’auditeur peut-il vraiment déceler des différences avec un casque d’entrée de gamme, ou via les haut-parleurs de son téléviseur ?

 

*Ce lien renvoie vers du contenu partenaire. 


Notre émission Twitch SURVOLTÉS, c’est un mercredi sur deux de 17h à 19h : retrouvez-vous nous pour parler voiture électrique ou vélo électrique, autour de débats, d’interviews, d’analyses et de jeux !

Les derniers articles