Facteurs qui affectent le plus les performances du PC dans le lancer de rayons

Facteurs qui affectent le plus les performances du PC dans le lancer de rayons

Nul doute que les fabricants de cartes graphiques ont entamé la transition vers l'utilisation généralisée du Ray Tracing dans les jeux, une période qui impliquera plusieurs générations de cartes graphiques et c'est-à-dire que le ray tracing nécessite une puissance élevée pour fonctionner. Mais quels facteurs affectent les performances du lancer de rayons ? On vous l'explique.

Avoir le plus puissant Processeur or GPU n'est pas suffisant aujourd'hui pour que les jeux utilisant le lancer de rayons se déroulent sans problème. Même aujourd'hui, avec cette technique utilisée de manière si primitive, les performances en lancer de rayons ne sont pas celles attendues. Quels phénomènes l'affectent ?

Comment le processeur affecte-t-il les performances du lancer de rayons ?

Rendu CPU

Nous vous avons déjà parlé plus d'une fois des volumes délimités ou BVH dans divers articles, mais aujourd'hui ceux-ci ne sont pas générés par le GPU, mais plutôt les jeux utilisent un BVH général pour le niveau, ce qui lui permet de positionner les différents éléments de la scène selon la position du joueur. L'utilisation la plus courante ? Bien que ce soit le GPU qui rend la scène, dans chaque image, le CPU doit calculer l'état de chacun des éléments.

C'est pourquoi dans les jeux, les structures de données spatiales sont généralement utilisées comme carte de niveau, qui sont utilisées pour localiser la position de chaque élément à l'écran par rapport au joueur et à la structure de niveau. De cette façon, tous les efforts de calcul se situent dans ce qui se passe près de l'endroit où se trouve son avatar et que le joueur peut voir à ce moment-là.

Séisme sans clip

Il existe des astuces dans divers jeux qui nous permettent de sortir des extrêmes d'une carte ou même de voir tout ce qui se passe sur scène en même temps. Lorsque nous le faisons, les performances du jeu s'effondrent. Eh bien, les structures de données spatiales sont générées par le processeur, car elles sont l'outil utilisé pour éliminer de la scène tout ce qui n'est pas vu par le joueur et ce serait donc un gaspillage de ressources de devoir les calculer en même temps.

Par conséquent, lorsque le CPU crée la liste d'écrans à calculer par le GPU, ce qu'il va faire est de créer une liste d'écrans dans ledit cadre avec tous les objets en vue du joueur et ce sera complètement la même si c'est mathématiquement correct car au-delà de l'espace de visualisation, il y a des éléments qui affectent également la scène.

Dans le même temps, il est également chargé de mettre à jour le BVH dans chaque trame et de le livrer renouvelé au GPU. Puisque dans le BVH les éléments statiques du niveau ne bougent pas, mais les mobiles comme les PNJ, les personnages ou le joueur lui-même le font à chaque niveau et c'est le CPU en charge de mettre à jour le statut de chacun.

Performances des GPU et du lancer de rayons

GPU AMD VRAM

Les GPU sont les processeurs de traitement parallèle par excellence, à tel point que nous utilisons depuis des années le calcul haute performance, ou HPC, pour accélérer les parties parallèles de différents programmes. Le Ray Tracing étant l'une des applications qui bénéficient le plus de la parallélisation et donc le plus en apparence de la puissance des GPU, nous sommes cependant encore loin du paradigme idéal dans lequel les GPU tels que nous les connaissons actuellement sont le matériel idéal pour le Ray Tracing.

En Ray Tracing, comme dans l'autre algorithme pour générer des graphiques 3D, la rastérisation, ce que nous faisons est de prendre une collection d'objets dans un espace tridimensionnel et de la représenter dans un espace bidimensionnel composé d'une matrice de pixels. qui est l'écran. Cependant, il n'a jamais été possible pour un GPU de rendre une scène basée sur le Ray Tracing en temps réel à la même vitesse et avec les mêmes performances qu'avec la rastérisation.

Le lancer de rayons ne dépend pas de la résolution

lancer de rayons amd

Dire cela peut sembler audacieux pour beaucoup, après tout, les performances de rendu en FHD ne sont pas les mêmes qu'en QHD ou 4K. Les variations de performances sont disparates, mais une fois que vous aurez compris de quoi on parle, vous comprendrez pourquoi on en parle sans dépendre de la résolution.

L'algorithme original de lancer de rayons parle d'impacter les rayons primaires et secondaires de la scène contre chacun des pixels de la scène. Cela nécessite beaucoup de puissance, donc au lieu d'utiliser l'algorithme d'origine, nous utilisons des structures de données spatiales comme BVH afin d'accélérer l'algorithme. Étant donné que sans la structure de données spatiales, le Ray Tracing nécessiterait une énorme puissance de calcul.Centre de données

D'où l'utilisation de structures de données spatiales en forme d'arbre pour accélérer les performances du GPU en lancer de rayons. Cependant, les jeux d'aujourd'hui ont des scènes extrêmement complexes dont la structure de données utilisée pour l'intersection ne peut pas être mise en cache par le GPU en raison de sa taille. Pour ce qu'il fait, c'est de copier des fragments de la structure dans le cache du GPU à partir de la VRAM au fur et à mesure qu'ils sont nécessaires.

L'autre astuce est de savoir comment vous saurez maintenant l'utilisation du matériel en charge de calculer l'intersection de chaque rayon avec la structure de données. C'est un calcul qui est effectué de manière continue et récursive et qui finirait par consommer une grande quantité de ressources du GPU, donc avec ces unités, nous voyons des augmentations de performances entre cinq fois et un ordre de grandeur.

Le problème de la localisation des données

BVH enregistré

En réalité, nous ne représentons pas le chemin de la lumière, car dans la vraie vie la lumière n'a pas le temps et à cause de sa vitesse elle se trouve partout en même temps. Ainsi, la structure de données ne représente pas ou quel est le trajet d'un rayon de lumière dans la scène, mais plutôt des parties de la scène qui en sont affectées.

Ce que nous faisons, c'est organiser les objets de la scène en ensembles que nous appelons volumes délimités, de telle manière qu'il soit interprété que si le rayon ne traverse pas un volume délimité, cela n'affectera pas les objets, les autres volumes délimités, qui sont dans son ensemble.

NVIDIA BVH

La première chose à laquelle nous pouvons penser est que ce serait une bonne idée de diviser régulièrement l'espace de la scène. De telle sorte qu'une partie de la scène s'occupe d'une partie du GPU et qu'une autre partie de la scène s'occupe d'une autre partie. En d'autres termes, ce serait comme prendre une carte et la délimiter par des quadrants, faire stocker les informations de chaque quadrant voire sous-quadrant par les différents niveaux du cache. C'est une méthode qui fonctionne très bien avec la rastérisation.

En traçage de rayons, en revanche, nous pouvons constater que si nous divisons une scène en plusieurs sous-espaces, un seul rayon lumineux traverse plusieurs sous-espaces, qui peuvent être affectés à différents éléments de processus dans le GPU. C'est pourquoi ce qui est fait est de prendre un chemin totalement différent, la scène n'est pas divisée selon les pixels qui sont affectés par chaque rayon, mais chaque rayon est catalogué selon les zones de la scène qu'il traverse.

L'exemple du véhicule et de la carte

Carte du véhicule

Pour mieux comprendre la situation, supposons que nous devions marquer la disposition d'un véhicule de livraison sur une carte. Comment pouvons-nous le faire? La première consiste à créer la carte et à tracer l'itinéraire. La seconde n'est autre que de faire une liste des zones de la carte que le véhicule a traversées puis de construire plus facilement son itinéraire.

Dans le second cas, nous pouvons reconstruire complètement l'itinéraire, en le transformant en un itinéraire linéaire. En fin de compte, nous ne nous intéressons qu'à l'endroit où le véhicule est passé et non à l'endroit où il n'est pas passé, donc dans le cas de l'utilisation d'une carte, une grande partie des informations serait superflue et nous pourrions les supprimer en ne contribuant rien.

Mais le fait de créer une liste ordonnée ne signifie pas que ceux qui conduisent le véhicule doivent parcourir un grand nombre de kilomètres pour leurs livraisons. Cette information n'est pas prise en compte et il en va de même avec les performances en Ray Tracing, chacun des rayons a un coût de calcul différent, non seulement parce qu'ils ont une route différente, mais aussi du fait que nous ne connaissons pas la mémoire sauts que nous devrons faire.