Mount & Blade II : Bannerlord - Carnet de développement n°44 : « Moteur »

Salutations, guerriers de Calradia !

L'article de cette semaine présente les nouveautés introduites par la version 1.4 de notre moteur. Cette mise à jour apporte de nombreuses améliorations graphiques, ainsi que des modifications liées aux performances de jeu.

Nous développons les fonctionnalités du moteur dans des branches séparées disposant de leur propre numéro de version. Ceci nous permet de tester les nouvelles fonctionnalités de manière extensive et efficace, sans diminuer la stabilité du jeu pour les programmeurs de gameplay.



Illumination globale
Nous avons introduit un nouveau système d'illumination globale dans notre moteur, capable d'illuminer correctement à la fois les objets statiques et dynamiques. Il est basé sur un système pré-calculé appelé « Precomputed Radiance Transfer (transfert de radiance précalculé) ». Il est indépendant de l'atmosphère, ce qui est essentiel pour un jeu comme Bannerlord qui vous permet d'entrer dans une scène à différents moments de la journée. Le système sauvegarde les données d'éclairage dans des « probes » à l'intérieur d'une grille régulière. Nous avons développé de nombreux outils de placement automatique afin que la quantité de travail demandée aux graphistes pour préparer les scènes soit réduite au maximum. Les modders pourront également pré-calculer l'illumination globale de leurs scènes en utilisant ces outils.

Compute Shader Skinning
En utilisant des profileurs, nous avons découvert que, dans les batailles de grande envergure, le GPU passe la majorité de son temps sur le skinning des mesh des agents. En temps normal, le processus de skinning est répété à chaque fois qu'un mesh doit être rendu (passe d'ombrage, passe du gBuffer, passe spéciale pour le shading des cheveux...). Pour alléger cela, les calculs de skinning ont été déplacés d’un vertex shader à un compute shader. Même si ces deux processus font appel au GPU, exécuter une étape séparée pour le skinning et en stocker les résultats dans la mémoire temporaire nous permet d'effectuer les calculs de skinning une fois par frame et de mettre en place des techniques d'optimisation qui sont exclusives aux compute shaders. Ceci réduit de 60 % le temps de rendu du skinning des mesh, nous permettant d'atteindre 60FPS dans les grandes scènes de bataille sur une large gamme de GPU.

Particle Shading Atlas
Les particules sont désormais traitées dans un compute shader séparé. Chaque particule visible se voit assigné une région rectangulaire (2x2, 4x4, 8x8, 16x16 ou 32x32) dans un grand atlas global de textures en fonction de l'espace occupé à l'écran. Le shading est effectué sur ces toutes petites surfaces dans un compute shader. Pour le véritable rendu, nous nous contenons d'échantillonner les résultats d'éclairage à partir de l'atlas de textures, ce qui nous évite des calculs d'éclairage complexes. Séparer les étapes de shading et d'affichage nous permet de réduire le coût en fill rate des particules, car la quantité de pixels traités est très réduite. Cela réduit la charge sur le GPU de scènes intensives comme celles dans des paysages désertiques. Cette technique permet également d'éliminer les ombres trop marquées sur les éléments de particules, ce qui améliore encore la qualité des superbes particules de Bannerlord !

À ce stade, il est important de rappeler que, même si nous continuons à développer le moteur et à y ajouter de nouvelles fonctionnalités, ce travail se fait en parallèle du reste du développement de Bannerlord. Notre équipe dédiée au développement du moteur travaille sans relâche pour nous fournir un moteur plus efficace et mieux optimisé qui nous permettra de mettre en scène des batailles plus grandes avec un meilleur taux de rafraîchissement, une fidélité visuelle plus avancée et des temps de chargement plus courts. Ce travail ne ralentit d'aucune manière le développement du jeu et ne fait qu'améliorer la qualité du produit final.

Dans l'article de la semaine prochaine, nous nous entretiendrons avec le programmeur de gameplay Korneel Guns. Korneel se spécialise tout particulièrement sur l'aspect multijoueur de Mount & Blade II: Bannerlord.

Venez réagir à ce carnet sur notre forum.

(traduction française par Taleworlds).
Carnet original par Callum.