Le ray tracing est surtout une nouvelle façon de tricher intelligemment

Le ray tracing est souvent présenté comme l’arrivée de la « vraie » lumière dans les jeux. Comme technologue qui aime le jeu vidéo, je trouve le fonctionnement réel plus intéressant : les moteurs mélangent plusieurs approximations et dépensent quelques rayons seulement là où ils changent l’image.

La rastérisation part des triangles et détermine quels pixels ils couvrent. Le ray tracing part plutôt d’une origine et d’une direction. Le moteur cherche le premier triangle rencontré, calcule le matériau, puis peut lancer un autre rayon vers une lumière, un reflet ou la scène. Tester chaque rayon contre tous les triangles serait beaucoup trop lent.

Une structure d’accélération, souvent une hiérarchie de volumes englobants (BVH), regroupe les objets dans des boîtes. Le rayon élimine d’abord de grandes régions, descend seulement dans les boîtes touchées et finit par tester quelques triangles. Les objets statiques peuvent garder une structure préconstruite; les personnages et portes mobiles exigent une mise à jour.

rayon caméra → BVH → triangle touché → matériau
                         ├─ rayon d'ombre vers lumière
                         ├─ rayon de réflexion
                         └─ échantillon d'éclairage indirect

Un jeu hybride commence encore par un rendu raster qui produit profondeur, normales et matériaux. Il choisit ensuite certains pixels et lance un petit nombre de rayons. Un seul échantillon par pixel donne une image très bruitée. Le débruiteur combine les voisins dont profondeur et normales se ressemblent, puis réutilise les images précédentes après avoir compensé le mouvement.

Cette accumulation temporelle explique certains artefacts. Si un objet apparaît soudainement, il n’a pas d’historique. Un reflet peut laisser une traînée derrière un personnage, ou une fine géométrie disparaître lorsque le filtre la confond avec du bruit. Le moteur doit détecter les discontinuités et réduire le poids de l’ancienne image.

Le budget reste brutal :

FréquenceBudget total par image
30 images/s33,3 ms
60 images/s16,7 ms
120 images/s8,3 ms

Dans ces millisecondes, il faut lire les commandes, avancer physique et IA, préparer la scène, rasteriser, tracer, débruiter et présenter l’image. Si le ray tracing prend 8 ms, il consomme presque la moitié d’un budget à 60 FPS. Les consoles et PC offrent donc souvent un mode qualité autour de 30 images et un mode performance visant 60.

La reconstruction permet de rendre à une résolution plus basse, puis d’estimer une image plus grande à partir du mouvement, de la profondeur et des images précédentes. Elle réduit le nombre de rayons et pixels, mais peut créer scintillement ou détails inventés. Je compare en mouvement, pas seulement avec une capture arrêtée.

Les limites viennent aussi de la mémoire et des pilotes. Les BVH, tampons et historiques occupent de la VRAM. Une géométrie modifiée constamment coûte à reconstruire. Une carte sans accélération compatible a besoin d’un chemin raster; un shader ou pilote défectueux ne devrait pas produire un écran noir sans diagnostic. Le jeu journalise GPU, version du pilote, mode et temps par passe.

Mon exemple de profilage serait une pièce avec miroir, lumière mobile et personnage animé. Je mesure séparément construction BVH, rayons, débruitage et reconstruction, puis coupe chaque effet. Si les réflexions coûtent 5 ms mais ne montrent presque rien dans le parcours réel, je les simplifie. La pratique n’est pas de cocher « ray tracing » partout : c’est d’allouer un budget à l’effet qui rend la scène plus lisible tout en gardant la réponse des contrôles.