Des précisions pour compléter la video ci dessus :
Arbres de nouvelle génération et OpenGL
Par Sydney Just du blog Dev :
En juin dernier, Ben a partagé quelques informations concernant le pipeline d'éclairage de nouvelle génération de X-Plane. Il est maintenant temps de retourner dans le futur et de parler d'un autre élément de la prochaine génération : La végétation. Au cas où vous l'auriez manqué, Chris et Thomson ont également réalisé une superbe vidéo de présentation :
Vegetation
Comme vous pouvez le voir, la végétation a été considérablement améliorée par rapport à ce que nous avons actuellement. Au lieu d'un ou deux arbres quadruples coincés les uns dans les autres, nous avons maintenant des arbres 3D entièrement modélisés et animés, et beaucoup d'entre eux. Les animations de la végétation sont basées sur les conditions de vent actuelles, ce qui leur donne une sensation très agréable et dynamique. Ils sont également pré-saisonnés pour plus de saveur, de sorte que leur apparence correspondra à la saison locale dans laquelle vous vous trouvez actuellement. Naturellement, cela a donné lieu à de nombreuses questions, je vais donc essayer de répondre aux deux questions les plus courantes que j'ai vues :
Comment fonctionnent les nouveaux arbres et qu'advient-il de mes anciens arbres ?
Bien que le moteur de végétation soit construit à partir de zéro, il utilise le format de fichier .for existant. Bien sûr, le format de fichier .for a reçu quelques ajouts pour pouvoir traiter les maillages 3D ainsi que certains paramètres supplémentaires, mais la principale conclusion est que si vous avez déjà des forêts personnalisées, elles continueront à fonctionner. Cela signifie également que si vous êtes un auteur de scènes, vous pourrez étendre vos arbres à la troisième dimension et fournir des mises à jour à vos utilisateurs. Toute la végétation fournie avec X-Plane a déjà été améliorée avec des versions 3D - Petr a fait un travail absolument phénoménal pour créer ces arbres. Donc, si vous avez des scènes qui utilisent la bibliothèque de forêts intégrée, vous n'avez pas besoin d'apporter de modifications pour les intégrer à vos scènes.
Les arbres quadruples continueront à fonctionner comme avant si vous avez un fichier .for qui n'a pas été mis à jour pour les arbres 3D. Ils tireront cependant parti du nouveau moteur de végétation pour le rendu. Comme le système forestier utilise les mêmes règles de recherche de scènes qu'auparavant, il est également possible de forcer les anciennes scènes avec des fichiers .for personnalisés à utiliser les nouveaux arbres 3D en utilisant un fichier library.txt personnalisé. Je suis sûr qu'il y aura au moins une poignée de personnes qui voudront faire cela. Mais en général, le nouveau système de végétation devrait fonctionner sans aucun problème de compatibilité.
Enfin, les animations du vent : Elles sont réalisées dynamiquement sur le GPU, bien qu'elles soient pilotées par des paramètres fournis par le fichier .for et des attributs de vertex supplémentaires sur le maillage. Il est ainsi facile de rendre le tronc de l'arbre très rigide et de résister à la flexion, par exemple, tandis que les feuilles peuvent voltiger librement au gré du vent. Cela signifie que vous n'avez pas besoin de truquer les arbres de quelque manière que ce soit ; en tant qu'auteur de décor, vous pouvez simplement peindre les différentes parties des arbres dans Blender par exemple, et laisser le système piloter toutes les animations.
À l'avenir, des mises à jour des outils et des spécifications des fichiers .for seront disponibles pour les auteurs de décors, de sorte que l'adoption des arbres 3D devrait être très facile.
Cela va sûrement être incroyablement lent, non ?
Lorsque nous avons entrepris de créer le moteur de végétation de nouvelle génération, nous savions que nous devions construire un système capable de gérer des millions d'arbres. S'il est encore trop tôt pour vous donner des indications sur la configuration matérielle requise, je peux affirmer que le système est conçu pour gérer un grand nombre d'arbres. Cela est possible parce que le nouveau moteur de végétation est conçu pour n'utiliser que très peu de traitement CPU, et déplace la majorité du travail vers le GPU. Une grande partie du traitement lourd des arbres se produit également très tôt dans l'image, à un moment où le GPU est essentiellement inactif et attend les commandes de dessin du CPU. Pour ceux qui sont curieux de l'aspect technique de la chose, nous faisons un usage intensif du calcul pour réduire la liste des arbres à ceux qui sont réellement visibles par la caméra. Nous utilisons ensuite ces informations pour préparer un ou plusieurs appels indirects au dessin. De cette façon, le CPU peut envoyer des forêts qui s'étendent sur plusieurs kilomètres pour traitement et le GPU génère le reste des données tout seul.
Dessiner beaucoup de géométrie est, bien sûr, plus coûteux que de ne pas en dessiner. Même si nous ne dessinons que ce qui est réellement à l'écran, dessiner quoi que ce soit n'est pas gratuit. Nous utilisons donc également un schéma LOD classique. Les auteurs de décors peuvent créer plusieurs LOD 3D pour leurs arbres, et un LOD supplémentaire pour les panneaux d'affichage est généré à la fin de la chaîne. Les panneaux d'affichage ne sont que des quads d'arbres plats qui font toujours face à la caméra, de sorte qu'ils donnent toujours l'illusion d'une grande complexité géométrique à distance. De cette façon, nous pouvons remplir la vue de près avec quelques centaines d'arbres 3D complexes, puis passer au panneau publicitaire bon marché pour remplir le reste de la scène. Les décisions relatives au LOD sont également prises par le GPU sur une base individuelle, par arbre, de sorte que le GPU crée littéralement sa propre charge de travail optimisée.
OpenGL
La technologie des arbres de nouvelle génération fait un usage intensif de fonctionnalités qui ne sont devenues possibles que grâce à Vulkan et Metal. En fait, il n'y a pas que la technologie des arbres, le nouvel éclairage et d'autres fonctions de nouvelle génération font un usage intensif de fonctions auxquelles nous avons enfin accès. La route vers Vulkan et Metal n'était pas seulement destinée à rendre la simulation plus rapide, mais aussi à ouvrir la voie à ce qui est à venir. Alors, qu'est-ce que cela signifie pour le vénérable backend de rendu OpenGL ? Malheureusement, il n'y a pas de future génération pour OpenGL, car il n'est tout simplement pas possible de le supporter. Mais n'ayez crainte, ce n'est le cas que pour le rendu propre à X-Plane. Les plugins pourront continuer à utiliser OpenGL, comme c'est le cas actuellement avec Vulkan et Metal.
Donc si vous avez des plugins utilisant OpenGL qui fonctionnent avec X-Plane 11.55 sous Vulkan ou Metal, ils devraient continuer à fonctionner dans le monde de la prochaine génération également. La seule exception ici étant la phase de dessin modern3D. Le nouveau moteur d'éclairage étant entièrement photométrique, le dessin 3D à l'ancienne ne fonctionne plus, car il n'est pas au courant du fait que les pixels ne sont plus des triplets rgb8. Je ne peux pas encore parler d'un remplacement, mais c'est certainement quelque chose que vous devriez garder à l'esprit si vous êtes sur le point de commencer à écrire un nouveau plugin aujourd'hui.
A part cela, les panneaux personnalisés et le dessin de l'interface graphique continueront à fonctionner comme maintenant.