Actualité : NVIDIA annonce son moteur de lancer de rayon NVIRT

Le , par TanEk, Membre expérimenté
Lors du banquet de la conférence i3D 2009 qui s'est déroulée à Boston, Austin Robinson du groupe de recherche NVIDIA a annoncé la sortie à la mi-printemps d'une nouvelle API nommée NVIRT (NVIDIA Ray-Tracing engine) qui, comme son nom l'indique, sera un moteur de lancer de rayon. Ce sera une API basée sur CUDA, la toute nouvelle API de NVIDIA pour faire du calcul général sur les cartes graphiques et NVSG , le graphe de scène proposé par NVIDIA.

Cette annonce d'un outil permettant de calculer facilement des algorithmes de lancer de rayon sur des GPUs est une première mondiale dans l'industrie. Les algorithmes de lancer de rayon sont de plus en plus utilisés dans l'industrie du jeu vidéo (pour les moteurs physiques ou algorithmes de rendu sophistiqués), mais également pour des simulations physiques plus générales utiles pour les industries de pointes (aéronautique, aérospatiale, etc.) ou dans le domaine de l'IA. A l'heure actuelle, seul CUDA permet de créer un moteur de lancer de rayon exécuté entièrement sur GPU mais NVIDIA veut nous proposer une API plus adaptée et qui sera très flexible.

NVIRT devrait être une architecture de type pipeline mais plus sophistiquée que OpenGL et DirectX. En effet, il y aurait deux types d'objets qui seront traités : les rayons et les objets qui représenteront nos modèles 3D si nous voulons faire du rendu.

Les objets pourront être stockés dans des structures accélératrices différentes elles-même pouvant être contenues dans d'autres structures accélératrices. C'est apparemment l'implantation de la structure méta-hiérarchique de Jim Arvo. Vous pourrez ainsi choisir de stocker vos géométries statiques dans un K-D-Tree qui est long à construire mais très efficace et vos géométries dynamiques dans un BVH qui est moins efficace mais très rapide à mettre-à-jour. Au niveau du type de modélisation pour les objets que NVIRT pourra supporter, rien n'est sûr mais il semblerait que n'importe quelle modélisation soit possible (triangles, surfaces paramétriques telles que les NURBS, etc.).

Pour les rayons, différentes politiques d'intersections seront possibles par soucis d'efficacité et des résultats différents nous seront fournis :
  • un booléen indiquant si une intersection a eu lieu (utile pour les rayons d'ombre) ;
  • la plus proche intersection (rayon partant des yeux, de réfraction ou de réflexion) ;
  • toutes les intersections rencontrées (utile pour gérer des objets transparents).


Des shaders permettant de faire du shading ou de générer de nouveaux rayons (rayons de réfraction ou de réflexion par exemple) pourront être fournis. Apparemment il y aurait un type de shader qui génèrera les rayons primaires, un type de shader différent pour chaque politique d'intersection des rayons et un autre type pour les rayons qui n'ont pas eu d'intersections. Ces derniers seront programmés dans le langage CUDA.

Tout ceci semble prometteur mais tout n'est pas rose. NVIRT étant basé sur CUDA, il en hérite toutes ses limitations à savoir qu'il ne peut être exécuté que sur des cartes CUDA compatibles (geforce 8 et plus) et ne peut accéder directement aux buffers des APIs graphiques (il est nécessaire de faire une copie sur le GPU, certe très rapide mais pouvant devenir problématique) et qu'actuellement le coût de changement de contexte (passage de CUDA vers OpenGL/DirectX et vice-versa) est non négligeable bien qu'NVIDIA ait promis une amélioration très importante dans un futur proche pour ce dernier point.

Néanmoins, tout ceci est fort intéressant pour l'avenir du lancer de rayon en temps réel ou le rendu hybride rasterisation/lancer de rayon comme il se fait de plus en plus dans les jeux-vidéos et nous pourrons espérer que ceci va donner des idées au groupe de standardisation Khronos et qu'il va s'atteler à faire une API standardisée tout comme l'a été OpenCL pour CUDA.

Sources :

Real Time Rendering : http://www.realtimerendering.com/blo...reating-games/
ompf.org : http://ompf.org/forum/viewtopic.php?f=16&t=1239
Icare3D : http://www.icare3d.org/blog_techno/g...and_nvirt.html
Zest for graphics : http://zestforgraphics.blogsome.com/...-el-i3d-nvirt/
i3D 2009 : http://graphics.cs.williams.edu/i3d09/

D'autres actualités sur le blog de la rubrique 2D/3D/Jeux


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de IrmatDen IrmatDen - Membre expert https://www.developpez.com
le 05/03/2009 à 20:04
Excellent ça, vivement que ça arrive... Merci pour la news
Avatar de RedGuff RedGuff - Membre du Club https://www.developpez.com
le 15/12/2010 à 2:21
Bonjour.
"... le rendu hybride rasterisation/lancer de rayon, comme il se fait de plus en plus dans les jeux-vidéos..."
Ah bon ?
A ma connaissance, c'est DirectX et un peu encore de l'OpenGL (en déclin).
Rares sont les jeux utilisant le lancer de rayon (3 à ma connaissance : un jeu d'échecs ne connaissant pas toutes les règles et ne sauvegardant pas les options élémentaires, un jeu de tir en vue subjective à la musique mêlée de bruit blanc, et un jeu de bowling au gameplay difficile à prendre en main).
A ma connaissance aucun n'a de rendu mixte, ou hybride.
Avatar de Mikmacer Mikmacer - Membre actif https://www.developpez.com
le 17/12/2010 à 9:41
Citation Envoyé par RedGuff  Voir le message
Bonjour.
"... le rendu hybride rasterisation/lancer de rayon, comme il se fait de plus en plus dans les jeux-vidéos..."
Ah bon ?
A ma connaissance, c'est DirectX et un peu encore de l'OpenGL (en déclin).
Rares sont les jeux utilisant le lancer de rayon (3 à ma connaissance : un jeu d'échecs ne connaissant pas toutes les règles et ne sauvegardant pas les options élémentaires, un jeu de tir en vue subjective à la musique mêlée de bruit blanc, et un jeu de bowling au gameplay difficile à prendre en main).
A ma connaissance aucun n'a de rendu mixte, ou hybride.

Plusieurs jeux utilisent le lancé de rayons, mais pas nécéssairement pour le ray-tracing, mais pour certains effets graphique ou pour des tests de collisions. Par exemple, le SSAO utilise plusieurs lancé de rayon dans l'environnement(limitif de la vue) afin de calculer l'occlusion.

Par contre, je suis dernièrement tombé sur une démo qui vient tout juste de sortir, où on mélange ray-tracing et rasterization pour le rendu, le ray tracing n'est seulement qu'utiliser pour la réflexion. C'est fait à partir d'une idée assez ingénieuse (Je n'entrerai pas dans les détails technique ^^) On peut voir la démo ici :
[ame="http://www.youtube.com/watch?v=AQaS0ucxK4A"]YouTube - Serenity Engine - Real Time Global Illumination and Ray Tracing[/ame]
Avatar de wax78 wax78 - Modérateur https://www.developpez.com
le 21/12/2010 à 14:08
Moi je me suis amusé récemment a essayer de faire un jeu de billard jouables avec Optix uniquement. (Y'a un post quelques part sur ce forum d'ailleurs

Évidemment j'ai fait mon système pour pouvoir choisir le nombre de passes par images, afin de rendre plus fluide, ou plus beau...

Voila une ou 2 petite vidéo de l'engin en question pour ceux qui seraient interessés :





Les grosses saccades sont dut au fait que j'augmente (trop) le nombre de passes...
Avatar de TanEk TanEk - Membre expérimenté https://www.developpez.com
le 08/03/2011 à 8:16
Citation Envoyé par RedGuff  Voir le message
Bonjour.
"... le rendu hybride rasterisation/lancer de rayon, comme il se fait de plus en plus dans les jeux-vidéos..."
Ah bon ?
A ma connaissance, c'est DirectX et un peu encore de l'OpenGL (en déclin).
Rares sont les jeux utilisant le lancer de rayon (3 à ma connaissance : un jeu d'échecs ne connaissant pas toutes les règles et ne sauvegardant pas les options élémentaires, un jeu de tir en vue subjective à la musique mêlée de bruit blanc, et un jeu de bowling au gameplay difficile à prendre en main).
A ma connaissance aucun n'a de rendu mixte, ou hybride.

Ici une presentation faite a la conference GDC 2011 la semaine derniere:

http://nvidia.fullviewmedia.com/gdc2...eometrics.html

Ils presentent le port de Enligthen sur Optix (le nouveau nom pour NVirt) , un framework utilise par le moteur Frostbite pour la partie pre-processing et CUDA pour la partie runtime. Cette techno est utilisee pour faire Battefield 3 qui n'est pas encore sortie.

A ma connaissance c'est la premiere utilisation de Optix dans l'industrie du jeu video.
Offres d'emploi IT
Chef projet big data - pse flotte H/F
Safran - Ile de France - Évry (91090)
Ingénieur H/F
Safran - Ile de France - Moissy-Cramayel (77550)
Architecte électronique de puissance expérimenté H/F
Safran - Ile de France - Villaroche - Réau

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique 2D - 3D - Jeux : LittleWhite -