Création d'une boîte de dialogue de sélection de renderer au lancement de CastorViewer et CastorShape, ajout d'un splash screen pour ces applications.
Ajout d'une petite appli qui transforme n'importe quel type d'image en XPM, plus facile pour le développement multiplateforme avec wxWidgets.
Ajout de nouvelles fonctionnalités aux fichiers de scène (alpha_rejection, rgb_blend, alpha_blend, hl_shader_program, ...).
Optimisation du fichier CMakeLists et des fichiers du dossier 'cmake_modules' de façon à mieux prendre en charge les différentes plateformes, ainsi que les différentes configurations des PC clients.
Revue du système de VertexBuffers et IndexBuffers, introduction de la notion de VertexDeclaration et BufferElement, ainsi on peut créer des VertexBuffers en mettant à peu près ce que l'on veut comme données dedans (parmi positions, normals, tangents, diffuse, texcoords0,1,2,3) et ordonnées comme on veut.
La classe Vertex dérive donc maintenant de BufferElement.
Les TextureEnvironment vont disparaitre à la prochaine version, la gestion du multitexturing se faisant maintenant directement au niveau des passes et des texture units.
Création d'un fichier CMakeLists pour générer la solution à partir de CMake.
Réorganisation des fichiers du dossier afin de mieux se prêter au passage à CMake
Séparation de la classe Plugin en 3 types différents : Renderer, Divider et Importer. Ainsi on pourra ajouter de nouveaux types de plugin aisément et l'ajout d'importers et de subdiviseurs se fera sans devoir recompiler tous les projets.
Ca entraîne la création d'un projet par importeur existant (OBJ, PLY, MD2, MD3, 3DS, ...)
PNTrianglesDivider reste dans le Castor car utilisé par la primitive Icosaedron, LoopDivider est quand à lui placé dans un plugin.
J'ai commencé à implémenter les shaders Cg. Ca implique une modification des fichiers de scène, car dans Cg les variables uniform sont liées à un programme (vertex, pixel, geometry) plutôt qu'au shader complet comme c'est le cas en GLSL. Il reste quelques trucs à revoir (je ne sais pas encore quoi) pour que ça fonctionne.
La création des Buffers utilisés pour le rendu (Vertex, Attribute, Texture, Normals, ...) se fait maintenant par le RenderSystem => on peut donc les créer dans Castor3D et pas seulement dans les renderer (GL2, GL3 et dans le futur D3D).
Suppression des Singletons pour les différents Managers (Image, Font, Scene, Material, Animation et Mesh).
J'ai retouché les SceneNodes, j'ai refusionné les 3 classes différentes en une seule pour des commodités d'utilisation.
Les subdiviseurs peuvent subdiviser dans un thread à part, permettant de ne pas figer une application pendant la subdivision (cf. CastorShape). Il est possible d'assigner une fonction qui sera lancée à la fin de la subdivision (cf. CastorShape).
La fonction AddPoint de Submesh crée maintenant des IdPoint et la fonction AddFace se sert d'eux pour générer les Vertex.
Corrections de bugs
Correction du LoopDivider qui ne repositionnait plus les Vertex (les nouveaux étaient créés mais plus replacés, dû à la nouvelle architecture des Vertex)
La classe TransformationMatrix n'existe plus, il ne s'agit plus que d'une collection de fonctions sur matrices carrées 4x4.
Modification de la gestion des SceneNode : Une classe de base NodeBase qui contient les informations qui se trouvaient dans SceneNode, 3 classes dérivées (GeometryNode, CameraNode et LightNode) qui s'occupent des fonctionnalités spécifiques au rendu de chacun des types liés (respectivement Geometry, Camera et Light).
La classe MovableObject a maintenant moins de fonctionnalités (en fait elle n'a plus qu'un nom et un NodeBase) et les classes Light et Camera dérivent maintenant de cette classe (pour plus d'uniformité dans les déplacements de ces objets par rapport aux géométries)
Renommage des classes UniformVariable en FrameVariable, pour refléter plus ce que c'est et moins lier ce genre de choses à OpenGL.
Corrections de bugs
Correction du plantage à la fermeture du soft en release uniquement.
Ajout d'une classe de gestion des matrices de projection, normale et visualisation, en vue de la suppression du pipeline fixe dans les renderers OpenGL.
Modification du render system, ajout d'une classe renderable qui se charge de créer le renderer associé, afin de simplifier la création des dérivés de cette classe (submesh, scene node, light, camera...)
Changement des noms des fichiers de scène/materiaux/meshes du moteur (respectivement cscn/cmtl/cmsh)
Corrections de bugs
Protection par recursive mutex des données partagées (par les managers, essentiellement) permettant d'éviter des plantages aléatoires.
Nouvelle primitive : la projection, qui effectue donc une projection d'un arc sur une profondeur et qui lie l'origine et la projection par des faces.
Meilleure prise en charge des materiaux du format MD3 (contenus dans les fichiers .skin et .shader). Encore du taf là dessus, mais il faut que je récupère une meilleure documentation du format.
Meilleure prise en charge des materiaux du format 3DS, notamment au niveau des couleurs Ambient, Diffuse, Specular et Shininess
Corrections de bugs
Correction des normales (elles étaient générées à l'envers).