Accueil » Cyril Crassin : nouvelle méthode d'illumination globale et d'AO temps réel

Cyril Crassin : nouvelle méthode d'illumination globale et d'AO temps réel

GI

Cyril Crassin, actuellement en thèse à l’INRIA de Grenoble, présentera cet été au SIGGRAPH un projet de recherche sur l’illumination globale et l’ambient occlusion en temps réel.
Si l’ambient occlusion est actuellement fréquemment simulé dans les jeux via le SSAO (Screen-Space Ambient Occlusion), cette méthode n’est pas sans inconvénients : approximative, elle génère souvent des artefacts indésirables dès que la caméra bouge.
Par ailleurs, l’illumination globale en temps réel, avec support de l’illumination indirecte, est encore balbutiante pour le temps réel, et toute amélioration en termes de réalisme ou de performances est donc bienvenue.

GI

En collaboration avec Miguel Sainz et Simon Green de NVIDIA, Fabrice Neyret de CNRS et Elmar Eisemann de ParisTech, Cyril a donc travaillé sur une nouvelle méthode utilisant une subdivision de l’espace de la scène 3D (par des voxels). L’algorithme utilise ensuite un cone-tracing (qui, pour faire simple, est un dérivé du raytracing utilisant des cônes et non de simples rayons) approximatif pour déterminer une valeur approchée de l’illumination globale.

La vidéo qui suit donne une idée du résultat sur le célèbre modèle 3D du Sponza Atrium (que l’on trouvera chez Crytek), largement utilisé pour les tests d’illumination globale.

Comme on le voit, le système ne gère pas seulement la composante diffuse : les réflexions spéculaires de type glossy (douces) sont aussi supportées.
A partir de 3:39, la vidéo montre l’envers du décor, avec la subdivision en voxels. Pour apporter le support des objets mobiles (ici, la main), les voxels sont mis à jour en temps réel à proximité de ces derniers.
Voici les grandes lignes de l’algorithme :

1 Comme on le voit dans la vidéo, le système est de type sparse voxel octree : en clair, on divise la scène en cubes, que l’on va ensuite subdiviser de façon non uniforme : si un cube donné contient la surface d’un objet, on le subdivise. Sinon, on le laisse tel quel. Ainsi, on obtient une division 3D affinée uniquement autour de la surface des objets.
Comme la génération se fait selon le principe de la subdivision d’un cube existant en sous-cubes, on obtient un système de type arbre : l’octree.

2 Le système d’octree ainsi généré permet de stocker les informations sur la lumière arrivant dans chaque portion de la scène : on effectue un rendu de la scène depuis chacune des sources lumineuses, et l’intensité/direction en chaque subdivision de l’octree est stockée.
Les valeurs ainsi stockées sont ensuite filtrées, de façon à donner une valeur aux niveaux supérieurs de chaque subdivision (les cubes pères de chaque cube créé).

3 Enfin, on passe au rendu proprement dit, du point de vue de la caméra 3D. Pour celà, on emploie le fameux cone tracing. Les caractéristiques optiques du matériau (BRDF) sont prises en compte pour déterminer les caractéristiques de ces cônes.
On effectue alors une intégration volumique pour chaque cône, autrement dit, on va additionner les contributions des différents vocels rencontrés sur son chemin. Le fait d’avoir effectué l’étape 2 permet ici de gagner du temps : au fur et à mesure que l’on s’éloigne du point pour lequel on calcule l’illumination globale, le cône s’élargit. Plutôt que de prendre en compte les contributions des multiples voxels, on intègre celle du volume le plus grand possible, ceci permettant un gain de temps précieux.

algorithme

Explication visuelle du procédé ; ci-dessous, l’étape de cone tracing, et à gauche, le système de voxels.

cone tracing

Au final, les résultats obtenus ne provoquent pas d’artefacts. Les sources dynamiques sont prises en compte, de même que les objets mobiles. L’illumination globale est calculée jusqu’au niveau 2 (2 rebonds successifs de la lumière entre la source lumineuse et la caméra), ce qui est suffisant pour obtenir un bon réalisme, tout en conservant des performances temps réel (25 à 70 FPS sur une GTX 580).

Le calcul de l’Ambient Occlusion se dérive assez simplement du système mis en place :

Contrairement aux méthodes telles que le SSAO, on n’a pas d’artefacts lors des mouvements de caméra, sans compter que le rendu est plus proche de la réalité, et que l’occlusion lointaine est prise en compte.

Cyril Crassin présentera un talk dédié à ce travail de recherche lors du prochain SIGGRAPH, le 9 août. Pour ceux qui ne seront pas sur place, la présentation sera rapidement mise en ligne.
Plus de détails techniques sont également disponibles en ligne, avec une partie de sa présentation du SIGGRAPH, et un poster dont sont issus les schémas techniques de cet article.

Enfin, n’hésitez pas à faire un tour sur le blog de Cyril Crassin.

Chargement....

A Lire également