GSoC/GCI Archive
Google Summer of Code 2009

Crystal Space

Web Page:

Mailing List:

Crystal Space is a portable Open Source 3D engine and framework. Crystal Space is written in mainly C++ with smaller pieces in assembly and currently supports Linux, Windows and OSX on x86 and PowerPC processors. Crystal Space is very powerful with good support for modern hardware features for 3d such as shaders (Cg and assembly), post processing effects and texture based effects. The graphics support is built mainly on OpenGL for portability. On top of this Crystal Space also has good support for hierarchical animation, particle systems, landscape rendering as well as 3D sound handling and scripting in popular languages such as Python and Java. Crystal Space is licensed under the LGPL.


  • Add more 'advanced' post-processing effects The render manager system allows for simpler implementation of post-processing effects. The goal is to implement some more advanced eye-candy effects, but combined with some janitorial tasks to improve Crystal Space's overall quality.
  • Advanced Lighting & Shading I propose the modernization of the CrystalSpace shading system to employ a more sophisticated reflection model. Different industry standard models will be explored including, but not limited to, Cook-Torrance, Oren-Nayer, pre-filtered environment or reflection mapping, and numerical methods (like spherical harmonic or wavelet basis fittings). Both real-time and precomputed versions of these reflection models will be developed and incorporated in the current CrystalSpace lighting system.
  • AI/CEL : Quest Refactor & Behaviour Tree Implementation The current Quest system provides a non-standard FSM and regular users have raised a number of issues with the current implementation. I aim to fix the issues raised as part of refactoring Quest so that it and its subsystems (triggers, rewards etc) become standard CEL property classes available to other systems via the standard CEL messages and actions. To illustrate the usefulness of this and to bring new functionality to CS, I will implement a behavior tree.
  • Imposters and Progressive LOD CS currently has a partial implementation of Imposters and no easy-to-use LOD solution for Genmeshes. The first goal is to finish this implementation and provide a system for the management of imposters (dynamic creation, updating and removal). The second goal is to implement a progressive LOD solution (runtime or precalculated) for Genmeshes.