Well, summer is finally over and the Google Summer of Code 2006 has also drawn to a close. This was our first year participating, and has been a learning curve for all concerned, but it has been a very rewarding one nonetheless. I think I speak for everyone involved on the Ogre side when I say that it’s great that Google invests very publically and openly in open source like this – long may the programme continue.
We had 6 student projects, covered by 4 mentors – more detail on the projects themselves can be found in the wiki and particularly in the Summer of Code Forum, where students posted their thoughts and progress. I’m glad to say that all 6 projects reached successful conclusions; that’s not to say the work is over – many of the students are still working on doing further polishing or extending their projects as we speak, but all achieved most or all of their project goals, and provided valuable contributions to the Ogre community. And hopefully, had a good time in the process 🙂 Here’s a summary of each of the projects:
Instancing, Crowd Rendering : Jean-Baptiste Griffo (Crashy), mentored by Paul Cheyrou-lagreze (tuan kuranes)
Crashy has been around in the community for some time and delivered the
goods here, providing a framework for rendering lots and lots of movable and
skeletally animated objects efficiently using shader-driven combined batches.
It’s all working, you can find the code in CVS under the
soc06-instancing branch until it is merged into the main development
branch, which it will be after a little more further generalisation /
polishing.
Extending, Demo-ing, and Documenting the Shadow Mapping System : Hamilton Chong (peridexion), mentored by Steve Streeting (sinbad)
Hamilton was a relative newcomer to Ogre, but was very experienced
in shadowing techniques, having written the paper “A Lixel for every
Pixel” on which the primary extension was to be based. Hamilton
extended and generalised Ogre’s ability to use custom projection bases
for shadow mapping through pluggable ShadowCameraSetup classes, and
also implemented depth shadowmapping shaders with percentage closest
filtering, and an experimental variance shadow mapping implementation. This code has been merged into the main development branch.
Scene Management : Wael el Oraiby (farakon), mentored by Paul Cheyrou-lagreze (tuan kuranes)
Wael was also fairly new to Ogre, but had a lot of background in the area in question. He created a new SceneManager implementation which via CSG and BSP could construct a cell / portal system from high-level geometry and arbitrarily placed splitters, with each cell able to have a custom internal scene structure of its own, and using hardware occlusion queries to eliminate hidden cells. You can find his work under the soc06-scenemanagement branch for the moment whilst it remains in alpha (but still well developed) form.
XSI Tool : Lois Desplat (Lodes), mentored by Steve Streeting (sinbad)
Lois had been in the Ogre community for a while but this was his first major contribution. He successfully embedded Ogre rendering in XSI using the Custom Display Host together with real-time previewing of data and exporting of multiple objects. He also got started on a material editing system although this was not completed because of some last-minute redesigns – the good news however is that he is now being sponsored by another company to continue to improve the tool. You can find the current version in CVS under ogreaddons/xsitool.
RmOgreExporter v2 / FxOgreExporter : Vladimir Sukhoy (buddy), mentored by Michael Reimpell (reimpell)
The RenderMonkey to Ogre material exporter was a popular tool, but it had some rough edges and hadn’t been updated in a little while. Vladimir used his time in the SoC to considerably improve the tool, and also to make it much easier for users to extend and customise through the use of Python scripting. He also wrote a command-line tool to convert Direct3D .fx files directly to Ogre’s material script format, which considerably lowers the effort required to convert media from other engines using that format for material effects. You can find all the code under ogreaddons/RmOgreExporter.
Billboard Clouds : Mats Leksell (swx), mentored by Andres Carrera (Lioric)
Mats implemented a billboard cloud generator, allowing a complex model to be represented by a small number of view
independent billboards. The billboards are textured and normal mapped such that they should be a close match for the original highly detailed geometry. It’s a complex technique and there are still some refinements that Mats is still working on, but there are some very promising results already as shown in the forum. You can find the code in ogreaddons/billboardclouds.
Overall, it was a very busy and productive summer! Congratulations to the students, thanks to the mentors for giving up their time, and once again thanks to Google for making this all possible.