Castor3D

Description

Castor3D est un moteur 3D multi-plateformes et multi-renderer.
Il fonctionne sur les plateformes GNU/Linux (GTK) et Windows.
Les renderers supportés sont OpenGL et Direct3D (Windows seulement).

Version 0.6.5.0

Date : 30/08/2011

Fonctionnalités

  • Calcul de l'espace tangent lors de la création des primitives. Accessible dans les shaders avec 'attribute/in vec3 tangent'.
    Normal mapping sur un modèle OBJ Relief Mapping
  • Ajout de la récupération des UV dans la description en mode texte des meshes au format cscn
  • Fonctionne maintenant sous Linux (Gtk), testé sous Debian (Squeeze et Wheezy), Fedora 13 et Mandriva 10

Corrections de bugs

  • Plantage lors de la fermeture de l'application - Corrigé, dû au ShaderManager

Téléchargements



Version 0.6.1.2

Date : 17/03/2011

Fonctionnalités

  • 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.
    Sélection du renderer Splash screen
  • 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.

Téléchargements



Version 0.6.1.1

Date : 21/01/2011

Fonctionnalités

  • 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, ...)
    Modèle PLY Modèle MD3 Modèle MD2 Modèle 3DS
  • PNTrianglesDivider reste dans le Castor car utilisé par la primitive Icosaedron, LoopDivider est quand à lui placé dans un plugin.
    Torre subdivisé selon l'algorithme de Loop
  • 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)

Téléchargements



Version 0.6.1.0

Date : 10/12/2010

Fonctionnalités

  • 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.

Téléchargements



Version 0.6.0.0

Date : 05/11/2010

Fonctionnalités

  • 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.

Téléchargements



Version 0.5.0.2

Date : 14/09/2010

Fonctionnalités

  • 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).

Téléchargements






Image Large