| Q&A |
ARTIS
- INRIA Rhône-Alpes, Gigavoxels
Cyril Crassin
Dec. 2009 |
| |
 |
“GigaVoxels
est nouvelle technique permettant le stockage et le
rendu efficace sur GPU de très grosses masses
de voxels. Les GigaVoxels sont en fait formés
de trois composants entièrement GPUs: une structure
de stockage hiérarchique à base d'octree,
un algorithme de rendu direct par ray-tracing volumique
et un mécanisme de cache. ”
<
GigaVoxel |
|
| |
|
| Q1 |
Nous
connaissons les Voxels - qui sont à la 3D ce que les
pixels sont à la 2D - , mais à quoi correspond
les "GigaVoxels" ? |
| A1 |
En
fait, il ne faut pas situer les deux choses au même
niveau. GigaVoxels n'est pas une nouvelle primitive de base
comme les voxels et les pixels. Il s'agit d'une nouvelle technique
permettant le stockage et le rendu efficace sur GPU de très
grosses masses de voxels. Les GigaVoxels sont en fait formés
de trois composants entièrement GPUs: une structure
de stockage hiérarchique à base d'octree, un
algorithme de rendu direct par ray-tracing volumique et un
mécanisme de cache. |
| |
|
| Q2 |
Les
Voxels sont aujourd'hui réservés à des
applications très spécifiques (essentiellement
médicales). Pensez-vous que cela puisse changer dans
la prochaine décennie ? |
| A2 |
Je
suis persuadé que cela va changer en effet. Les représentations
volumiques à base de voxels possèdent plusieurs
propriétés très intéressantes pour
le jeu-vidéo. La première utilisation qui vient
à l'esprit concerne évidemment le rendu direct
de phénomènes semi-transparents. Les voxels fournissent
une représentation naturelle pour les effets volumiques
tels que les gaz, les liquides, les nuages et tous les milieux
participatifs en général.
Mais, au delà des phénomènes semi-transparents,
les voxels permettent également de représenter
efficacement des géométries extrêmement
complexes, telles que les maillages produits par des logiciels
de modélisation comme ZBrush. De tels maillages sont
composés d'un très grand nombre de triangles d'une
taille bien inférieure à un pixel. Leur rendu
par rasterisation classique s'avère extrèmement
inefficace car cela nécessite l'utilisation de techniques
de multi-sampling massif afin d'en assurer un filtrage correct
(éviter l'aliasing). De plus, l'utilisation de techniques
de simplification (LOD) sur de tels maillages, en plus de réduire
la qualité du rendu, demande énormément
de travail d'authoring qui est difficilement automatisable (simplement
car c'est un problème mal posé). Les voxels, au
contraire, fournissent une représentation naturellement
filtrable de la géométrie. Ils permettent ainsi
d'unifier géométrie et texture en une représentation
unique sur laquelle le LOD est bien définit. |
| |
|
| Q3 |
Les
Voxels sont réputés gourmands en mémoire
et bande passante. Est-ce que votre technique "Ray-Guided
Streaming" atténuent ces défauts ? |
| A3 |
Tout
à fait, et elle a été développée
pour ca !
Tout d'abord, les GigaVoxels reposent sur une structure hiérarchique
d'Octree qui permet de compresser les zones totalement vides
ou constantes, tout en subdivisant les zones détailles.
De plus, cette structure est totalement dynamique et gérée
par un mécanisme de cache qui permet de manipuler des
volumes de voxels de taille virtuellement infinie. Ce cache
charge les données à la demande sur le GPU, et
recycle les emplacements mémoires les plus anciennement
utilisés. Les requètes de chargement/subdivision
sont émises directement par les rayons lors du rendu
par ray-casting, ce qui permet de ne charger que le minimum
de données réellement visibles et non occultées.
Tous ces mécanismes sont implémentés et
exécutés entièrement sur GPU (en CUDA),
laissant ainsi le CPU totalement libre pour tout autre calcul.
|
| |
|
| Q4 |
L'industrie
graphique a choisit massivement les maillages polygonaux pour
représenter des objets 3D, au point que l'élément
de base des cartes graphiques est le triangle. N'avez-vous pas
l'impression d'aller à contre-sens des évolutions
du sous ensemble graphique ? |
| A4 |
Non
bien au contraire, je pense que l'évolution actuelle
des processeurs graphiques va justement dans le sens de l'ouverture
à l'implémentation efficace de nouveaux pipelines
de rendus tels que le notre. Les GPU évoluent vers de
plus en plus de généricité, les fonctions
fixes en charge de l'optimisation du traitement des triangles
disparaissent petit à petit au profit d'unités
de calcul génériques dédiées aux
traitements massivement parallèles. Les GPUs de la génération
du G80 de NVIDIA sont plus des clusters d'unités de calcul
SIMD que des accélérateurs pour la rasterisation
de triangles. L'implémentation d'algorithmes de rendu
alternatifs passe par la programmation en C++ (via CUDA) de
ces clusters de calcul, et cela devient alors un pur problème
de parallélisme. Je pense que ce mode de programmation
va rapidement remplacer l'utilisation des API graphiques historiques
(OpenGL/Direct3D), et ainsi ouvrir la voie a l'utilisation massive
de techniques de rendu alternatives. |
| |
|
| Q5 |
Pensez-vous
que les jeux pourraient tirer profit des GigaVoxels ? |
| A5 |
Oui
je pense, et certains studio de développement de jeux
s'y intéressent déjà ! |
| |
|
| Q6 |
Les
GigaVoxels supportent-il des animations et des déformations
? |
| A6 |
Ils
sont compatibles avec en tout cas. L'animation complète
du contenu des voxels en lui même est difficile, du fait
de la masse de données à transférer. Par
contre, la déformation est beaucoup plus aisée.
Nous n'avons pas encore de démonstration de ce genre
d'effet, mais nous y travaillons. |
| |
|
| Q7 |
DirectX11
introduit la subdivision et des techniques de tesselation dynamique
de polyèdres. Ces techniques peuvent-elles être
utilisées pour la visualisation de Voxels ? |
| A7 |
Pour
moi, ces fonctions n'apportent rien de vraiment nouveau pour
le rendu de voxels. Les geometry shaders en leur temps ont permis
l'implémentation plus efficace de techniques d'extraction
de surfaces à partir de grilles de voxels comme les marching
cubes. On pourrait peut être imaginé une implémentation
des marching cubes exploitant ces nouveaux hardwares, mais pour
moi l'intérêt des voxels n'est vraiment pas de
les visualiser en passant par des surfaces triangulées.
|
| |
|
| Q8 |
Aujourd'hui
on connait très bien les méthodes de création
de surfaces triangulées (outils DCC tels que 3ds max,
Maya...). Mais comment peut-on générer et créer
des Voxels ? |
| A8 |
Ils
peuvent etre générés de différentes
façons. Dans le cadre de fluides par exemple, ils peuvent
etre générés par simulation numérique,
il s'agit d'ailleurs généralement de la représentation
naturelle de ce genre de simulation. Ils peuvent également
etre issus de la numérisation d'objets par scanners,
ou générés par voxellisation de maillages
triangulés classiques. Il commence également
à apparaitre des logiciels de modélisation directe
par voxels tel que 3D-Coat, qui est un logiciel aux fonctionnalités
proches de ZBrush. |
| |
|
| Q9 |
Pouvez-vous
nous parler des évolutions futures des GigaVoxels et
leurs applications ? |
| A9 |
Nous
nous intéressons maintenant à des problèmes
spécifiques de filtrage afin de d'implémenter
efficacement et avec une haute qualité d'effets blurry
tels que le Depth-Of-Field, les glossy reflexions ou les soft-shadows.
Nous travaillons également sur l'animation par déformation
d'objets gérés par GigaVoxels. |
| |
|
| |
|