Par l'équipe Codermind. |
|
Nous avons donc atteint la partie finale de notre série de tutoriaux et bien que nous vous ayons exposé tout ces algorithmes, nous devons rappeler une chose : nous avons à peine effleuré la surface des moteurs de terrain.
C'est la partie finale de notre serie d'articles sur le moteur de terrain par voxel. Elle fait suite à la troisième partie appelée Moteur de terrain par voxel - Améliorations du rendu.
Conclusion et travaux dérivés
Voici, l'image finale de ce tutorial. Nous avons démarré avec une carte d'élévation et une carte d'albedo (diffusion) que nous avons découpé en petits morceaux pour pouvoir facilement déterminer les parties de terrain non visibles. Nous utilisons une détection rapide d'occlusion qui nous permet de mettre à jour un pixel en une seule fois et nous donne de l'antialiasing vertical en bonus. L'arrière plan est un simple modèle procédural du ciel et du soleil.

Qu'est-ce qu'il reste à améliorer dans ce moteur ?
Pour commencer à ce niveau de qualité ce n'est pas forcément rapide et presque non interactif (3 images par secondes sur ma machine en extra haute quality, un peu plus de 20 images par secondes dans la version basse qualité). Il y a définitivement de la marge pour gagner en performance. En utilisant des algorithmes encore plus efficaces, en faisant un profil du code pour éliminer les failles plus ou moins visibles, voire retravailler certaines des parties critiques en assembleur (en utilisant les dernières extensions du CPU).
Aussi le terrain est entièrement chargé en mémoire au début ce qui est OK pour une simple démo technique. Mais ce qui se passerait si l'on voulait rendre une région entière avec un fort niveau de détail avec des gigaoctets de data c'est que l'on devrait se passer de tout charger. Par exemple pousser l'algorithme de LOD pour ne plus charger que les parties qui sont visibles et au niveau de détail le plus bas pour diminuer l'empreinte mémoire. Si l'on avait conservé la formule utilisée pour construire le terrain il est même envisageable de construire le terrain au fur et à mesure de l'avancée et donc ne plus avoir à monopoliser du disque pour ça (bien entendu il faut que la formule utilisée pour reconstruire le terrain soit suffisamment simple pour pouvoir y gagner quelque chose).
L'éclairage et l'ombrage sont statiques parce qu'ils sont fait durant la phase de création par un renderer offline. Celui-ci est de très bonne qualité mais n'est pas forcément très rapide. Nous pourrions abandonner un peu de cette qualité pour faire un environnement où la lumière serait dynamique et les conditions de lumière mise à jour en temps réel. Nous pourrions également implémenter un modèle plus complexe du ciel, être capable d'avoir un ciel plus réaliste à des heures de la journée différentes ou avec des saisons, des nuages procéduraux ou préfaits etc.
Je finirai cet article sur cette touche, savoir que les possibilités d'améliorations sont innombrables et peuvent être implémentés comme un exercice par les lecteurs s'ils veulent découvrir plus.
Source code et exécutable ici : voxelweb.rar (5.77Mb). Download winrar.




