Les limites
Cette technique a beau être séduisante elle n’en est pas pour autant dénuée de défauts. Le principal problème vient du fait que la construction de l’octree est coûteuse, par conséquent il n’est pas vraiment envisageable de modifier la structure de données à l’exécution. Cet inconvénient rend l’utilisation d’un octree de voxels pour la géométrie dynamique particulièrement compliquée. La proposition d’id Software pour contourner ce problème consiste à utiliser l’octree uniquement pour la géométrie statique, tous les éléments dynamiques de la scène seraient affichés en utilisant la bonne vielle rastérisation de triangles.
Il est dommage que le franchissement d’un cap visuel soit accompagné d’une telle restriction, en effet lors d’un changement de génération les joueurs s’attendent également à franchir un cap en matière d’interactions avec le décor. Lorsqu’on parle de voxels la première réflexion des joueurs consiste à penser à des mondes enfin destructibles, s’imaginant pouvoir tirer dans un mur et voir la géométrie s’altérer, révélant diverses couches de matériaux, mais pour le moment il semble que ça ne soit pas vraiment envisageable. Nous sommes bien partis pour conserver nos murs indestructibles quelques années encore.
Un autre problème concerne le système de streaming, comme nous l’avons vu cette technique de rendu est particulièrement adaptée pour augmenter le niveau de détails au fur et à mesure qu’on se rapproche progressivement d’un objet, le système se chargeant de ramener les données de l’octree en tâche de fond et du fait de la façon dont ses données sont organisées tout cela peut se faire de manière fluide. Mais que se passe-t-il lorsque nous nous téléportons à un autre endroit du monde ? Toute la géométrie est unique et le système de streaming est pris à défaut. Il faut donc s’attendre à voir une géométrie très basique pendant un moment, puis à la voir s’affiner au fur et à mesure, ou bien voir les game designers contourner ce défaut en évitant ce genre de situations. Ce problème n’est pas unique aux octrees de voxels, tous les systèmes de streaming reposent sur l’hypothèse d’une variation relativement continue du niveau de détails et sont pris à défaut dans le cas de changements brutaux, mais actuellement ça ne concerne que les textures et si voir une texture de basse résolution pendant une seconde ou deux est désagréable, voir un octree de basse résolution risque d’être visuellement assez affreux.
Un autre inconvénient que l’on peut recontrer avec les voxels concerne la pixellisation. En effet si l’on se contente d’afficher la couleur des voxels que le rayon intersecte, il est possible de discerner les limites des cubes ce qui donne un effet old-fashion très déplacé pour une technique qui se veut le futur des techniques de rendu. Heureusement il est possible de résoudre ce problème en utilisant le filtrage trilinéaire : au lieu de filtrer dans les deux dimensions comme avec les textures il faut cette fois filtrer selon les trois dimensions.

Enfin dernier challenge à relever, malgré l’avantage procuré par la structure d’octree, l’espace mémoire nécessaire pour stocker un monde entier sous forme de voxels reste énorme. Comme nous l’avons vu ça n’affecte pas vraiment les ressources nécessaires à l’exécution, mais en revanche pour pouvoir manipuler puis stocker et enfin distribuer de telles structures de données id Software va devoir travailler à de sérieuses techniques de compression. Jon Olick donne quelques indications à ce sujet et semble satisfait des taux de compression qu’il a obtenus.
"Ces premiers résultats sont extrêmement prometteurs pour le matériel qui sera disponible à la sortie des jeux exploitant cette technique. [...] il y a de grandes chances pour que nous devions encore attendre 3/4 ans pour voir ce type de rendus se démocratiser."
Un peu rapide comme conclusion je trouve... A part Carmack, personne n'a annoncé un moteur massivement basé sur du stream de voxels. Et encore, il n'a rien confirmé, juste dis vers quoi il orientait ses recherches. Et Olik a quitté sa boite.
Carmack a déjà fait des pas en arrière. Par exemple en arretant l'utilisation des stencil shadow volume (depth-fail, le fameux Carmack's Reverse sur lequel il a tellement bossé) pour se rabattre sur des shadow maps avec l'idTech5.
Qu'en est il des éclairages? des interactions avec les shaders?
L'article est très clair, bien expliqué... compréhensible par tous, et de surcroit très intéressant. Merci!
Un peu rapide comme conclusion je trouve... A part Carmack, personne n'a annoncé un moteur massivement basé sur du stream de voxels.
Tout à fait la phrase est mal tournée, elle devrait plutôt être comprise dans le sens "SI cette technique devait à s'imposer il faudrait encore attendre 4 à 5 ans avant de voir des jeux l'exploiter"
Mais effectivement à l'heure actuelle c'est un gros point d'interrogation. Concernant les autres sociétés qui bossent sur du streaming de voxels je crois que Crytek a fait une présentation à la GDC où ils en parlent pour le futur du CryEngine même si là encore ça reste des travaux préliminaires.
http://www.gamasutra.com/php-bin/n [...] tory=24865
Tim Sweeney en a parlé aussi dernièrement à la conférence High Performance Graphics de cette année même s'il a l'air de son côté plus intéressé par REYES.
Qu'en est il des éclairages? des interactions avec les shaders?
Il n'y a pas franchement de différence avec ce qui se passe aujourd'hui : évidemment il n'y a plus la distinction vertex/geometry/pixel shader : lorsque le rayon intersecte un voxel à ce niveau là tu peux tout à fait exécuter un shader qui prend en entrée les paramètres de ton voxel : couleur/normal et autres informations que tu juges intéressantes d'y stocker et qui va ensuite calculer l'éclairage de la manière que tu veux. Vu que la structure serait a priori totalement statique dans un premier temps du moins, il est probable que l'éclairage soit précalculé et stocké directement dans l'octree (c'est déjà ce qu'id fait avec l'idTech 5 en stockant les informations d'éclairage statique dans la MegaTexture),
L'article est très clair, bien expliqué... compréhensible par tous, et de surcroit très intéressant. Merci!
Merci
ça intérêt à être sacrément optimiser !
Merci pour l'article
Merci pour l'article. D'ailleurs si on pouvait avoir un peu plus d'article de ce niveau, pas seulement pour les graphismes mais aussi pour l'audio souvent négligé - à bon entendeur...
Merci pour l'article. D'ailleurs si on pouvait avoir un peu plus d'article de ce niveau, pas seulement pour les graphismes mais aussi pour l'audio souvent négligé - à bon entendeur...
L'audio n'est pas vraiment négligé en terme d'environnement, c'est le coût qui est un frein monumental. Quand tu fais de la 3D, pas "difficile" d'octroyer une bonne machine à un développeur qui fera joujou sur Maya et consoeurs. A contrario, dès qu'on touche au son, c'est immédiatement des micros, des tables de mixages, des studios... et donc des coûts rapidement inabordables. bien sûr qu'il serait fantastique que le 5.1 et 7.1 actuel soient pris en charge et vraiment utilisés, mais combien de personnes en profiteront? C'est aussi ça, le problème: investir plusieurs millions pour 1% des joueurs cible?
super article , et vraiment clair et comprehensible , vu la complexité du sujet
Il y a quand même un problème de taille avec la perte du calcul de rayons secondaires! Bref une belle technique mais avec un vilain défaut.
)
Même si l'idée d'environnements destructibles et d'une physique beaucoup plus poussée m'a enthousiasmée quand j'ai compris le fonctionnement de ce rendu. Mais comme vous l'avez dit on peut encore rêver un moment avant ça. (le jour où on arrivera à produire des puces dont la trame sera faite de simples liaisons atomiques?!
I'm dreaming, mais ça fait atterrir et comprendre que dans quelques années ont pourra dire que finalement Crysis était bien loin d'un rendu photoréaliste (vidéoréaliste??), tout comme on peut penser cela quand on voit farcry qui était aussi dit photoréaliste à sa sortie.
En tout cas j'aime ces gens, ces sociétés qui travaillent vraiment à améliorer le rendu.
Merci pour l'article
@magellan, je suis d'accord avec toi, mais ne fut-il pas un temps où 1% des jeux étaient en 3D?
@magellan, je suis d'accord avec toi, mais ne fut-il pas un temps où 1% des jeux étaient en 3D?
L'audio n'est pas vraiment négligé en terme d'environnement, c'est le coût qui est un frein monumental. Quand tu fais de la 3D, pas "difficile" d'octroyer une bonne machine à un développeur qui fera joujou sur Maya et consoeurs. A contrario, dès qu'on touche au son, c'est immédiatement des micros, des tables de mixages, des studios... et donc des coûts rapidement inabordables. bien sûr qu'il serait fantastique que le 5.1 et 7.1 actuel soient pris en charge et vraiment utilisés, mais combien de personnes en profiteront? C'est aussi ça, le problème: investir plusieurs millions pour 1% des joueurs cible?
C'est dommage d'autant plus que les kits 5.1 ne coutent pas plus cher qu'une carte graphique haut de gamme.
Par exemple, le Logitech - Z-5500 Digital - 5.1 Certifié THX - 500W, le haut de gamme pourtant et un des meilleurs - qui peut, en plus, servir de home cinema -, est vendu à 216 € neuf sur Amazon. Face à une HD4870X2 à 340 € ou une GTX 295 MSI à 470 € mieux vaut prendre une "simple" 4870 avec ce kit 5.1... enfin, ce n'est que mon opinion...
Magellan : tu as raison ,mais on change beaucoup plus souvent de carte graphique que de systeme audio ,surtout sur le haut de gamme .... (ceci n'engage que moi)
A propos du son : perso, j'ai un kit 5.1 qui dort dans le garage, mon pc etant dans la salle a manger je ne peux pas m'en servir ... j'utilise donc un casque standard en 2.0 ... dommage car ma carte son intégré fait du 8.1 .........
les joueurs qui ont une piéce 'rien qu'a eux' et insonoriser pour jouer ne doit pas représenter bcp de monde