Le blog du Nantralien.

Toutes les routes mènent hors de ce blog. le blog de SPhoenix.

Articles taggés avec ‘intel’

Le ray-tracing et les jeux

Mardi 10 mars 2009

Un article qui vient de paraître sur nytimes.com me pousse à faire un article pour parler un peu du ray-tracing. C’est une technique prometteuse, qui fournit des résultats bien plus convaincants (entendez : réalistes) que les techniques actuelles et qui, à terme, pourrait selon les chercheurs être jusqu’à 200 fois plus rapide que maintenant.

L’aspect purement technique pourra être mieux traitée par des experts donc je vais laisser cela de côté pour une approche bien plus terre-à-terre, n’étant pas moi-même un expert, mais un simple curieux.

Commençons par  introduire le ray-tracing. Pour faire simple, la technique consiste à suivre le trajet des rayons de lumière dans un environnement pour le matérialiser à l’écran.
Voici une introduction en la matière de Daniel Pohl, chercheur chez Intel qui utilise Quake Wars dans ses travaux :

“ Depuis plusieurs années maintenant les jeux ont utilisé une technique de rendu graphique appelée la « rasterisation ». Cela fonctionna très bien étant donné que la technique était très rapide dans des scènes qui n’étaient pas trop complexes. Les cartes d’accélération matérielles comme la 3DFX de Voodoo qui était sortie en 1996 nous aida à accélérer encore plus cet algorithme. Mais elle a aussi mené au fait que à partir de ce moment, tous les jeux allaient se baser sur de la rasterisation, au contraire de précédemment où on avait des cas de moteurs à voxels comme dans « Comanche » ou « Delta Force ». Et au fur et à mesure que les jeux sont devenus de plus en plus complexes, en ajoutant des effets comme des ombres convaincantes et des reflets, il est devenu clair que l’approche par la rasterisation compliquait la programmation des dits effets et ne fournissait pas forcément les meilleurs résultats possibles. Ceci fait réfléchir à des possibilités d’autres algorithmes qui permettraient de travailler de manière plus efficace avec ces effets. Le ray-tracing a toujours été connu pour ces capacités à créer des images très réalistes, mais au coût de la performance. Pendant longtemps, il a été utilisé pour des applications de rendu précalculé, où il fallait des heures voire des jours pour obtenir un rendu d’image. Au fur et à mesure que le matériel devient de plus en plus performant, il est venu le moment de réévaluer les méthodes qui ont été utilisées dans les jeux pendant si longtemps.”

Voyons dès à présent, plus en détail le fonctionnement des algorithmes de ray-tracing.
Pour cela, nous nous appuierons sur l’article de Wikipedia sur le ray-tracing.

Le ray-tracing permet un haut niveau de réalisme

Le ray-tracing permet un haut niveau de réalisme

Pour chaque pixel de l’image générée, le moteur lance un rayon depuis le point de vue (la caméra) dans la scène 3D. Le premier point d’impact du rayon sur un objet définit l’objet concerné par le pixel correspondant.
Des rayons sont ensuite lancés depuis le point d’impact en direction de chaque source de lumière pour déterminer sa luminosité (est-il éclairé ou à l’ombre d’autres objets ?). Cette luminosité combinée avec la couleur de l’objet ainsi que d’autres informations éventuelles (angles entre la normale à l’objet et les sources de lumières, réflexions, transparence, etc.) déterminent la couleur finale du pixel.

Pour ceux qui se souviennent de la physique au lycée, la nature suit ce principe - mais dans l’autre sens.
En effet, c’est une source de lumière qui émet un rayon qui voyage jusqu’à atteindre une surface qui interrompt son déplacement. Il y a plusieurs facteurs qui vont influencer ce qui arrive à ce rayon : l’absorption, la réflexion, la réfraction, et la fluorescence. Tous ceux-ci sont strictement des propriétés du matériau (si l’on fait abstraction des propriétés intrinsèques du milieu ambiant, en général l’air). Si le rayon n’est pas complètement absorbé, il peut ensuite aller frapper d’autres surfaces où les propriétés affectent encore le rayon de lumière. Eventuellement, certains de ces rayons finiront par frapper notre rétine, qui les interprétera et affichera l’image dans notre cerveau. En résumé : une source de lumière, diverses surfaces, notre œil.

Le ray-tracing fait exactement l’inverse ; l’œil (la caméra) crée des rayons de lumière qui vont frapper différentes surfaces. Il apparaît immédiatement l’avantage de cette technique : seul les rayons qui frapperaient l’œil dans la nature sont utilisés - et ils ne représentent qu’une infime partie des rayons (de nombre infini) qui existent dans un endroit.

D’après Daniel Pohl, le ray-tracing propose des avantages conséquents, notamment au niveau des reflets :

  • Ils sont très faciles à implémenter
  • Les résultats sont exacts au pixel près. Cela signifie que l’on ne paie que le calcul des reflets que si un pixel est réellement visible. Si seulement 100 pixels de l’écran sont réfléchissants, alors on n’a besoin que de 100 rayons de réflexion de plus. Il y a un exemple où la lentille du sniper de Quake Wars a été rendue réfléchissante (voir la vidéo à  la fin). Comme cet effet ne prend qu’une petite partie de l’écran, il n’y a quasiment aucune différence au niveau des performances quand l’effet est activé ou non.
  • Les résultats sont basés sur des calculs physiques.
  • On peut avoir des reflets dans des reflets automatiquement. Et comme avant, étant donné que les résultats sont exacts au pixel près, on peut les calculer de manière efficace.
  • Ces effets sont indépendants de l’ordre dans lequel ils sont calculés.

On sait depuis longtemps que Intel travaille beaucoup sur le ray-tracing. L’article de Daniel Pohl sur son travail sur Quake Wars et Quake IV, le projet Larrabee, …
Et maintenant une nouvelle firme, Caustic Graphics, fondée par des anciens d’Apple.

“Caustic Graphics, une des premières start-ups dans le monde du matériel graphique depuis longtemps, mettra certainement au défi cette opinion [du ray-tracing d'Intel comme simple coup de pub, ndlr] avec sa propre approche. La société affirme que son logiciel et matériel peut accélérer le ray-tracing par un facteur d’ environ 20 par rapport aux capacités des PC d’aujourd’hui. Ils prétendent que les puces commercialisées d’ici 2010 seront 200 fois plus rapides.”

Alors, le ray-tracing ? Travail prometteur, coup de pub ? Marchera, marchera pas ?

Personnellement, on voit bien que les jeux commencent à toussoter un peu du côté graphique. A part Crysis qui se démarquent, il y a bien les effets next-gen qui bourre le mou à tout le monde, mais sinon les différences se retrouvent surtout dans la direction artistique.
Un coup de pied dans la fourmilière ne serait pas de refus, surtout considéré le bond de réalisme que font les images une fois rendues par ray-tracing.
Alors, comment ne pas rêver à des jeux dont la qualité graphique égalent les derniers films de Pixar ? Je reste fortement dans l’espérance que tout ceci ne soit pas que sujet à masturbation pour les actionnaires respectifs des entreprises et que nous pourront en bénéficier dans quelques années. A condition que tout le monde y mette du sien…

Sources:

- Interview de Daniel Pohl
- Wikipédia
- nytimes.com

YouTube Preview Image