Version 0.9.0
Au programme : améliorations des performances, systèmes de particules, Skybox, FXAA.
Fonctionnalités¶
CastorUtils
- Abandon de libzip et intégration de minizip aux sources.
- Ajout des classes WorkerThread et ThreadPool.
- Amélioration de la classe Signal, grâce à l'ajout de la classe Connection, permettant de se déconnecter du signal sans en avoir l'instance, et permettant au signal de déconnecter tous les slots à sa destruction.
- Ajout des classes Range et RangedValue, pour utiliser facilement ces concepts.
- Ajout d'une classe de récupération des informations CPU : CpuInformations.
- Déplacement du code spécifique aux plateformes dans le sous dossier Platform/<nom plateforme>, pour faciliter l'ajout de nouvelles plateformes.
- Compile maintenant sur ARM (pour un futur port sur Android).
Castor3D
- Revue complète de la boucle de rendu : RenderPipeline n'est désormais plus une instance unique, il contient maintenant toutes les informations nécessaires au rendu d'un type d'objet (états, programme, liaisons avec les UniformBuffers, ...).
Ce changement a eu lieu pour préparer l'arrivée de Vulkan, dans lequel le pipeline de rendu ne peut plus être modifié après sa création, ce qui est maintenant le cas dans Castor3D. - Le rendu a été dispatché dans des RenderPass, qui ont chacune une ou plusieurs RenderQueues, qui sont mises à jour de manière asynchrone sur le CPU, en utilisant un pool de threads.
Cela permet à la boucle GPU d'être débarassée de la plupart des calcules CPU. - Ajout des Skybox.
- L'export binaire a été complètement repensé, pour utiliser un format par chunk de données (comme LWO ou 3DS).
Il est utilisé pour les maillages et les squelettes. - L'interface des plug-ins a été uniformisée.
- Implémentation des algorithmes de brouillard basiques (linéaire, exponentiel et exponentiel au carré).
- Les animations de type morphing (par sommet) sont maintenant supportées par Castor3D
- Implémentation du frustum culling.
- Implémentation d'une passe de Colour picking.
- Implémentation du shadow mapping, les sources lumineuses peuvent produire des ombres, et les objets peuvent projeter des ombres.
- Implémentation d'un système de particules, laissant à l'utilisateur le choix de l'implémentation (CPU au travers de la surcharge de classes, GPU via le Transform Feedback ou via les Compute Shaders).
- Correction des équations de calcul d'éclairage en GLSL, ainsi que de la gestion des sources lumineuses (orientation uniquement via SceneNode), pour avoir un rendu correct sans hacks.
- Intégration des Compute shaders à Castor3D, avec ses compagnons les Shader Storage Buffers et Atomic Counter Buffers.
- L'implémentation des Textures a été complètement revue, nous avons maintenant la classe TextureLayout, qui contient les TextureImages et le TextureStorage par image.
Cela a permis la création des textures cube. - Le transfert des textures en RAM a été corrigé.
- Le rendu des Billboards n'utilise plus les geometry shaders, mais repose maintenant sur l'instantiation hardware.
- FrameVariableBuffer a été remplacée par UniformBuffer, qui ne dépend plus du programme, et par UniformBufferBinding, qui elle dépend du programme utilisé.
Les instances de UniformBufferBinding sont stockées par RenderPipeline. - FrameVariable a été remplacée par 2 classes : Uniform (pour les variables uniformes d'un UniformBuffer), et PushUniform (pour kes variables uniformes hors d'un UniformBuffer).
RenderSystems
- Ajout de GlES3RenderSystem, pour commencer le port Android.
- Mise à jour e GlRenderSystem pour supporter les fonctionnalités de Castor3D.
Techniques
- DeferredRenderTechnique et DeferredMsaaRenderTechnique sont maintenant de vraies techniques de rendu différé, utilisant une passe d'éclairage par source lumineuse, en prenant en compte la zone d'effet de la source.
- DeferredRenderTechnique est maintenant la technique de rendu par défaut, si aucune n'est spécifiée.
PostEffects
- Création de l'effet GrayScale.
- Création de l'effet FXAA.
Comments