Some updates

After several months, I’ve finally got some time to write a new entry into this abandoned blog. That doesn’t mean the project is abandoned; in fact, I’ve been working a lot on it for the last months. You can always checkout the mercurial repository to keep track on the project’s activity.

The purpose of this post is mostly for giving some feedback on the project’s status, and posting a few screens of what’s going on in Cassini.

The engine has suffered several improvements and fixes, and also a lot of new features. Although several parts of the engine where rewriten, this can’t be considered as a major code refactoring like it was from the old Casandra’s engine. Cassini is now a very modular engine, and it’s easy to rewrite an entire subsystem without affecting the rest of the modules, or the general architecture; that’s why I changed some parts of he engine that were needing attention, without touching the already stable ones.

There are however some major updates that need to be explained. Here is a short list of the changes of the last year:

  • Implemented a new OpenGL 2.0 render system, entirely based on GPU programs (fragment and vertex shaders).
  • Several fixes and improvements to the Linux port (now working as stable as Windows).
  • Implemented a new material system, fully compatible with GPU programs, and legacy fixed-function based renderers. This new material system supports animations, vertex deformations, etc.
  • The geometry system has been entirelly rewriten, including several new features, like shared VBOs, multiple geometry areas per index/vertex buffer, complex culling algorithms, etc.
  • Support for Quake3 levels loading is almost complete, including support for PVS rendering, full shaders support (even animated ones), BSP models, etc.
  • Implemented support for font & text loading and rendering (using FreeType).
  • Software tessellation support for path surfaces.
  • Implemented support for 2D billboards.
  • Implemented support for 2D overlays.
  • The pixel conversion routines have been rewriten.
  • Implemented Phong Lighting model (per pixel lighting).
  • Huge code cleanup
  • Hundreds of bugs fixed.

Although the engine is quite stable right now, it is not enough featured yet to make an alpha release, I still have to implement collision detection, support for animated models, better 2D effects, fix some remaining bugs, and implement more GPU programs (like bump mapping, specular reflection, more complex ambient models like spherical harmonics or HDR, etc.).

In the meantime, you can take a look on some screens of the Urban Terror and Quake levels I’ve testing with Cassini. This shows the -almost- finished support for idSoftware’s Quake3 shader system.

The first three screenshots were taken from levels of the popular UrbanTerror game. The last one is a nice Quake3 mod level I’ve found on the web. All these levels were rendered with the current Cassini engine development snapshot.





The next step is to finish the OBJ mesh loader, add some missing features to the lighting shaders, add support for mesh animations, and add support for collision detection.

I’ll post some more screenshots once I’ve finished the new features I’me working on.