Ce moteur 3D (ce n'est pas un moteur de jeu!!) a l'ambition d'être multiplateforme.
Pour l'instant, le développement sous Windows et Linux est complètement exploitable. Pour Linux, la distribution testée est une Archlinux amd64.
Support de nombreux formats de fichiers en utilisant ASSIMP.
Version 0.9.0
Au programme : améliorations des performances, systèmes de particules, Skybox, FXAA.
Modifications
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.
Téléchargements
Exécutables
Installeur de Castor3D (Windows x86).
Installeur de Castor3D (Windows x64).
Données optionnelles
Images et scènes de test.
Documentation de l'API (français).
Documentation de l'API (anglais).
Système de particules
Morphing
Picking
Brouillard