Project

General

Profile

Version 0.9.0

Au programme : améliorations des performances, systèmes de particules, Skybox, FXAA.
Added by dragonjoker59 about 6 years ago

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