Salut tout le monde !
Alors, ça faisait longtemps, j'ai pas mal de choses à vous annoncer !
Tout d'abord, petite liste des nouveautés:
- Les événements ne sont plus gérés par polling SFML-like mais par signaux, bien que l'ancienne méthode demeure utilisable dans le moteur, je préconise maintenant de passer par les signaux du moteur, bien plus adaptés à une application plus complète.
Ça ressemble à ceci:
1 2 3 4 5 | Nz::EventHandler& eventHandler = window.GetEventHandler(); eventHandler.OnKeyPressed.Connect([](Nz::EventHandler*, const WindowEvent::KeyEvent&) { // Action en cas d'appui sur une touche }); |
La boucle événementielle de la fenêtre est donc maintenant gérée directement par l'application, et de plus la fenêtre se ferme maintenant toute seule par défaut lorsque le système lui demande (cela comprend la fermeture par la croix en haut à droite sous Windows).
- Les particules sont maintenant enfin intégrées au SDK, elles seront présentée via une démo qui viendra faire son apparition
- Le Deferred Shading est de retour, aux environs de l'apparition du SDK le Deferred Shading (technique de rendu moderne permettant de gérer des centaines voire des milliers de lumières dynamiquement) a cessé de fonctionner, ce que je n'avais pas remarqué car j'utilisais le ForwardShading pour mes rendus durant cette période, c'est maintenant corrigé et il suffit d'une ligne pour l'activer:
world->GetSystem<Ndk::RenderSystem>().ChangeRenderTechnique<Nz::DeferredRenderTechnique>()
- Il est maintenant possible de cloner les entités, cloner les entités permet de constituer des entités dite template, désactivées (n'ayant aucun impact dans le monde) mais servant de base pour créer de nouvelles entités, avec leurs composants déjà en place et paramétrés comme bon vous semble.
- Le Deferred Shading a été optimisé, il prend moins de mémoire et est légèrement plus rapide (l'intérêt était surtout de faire de la place dans le G-Buffer pour la suite).
- Vous n'avez plus besoin d'utiliser des options en ligne de commande pour premake, j'ai ajouté un fichier config.lua permettant de changer la façon dont vous souhaiter générer le projet, plus pratique que la ligne de commande.
- Comme je vous en parlais, la classe Material a été changée, une nouvelle classe
MaterialPipeline
a fait son apparition, gérée de façon transparente. Chaque matériau est lié automatiquement à un MaterialPipeline unique en fonction de ses paramètres, utilisé lors du batching pour activer les paramètres du rendu.
Cela signifie que vous pouvez avoir par exemple une dizaine de matériaux quasiment identiques (n'ayant que leurs textures pour les différencier) qui vont utiliser le même MaterialPipeline, et lors du rendu seront regroupés ensemble par le moteur, qui ne changera l'état du GPU (shader compris) qu'une fois. - Les composants des entités ne sont maintenant supprimés que lors de la mise à jour du monde, c'est un petit changement mais qui permet maintenant à un système de supprimer un composant en pleine mise à jour sans se soucier des répercussions que ça aura sur les systèmes suivants.
-
Nazara propose dorénavant une console et un compteur de FPS pour chaque programme, il vous suffit maintenant d'utiliser
Ndk::Application::EnableFPSOverlay(true);
pour obtenir un compteur de FPS dans le coin haut-gauche de chaque fenêtre de votre application.
Cela fonctionne également avec la console, intégrée directement au moteur, qui vous permet de modifier les applications à votre guise.
De plus, vous pouvez lancer une application faite avec Nazara en rajoutant en ligne de commande les paramètres -console ou -fpscounter pour obtenir automatiquement ces deux choses (bien entendu vous pouvez forcer leurs désactivation). -
Il est maintenant possible de changer le point d'origine des sprites, très utilisé pour changer le centre de rotation de ceux-ci très facilement.
- Vous pouvez également rajouter une matrice locale en attachant un InstancedRenderable à un GraphicsComponent, de la sorte plus besoin d'avoir une entité par objet affichable.
- Il est maintenant possible de changer la couleur d'un sprite directement au niveau des sommets, cette fonctionnalité sert surtout à réaliser des effets sympathiques, comme des gradients, sans pour autant s'embêter avec une texture.
- Grâce aux efforts de Gawaboumga, la documentation intègre maintenant le SDK !
Désolé pour le gros bloc de texte indigeste, mais je vous avais promis du progrès !
Viennent ensuite d'autres changements qui ne touchent pas directement au code:
Tout d'abord dans un avenir proche je pense intégrer (enfin) le PBR dans Nazara, ainsi que d'autres améliorations graphiques (dont une presque terminée que je vous laisserai en aperçu à la fin de ce message).
Une autre nouvelle, concernant le logo vieillissant, celui-ci va être changé, pour l'instant j'hésite sur deux variations que voici:
Personnellement je préfère les traits du premier mais votre avis m'intéresse
Merci d'avoir lu jusqu'au bout !