Voir le flux RSS

dragonjoker59

Version 0.7.0 de Castor3D

Noter ce billet
par , 03/12/2014 à 04h45 (550 Affichages)
Ajouts
Général
  • Découpe des fichiers afin de n'avoir plus qu'une class par fichier.
  • Support de la compilation x64.
  • Compability avec wxWidgets 2.8 et Linux améliorée.
  • Ajout du support d'AStyle.


CastorUtils
  • Toutes les variables statiques et globales ont été enlevées.
  • Remplacement de la classe String par une classe str_utils.
  • Suppression des dépendances à boost, à part pour thread, et uniquement pour les compilateurs ne supportant pas std::thread.
  • Modification de Castor::Point, les fonctions non dépendantes ont été déplacées dans une classe d'aide : Castor::point. Cette classe contient donc les fonctions normalise, get_normalised, dot, cos_theta, negate et toutes les fonctions de calcul de distance.
  • Amélioration de Castor::FileParser afin de pouvoir ignorer des sections de code sans avoir à les commenter (tels que les blocs de shader HLSL alors que le RenderSystem chargé est GlRenderSystem, etc.).
  • Modification de Castor::FileParser pour lui faire prendre en compte les paramètres des fonctions d'analyse.
  • Amélioration de Castor::FileParser, les fonctions peuvent maintenant avoir des paramètres, pas uniquement des types de paramètres, et ces paramètres s'analysent eux-mêmes.
  • Réduction de l'occupation mémoire des images.
  • Suppresision des méthodes Point::link, Point::copy/clopy/clone.
  • Les macros cstrnlen, cstrftime, cstrncpy, cfopen, cfopen64, cfseek et cftell ont été remplacées par des fonction dans Castor.
  • La classe Castor::Colour ne dérive plus de Point4f.
  • Suppression de la macro DECLARE_SHARED_PTR, remplacée par DECLARE_SMART_PTR, et les typedefs XxxPtr ont été remplacés par leurs équivalents XxxSPtr.
  • La fonction DynamicLibrary::GetFunction a été modifiée, ajout d'un paramètre template, le type de fonction, afin de ne plus avoir de conversions lors de l'utilisation de DynamicLibrary::GetFunction.
  • Ajout du support des niveaux de log pour Castor::Logger.
  • Implémentation de la méthode de calcul d'intersection pour la classe Line3D.
  • Cette classe a maintenant deux constructeurs nommés : FromPointAndSlope et FromPoints, pour éviter les confusions.
  • Création de deux nouvelles classes : Size et Positionau lieu d'un typedef pour chacune.
  • Castor::Point contient maintenant un tableau statique au lieu d'un tableau dynamique.
  • Création de la classe Castor::Coord pour récupérer la fonctionnalité dynamique de l'ancien Castor::Point
  • Suppression de l'encodage Unicode pour les fichiers.
  • Ajout du support de l'indentation de flux.


Castor3D
  • Les classes Submesh et SmoothingGroup ont été fusionnées.
  • Réduction de l'occupation mémoire des tampons de sommets.
  • Modificaion de Submesh::ComputeTangents pour prendre en compte les normales des sommets.
  • Modification de BufferElementGroup afin qu'il ne puisse plus contenir son tampon.
  • Réorganisation des unités de texture des passes, afin que celles associées à un canal arrivent premières.
  • Création d'une fonction Pass::Initialise afin que les shaders ne soient initialisés qu'une fois, et pas à chaque frame.
  • Modifié RenderTarget : elle contient maintenant son frame buffer et ce qui s'y rattache. C'est maintenant un Renderable et un TargetRenderer a donc été créé.
  • RenderWindow n'étend plus RenderTarget, mais en a un en membre privé.
  • Création des classes TextureBase, StaticTexture et DynamicTexture pour faciliter l'implémentation des cibles de rendu.
  • RenderTarget utilise maintenant RenderTechnique pour effectuer son rendu.
  • Déplacement du code de la fonction TargetRenderer::PostRender code dans la classe RenderWindow.
  • Création d'une méthode WindowRenderer::EndScene pour préparer le rendu du frame buffer de la RenderTarget dans la fenêtre.
  • Suppression des appels à ShaderObject afin d'en faire une classe interne à Castor3D.
  • La classe Overlay n'étend plus Renderable, il n'y a plus qu'une instance de OverlayRenderer, gérée par la classe OverlayManager. Toutes les incrustations sont maintenant rendues via cette instance.
  • Modification de la classe Castor3D::Scene, ajout de fonctions templates pour ajouter, supprimer ou récupérer un objet quel que soit son type (Light, Geometry, Camera, SceneNode).
  • Modification des shaders, ils prennent maintenant en compte le modèle de shader, contiennent tous les fichiers et sources définis par modèle. Le choix du modèle est fait à la compilation, en choisissant le modèle le plus haut supporté.
  • Amélioration de l'occupation mémoire : diminution drastique de la taille d'un Vertex (de 152 à 24 octets) et d'une Face (de 140 à 16 octets).
  • Modification de Subdivision, elle se trouve maintenant uniquement dans Subdivider et plus dans Geometry, Mesh ou Submesh.
  • Les lumières sont maintenant implémentées dans une texture, passant la limte de 8 à 100 sources.
  • Ajout des méthodes HasParameter et SetParameter dans la classe ShaderObject, pour appliquer les matrices de la classe Pipeline.
  • Suppression des méthodes ApplyXXXMatrix de la classe IPipelineImpl, maintenant la classe Pipeline applique les matrices elle-même.
  • Ajout de canaux pour les textures (couleur, ambiante, diffusion, speculaire, normale, hauteur, brillance).
  • Implémentation du MSAA.
  • Implémentation de l'Alpha to Coverage lorsque le MSAA est activé.
  • Modification des sources par défaut pour les shaders. Elles sont maitenant générées automatiquement et plus aucun fichier externe n'est nécessaire.
  • Implémentation des Frame Buffers.
  • Les Submesh sont maintenant triés en fonction du matériau appliqué afin de pouvoir, entre autres, rendre les sous-maillages avec transparence après les autres.
  • Ajout de fonctions Begin et End dans la classe Mesh afin de pouvoir itérer sur les submeshes sans passer par les fonctions GetSubmesh et GetSubmeshCount.
  • Ajout de fonctions Begin et End dans la classe Material functions Begin and End.
  • Ajout de la possibilité d'activer ou désactiver le deferred rendering, option disponible dans les fichier cscn.
  • Création de la classe TechniqueParameters pour passer des paramètres spécifiques aux techniques comme, par exemple, le nombre d'échantillons (pour le MSAA).
  • Introduction de la classe SamplerState pour grouper les appels à SetSamplerState et autres.
  • Revue des tailles : Viewport contient la taille interne, RenderTarget et RenderWindow contiennent la taille externe.
  • Découpe de eBUFFER_MODE en eBUFFER_ACCESS_TYPE et eBUFFER_ACCESS_NATURE.
  • Modification de FrameVariable afin de prendre en compte eFRAME_VARIABLE_TYPE.
  • Modification de Submesh::AddPoints afin de pouvoir lui donner un stVERTEX_GROUPen paramètre.
  • Ajout de la classe FrameVariableBuffer pour gérer les variables uniformes avec les UBO OpenGL ou les Constant buffer de Direct3D 11.
  • L'initialisation des objets GPU se passe maintenant avec l'utilisation de deux évènements : InitialiseEvent et CleanupEvent.
  • Fusion de GpuBuffer::Initialise et GpuBuffer::SetShaderProgram afin d'en simplifier l'utilisation.
  • Suppression de la génération automatique des mipmaps. Maintenant, si l'utilisateur vuet les générer, il utilise la fonction DynamicTexture::GenerateMipmaps.
  • Ajout de la classe DepthStencilState pour gérer ces états à la mode Direct3D 11 (qui fait ça bient).
  • De même, ajout des classes BlendState et RasteriserState.
  • Ajout d'une instance de BlendState dans la classe Pass et suppression de la gestion du mélange RGB/Alpha de la classe Pass.
  • Suppression des méthodes Context::Enable et Context::Disable, suppression de la classe RenderState.
  • Suppression de la méthode Context::SetPolygonMode.
  • Déplacement du code de rendu dans un tampon, de FrameBuffer et RenderWindow vers Context::BtoBRender.
  • Implémentation de l'instanciation hardware des maillages.
  • Modification de la génération des normales d'un Submesh.
  • Déplacement des matériaux, de Submesh à Geometry.
  • Modification du compte des instances des sous-maillages, pour le rendre spécifique aux matériaux utilisés par les instances du sous-maillage.


GlRenderSystem
  • Création de la classe GeometryBuffers pour gérer les Vertex Array Objects. Ils contiennent maintenant leur tampons, permettant d'intégrer le choix d'utiliser les VAO ou non.
  • Les Geometry shader fonctionnent dans GlRenderSystem.
  • Suppression de la dépendance à GLEW.
  • Support des extensions de debug d'OpenGL.
  • Ajout du support de GL_MIRRORED_REPEAT.
  • Ajout du support de GL_TEXTURE_MAX_ANISOTROPY.


GuiCommon
  • Maintenant ShaderDialog utilise wxSizers.
  • Utilisation de wxStcEditor pour l'édition de shaders.
  • La fenêtre de matériaux utilis les wxSizers pour placer et redimensionner les éléments.
  • Ajout de la possibilité de changer le matériau utilisé par un sous-maillage, avec la fenêtre wxGeometriesListFrame.
  • Correction de bugs dans le chargement des images.
  • Amélioration de StcTextEditor afin d'avoir une meilleure coloration syntaxique.


CastorViewer
  • Maintenant, MainFrame utilise wxSizers.
  • Ajout d'options de ligne de commande :
  • -f/--file pour charger un fichier de scène au chargement
  • -h/--help pour afficher une aide
  • -l/--level pour définir le niveau de log : - 0 pour logger debug, infos, warnings et erreurs
  • - 1 pour logger infos, warnings et erreurs
  • - 2 pour logger warnings et erreurs
  • - 3 pour logger les erreurs uniquement.
  • Maintenant les plugins sont chargés dans un thread
  • Ajout d'un bouton "Export".


Corrections
General
  • Ajout de fonctions Destroy pour chaque fonction Create dans les plugins, afin que la création et la destruction de ceux-ci se fasse dans l'espace mémoire des DLL (pour Windows).
  • Ajout du plugin d'import ASSIMP, permettant d'élargir le nombre de formats supportés. La fonction ImporterPlugin::GetExtensions permet maintenant de récupérer un tableau de paires <extension, file type>.
  • Modification des importeurs afin de ne plus avoir de fuites de mémoires détectées par Visual Studio.


CMake
  • Ajout de la possibilité de changer le dossier des binaires, au travers des variables PROJECTS_BINARIES_OUTPUT_PATH et PROJECTS_BINTEMP_OUTPUT_PATH.
  • Ajout de la possibilité d'activer le profileur de code de Visual Studio, avec l'option PROJECTS_PROFILING.


CastorUtils
  • Castor::Image a été modifiée, j'ai retiré la possibilité de charger les images par handle, car cela provoquait des problèmes avec FreeImage sur certains formats.
  • Réparation d'un problème de matrices lors du rendu des incrustations.
  • Correction des transformations récursives.


Castor3D
  • Corrections des sous-maillages ayant un matériau transparent, car ils n'étaient pas affichés.
  • Corrigé la génération de mipmaps.


CastorViewer
  • Déplacement de la destruction de m_pCastor3D dans la méthode OnDestroy.


GlRenderSystem
  • Correction d'un bug dans DoGetDeferredShaderSource.
  • Correction de la génération des mipmaps dans les classes GlStaticTexture et GlDynamicTexture.
  • Correction du traitement des textures de brillance dans les programmes GLSL auto générés.


ObjImporter
  • L'import des matériaux et textures a été corrigé.


Dépendances
  • Pour compiler CastorUtils, vous aurez besoin de FreeImage et freetype2.
  • Pour compiler Castor3D, vous aurez besoin de FreeImage, freetype2.
  • Pour compiler GlRenderSystem vous aurez besoin de OpenGL.
  • Pour compiler GuiCommon, CastorShape et CastorViewer, vous aurez besoin de wxWidgets, version 2.8.12 au minimum (testé avec les versions 2.8.12, 2.9.x et 3.0).
  • Pour compiler ASSIMPImporter, vous aurez besoin de ASSIMP.


Téléchargement

Sources
Sources de Castor3D (Miroir).

Exécutables
Installeur (Windows x86) (Miroir).
Installeur (Debian amd64) (Miroir).

Données optionnelles
Images et scènes de test (Miroir).

Envoyer le billet « Version 0.7.0 de Castor3D » dans le blog Viadeo Envoyer le billet « Version 0.7.0 de Castor3D » dans le blog Twitter Envoyer le billet « Version 0.7.0 de Castor3D » dans le blog Google Envoyer le billet « Version 0.7.0 de Castor3D » dans le blog Facebook Envoyer le billet « Version 0.7.0 de Castor3D » dans le blog Digg Envoyer le billet « Version 0.7.0 de Castor3D » dans le blog Delicious Envoyer le billet « Version 0.7.0 de Castor3D » dans le blog MySpace Envoyer le billet « Version 0.7.0 de Castor3D » dans le blog Yahoo

Mis à jour 31/03/2015 à 03h01 par dragonjoker59

Catégories
Programmation , C++

Commentaires