Castor3D  ..
Castor3D Engine

Change log

This page is here to inform about the changes since the earliest versions of the engine

Version 0.6.1.2

Adds

  • Created Dx9Renderer to render with Direct3D 9. Stills things to correct, in shaders and matrices, but it's almost done.
  • Created different files for OpenGL contexts (X11, Gtk, Msw), X11 and Gtk still untested.
  • Created a splash screen for CastorViewer and CastorShape, created a dialog box in order to choose the renderer at startup.
  • Added a small app to converet from an image to a XPM.
  • Added new features to scene files (alpha_rejection, rgb_blend, alpha_blend, hl_shader_program, ...)

Modifications

  • Optimised CMakeLists file and 'cmake_modules' files in order to take care of various configurations in a better way.
  • Revised VertexBuffers and IndexBuffers, introducing VertexDeclaration and BufferElementGroup, so we can create VertexBuffersof customisable types.
  • Vertex class now derives from BufferElementGroup.
  • TextureEnvironment are going to disappear in the next version, now multitexturing management is done with passes and texture units.
  • Suppressed GLU dependencies.

Bugs

  • Trouble with Direct3D matrices (maybe differences between right-handed / left-handed).
  • Trouble with HLSL shaders, surely linked to previous trouble.
  • Still troubles with Cg shaders (not worked on it).

Version 0.6.1.1

Adds

  • Created a CMakeLists file to generate the solution from CMake.
  • Reorganised folders to make them more compliant with CMake.
  • Splitted Plugin class in 3 parts : Renderer, Divider et Importer.
  • Created one project per importer (OBJ, PLY, MD2, MD3, 3DS, ...)
  • PNTrianglesDivider is left in Castor3D because it is sstill used by Icosahedron, LoopDivider is exported in a plugin.
  • Began Cg shaders implementation. This implies a scene file modification because in Cg, uniform variables are are linked to a shader instead of being linked to the whole program. Still buggy.

Modifications

  • Suppressed FreeImagePlus dependencies.
  • Vertex, Attribute and Index buffers are now created by RenderSystem so they can be created out of the renderers.
  • Suppressed Singletons for the Managers (Image, Font, Scene, Material, Animation and Mesh).
  • Remerged SceneNode classes.
  • Created IdPoint class, it is a point with just an index. Submes::AddPoint creates now IdPoints and Submesh::AddFace uses them to create the vertex.
  • Subdividers can subdivide in a thread in order not to freeze the main thread. It is possible to define a function to use at the end of the subdivision (cf. CastorShape).

Corrections

  • Corrected LoopDivider which didn't reposition the Vertex

Version 0.6.1.0

Adds

  • Using std or tr1 or boost smart pointers.
  • Created OpenGlCommon for common treatments between GL2RenderSystem and GL3RenderSystem
  • Created class Pipeline which performs the matrix computings and other functions (frustum, perspective, ortho, ...)

Modifications

  • Modified MemoryManager, added a template class MemoryTraced which overload new, delete new [] et delete [] operators in order to have better trace of allocations and deallocations. Each Castor class derive from this one and 3 files are created in root folder to log allocations, deallocations : memoryleaks.log, memoryalloc.log and memorydealloc.log
  • TransformationMatrix no longer exists, it is now a collection of functions which computes 4x4 matrix operations
  • Modification SceneNode management : base class NodeBase holds the informations that were in SceneNode, 3 derived classes (GeometryNode, CameraNode et LightNode) take care of each category specificities.
  • MovableObject class now has less features (name and NodeBase), Light and Camera now derive from it
  • Renamed UniformVariable to FrameVariable.
  • OpenGL 3.x/4.x now fully supported.
  • Modified Vertex class in order to make them include texture coordinates and normals in order to have only 1 vertex buffer instead of 3 in a mesh.

Corrections

  • Corrected the shutdown crash.
  • Corrected the black render with OpenGL 3.x

Version 0.6.0.0

Adds

  • Added a projection/normal and view matrices management class, in order to suppress the fixed pipeline support in OpenGl renderers.
  • Added personnal smart pointers.
  • Added an agle management class in order not to take care of degrees or radians.
  • Added a path class, to manage slashes or backslashes according to OS.
  • Created thread safe containers derived from STL ones (vector, list, map, multimap, set).
  • Splitted GLRenderer in two parts : one compatible OpenGL 2.x and before (GL2RenderSystem), one compatible OpenGL3.x et after (GL3RenderSystem).
  • GL2RenderSystem : according to client configuration, the fixed pipe is suppressed or keeped

Modifications

  • Modified thread management, leaving the user choosing between Win32, MFC or boost.
  • Modified point and matrices classes.
  • Modified String class which now is independant from MBCS or Unicode.
  • Modified File class which now only uses streams.
  • Modified the render system, added a class Renderable used to create associated renderer in order to ease the creation of derived classes (submesh, scene node, light, camera...)
  • Changed scenes/materials/meshes files name (respectively cscn/cmtl/cmsh)

Corrections

  • Protected managers with recursive mutexes to avoid random crashes.

Bugs

  • Still a crash at shutdown, supposedly due to shaders.
  • In GL3RenderSystem, I've got a black screen (?!?) but transformations seem to be correct.

Version 0.5.0.1

Adds

  • Tangent space is computed and available in GLSL shaders.
  • Only tangent is computed, bitangent can be in the shader with a cross product.
  • To access to the tangent you must declare the following attribute in the vertex shader :
  • attribute vec3 tangent;

Modifications

  • The points classes have their members in a union so you can call it as you wish (xyz, rgb, left right top bottom)

Corrections

  • Corrected the crash on shutdown. It was due to VBOs which are now destroyed in a final render loop.