Hier soir j'étais à une soirée organisée par le Paris ACM SIGGRAPH, où étaient présentés trois projets lié au rendu temps réel. Une soirée très agréable s'il en est, qui a commencé par uneprésentation par François de Sorbier sur les techniques de rendus pour les écrans relief (aussi appelés auto-stéréoscopiques). Cette présentation, assez technique, montrait les avancées faites pour permettre de rendre jusqu'à 12 vues par une seule carte graphique, sans descendre en dessous de 24 images par seconde.

Le deuxième projet présenté est celui de la start up Onesia, qui propose un logiciel de visualisation CAO photo-réaliste en temps réel, en prenant notamment appui sur une utilisation combinée du GPU et du CPU, permettant d'obtenir du Raytracing quasi temps réel, ainsi que de l'ambient occlusion et de l'illumination globale.

Exemple de rendu par Orealia

La partie qui m'a le plus intéressé était la dernière présentation, celle des recherches de Cyril Crassin sur l'utilisation et le rendu de Voxels en temps réel.

Rendu du Stanford Bunny avec la methode GigaVoxel

Un Voxel (Volume Element) est l'équivalent 3D du pixel. Un objet est décrit par une grille décomposant l'espace 3D, où chaque case (ou Voxel) possède une information de densité, et éventuellement de couleur et de transparence. Cette approche n'est pas neuve, puisqu'on l'utilise déjà pour faire des effets spéciaux au cinéma (brume, fumée, nuage, etc..). Le problème principal est que les données de base sont souvent lourdes. Pour avoir un modèle de qualité, comptez une grille de 1024*1024*1024 voxel, soit 4 Go de donnée, soit un peu moins d'un DVD classique. Pour un modèle plus fin (2048*2048*2048 voxels), on arrive à 32Go, c'est à dire 4 DVD double couche.

Quand on sait que la carte graphique de monsieur tout le monde possède rarement plus de 512 Mo de mémoire dédiée, on comprend qu'il est difficile d'utiliser des Voxel en temps réel. Mais là où l'approche de Cyril est innovante, c'est qu'il tire partie de la carte graphique en utilisant un modèle de donnée en Octree. Grace à cette structure, et un logiciel (open source) qu'il a développé, il est capable de faire des rendus à partir de modèle allant jusqu'à un tera octet, avec une carte graphique vieille de 2 ans.


GigaVoxel : High Quality Realtime Sparse Voxel Octree Ray-Casting[Youtube]

Je ne vais pas refaire une explication complète de l'algo utilisé (notamment parce que je ne suis pas familier avec certains concepts, notamment l'architecture d'une carte graphique), mais je vous invite à aller lire la publication.

"L'éponge de Serpinski possède un volume nul et une surface infinie."