En juin dernier, nous évoquions une méthode innovante de rendu d’illumination globale et ambient occlusion temps réel, développée par un groupe de chercheurs dont fait partie Cyril Crassin, alors en thèse à l’INRIA. |
L’occasion d’aborder cette technique, donc, mais aussi ses limites et développements futurs. Nous revenons aussi avec Cyril sur son parcours, l’équipe dans laquelle il travaillait ou encore la recherche 3D en France. |
Ci-dessous, vidéos montrant les résultat du projet de recherche, pour l’illumination indirecte puis l’Ambient Occlusion.
Bonjour ; en juillet dernier, j’ai soutenu ma thèse de doctorat de l’université de Grenoble et je poursuis maintenant des recherches postdoctorales dans le groupe recherche de NVIDIA (basé à Santa Clara, dans la baie de San Francisco). |
J’ai en effet effectué ma thèse dans l’équipe ARTIS (devenue MAVERICK à partir de cette année) de l’INRIA Grenoble. IL s’agit de l’une des deux équipes de recherche en informatique graphique (avec EVASION) du centre de recherche. C’est ce que l’on appelle une équipe-projet INRIA qui est membre du laboratoire Jean Kuntzmann (LJK) et regroupe des chercheurs qui dépendent de l’université de Grenoble, du CNRS, de l’INPG et de l’INRIA. |
3DVF : Sur quelles thématiques et problématiques l’équipe travaille-t-elle actuellement ? Je ne suis pas le mieux placé pour en parler, mais actuellement les thématiques de l’équipe tournent principalement autour des modèles de matériaux et de leur filtrage, la visualisation scientifique, l’illumination globale, la représentation et le rendu de phénomènes naturels, la perception et la stylisation non photoréaliste. Les publications récentes peuvent être consultées sur le site de l’équipe. 3DVF : Revenons maintenant sur ton travail de recherche sur l’illumination indirecte, qui a fait l’objet de plusieurs publications au cours de l’année 2011 et d’une présentation au SIGGRAPH. Peux-tu nous expliquer quelle approche vous avez choisie, et l’algorithme global ? Au contraire de la majorité des travaux précédents, nous avons fait le choix d’effectuer ce calcul d’illumination indirect non pas sur le maillage triangulaire de la scène, mais sur une représentation voxel (volumique) de celle-ci. Une telle représentation permet un « préfiltrage » de la géométrie qui facilite et accélère le calcul de transport radiatif dans la scène. |
Ce travail se situe dans la continuité de mes précédents travaux de thèse tournant autour de l’utilisation d’une représentation volumique pour le rendu haute qualité de vastes scènes extrêmement détaillées (le projet GigaVoxels). |
Ci-dessous, le principe du rendu en cone tracing, avec le système d’octree. La subdivision de l’espace est non uniforme : on ne subdivise le maillage que lorsque qu’une portion contient un objet.
En bas à droite, le schéma du système implémenté sur GPU.
3DVF : Une division de l’espace en voxels, c’est pratique, mais quid d’un univers de jeu non statique ? Comment se passe la mise à jour lorsque, par exemple, des objets bougent ? Est-ce que cela ne risque pas de consommer trop de temps de calcul sur des scènes très dynamiques ? Une grosse partie du travail sur cette approche a été de rendre rapides la voxelization et la mise à jour de la structure de données. J’ai pour cela développé un algorithme très performant de voxelisation hiérarchique à l’intérieur d’un octree, qui tire parti du pipeline graphique de rasterization. Cet algorithme sera d’ailleurs publié l’année prochaine dans le livre OpenGL Insights. De plus, lorsqu’on observe un environnement réel de jeu vidéo, une grande partie du décor est en fait majoritairement statique ou simplement localement modifiable. |
Mais c’est aussi pour ce genre de raison que les algorithmes développés en recherche ne sont généralement pas utilisables immédiatement en production, mais que cela demande souvent quelques années avant que les GPUs soient assez rapides et que ce genre de cout ne devienne totalement acceptable dans un contexte de jeu vidéo. 3DVF : Qui dit voxels dit informations à stocker en mémoire… Le système est-il optimisé sur ce plan ? La structure de donnes à base d’octree est déjà un premier moyen de grandement compacter les données. Ensuite pour les très larges scènes, un mécanisme de paging et de streaming dynamique des donnes en mémoire vidéo devient indispensable. C’est ce pour quoi le système GigaVoxels a été développé, et l’étape suivante est maintenant de coupler les deux projets afin de profiter d’un tel système pour l’illumination indirecte. |
Ci-dessous : application du système pour le calcul de l’ambient occlusion.
3DVF : Les méthodes actuelles de gestion de l’illumination globale ou de l’AO temps réelles sont loin d’être parfaites, avec notamment des artefacts visuels parfois flagrants (notamment avec le SSAO, méthode largement utilisée dans les jeux next gen actuels), ou un cruel manque de réalisme. Le fait de travailler réellement avec l’ensemble des informations de la scène plutôt que d’utiliser des donnes en espace écran permet de ne pas rater d’informations non visibles du point de vue courant, mais qui pourtant contribuent à l’éclairage indirect. C’est principalement à cause de ce phénomène que les méthodes screen-space présentent des problèmes de qualité ainsi que du « popping » et des discontinuités temporelles dont ne souffre pas notre approche. |
3DVF : Même question sur le plan des performances… Cette technique serait-elle utilisable dans un moteur actuel ? Dans quelle mesure les performances dépendent-elles de la scène ? Comme décrit précédemment, les performances de l’approche dépendent grandement du nombre et de la taille des objets dynamiques de la scène, plus ils sont nombreux et volumineux et plus leur voxelization sera longue. |