Ideas G So C

Ideas list for participants of Google Summer of Code

This is a list of possible topics to work on during summer of code. If you want to take part in Google's Summer of Code, which includes gaining $4500 in 3 month, just look through the following topics. In case Irrlicht is chosen as a mentoring organization for GSoC, you can work on one of those topics together with a mentor from the Irrlicht dev team. You can also suggest your own topic, which needs to be worked out together with a possible mentor. Just contact us directly or meet us in the forums.

Ideas list

The ideas list is split into two parts. First comes a general feature list, which requires at most some insight into rendering techniques. In most cases good C++ knowledge should suffice. The second list includes ideas which require decent Shader knowledge.

General features

  • Mesh optimization as part of HW buffers
    With Irrlicht 1.5 we added hardware accelerated vertex buffers. This established means to alter geometry before uploading to the GPU. In this project, these means shall be extended to buffers which store optimized versions of the geometry. This can increase render performance, e.g. by converting the meshes into tri-strips, or support currently unsupported geometry types such as quad faces under DirectX or in the software renderers.
    Difficulty of this project is low-average. Only C++ knowledge is necessary, 3D rendering knowledge might be useful for adaption of optimization algorithms.
  • Image manipulators
    Irrlicht needs some ways to create or alter images and textures. Typical applications are Perlin noise and color format changes, but also image manipulation algorithms such as edge detection and scaling. This project will define an object-oriented framework which allows for the mentioned methods on both images and textures. The framework shall be able to include GPU-acceleration in order to speed up the algorithms.
    Difficulty of this project is average. Only C++ knowledge is necessary, 3D rendering knowledge might be useful for the integration of GPU-acceleration.
  • Occlusion culling techniques
    There are many algorithms for optimizing the rendering process by skipping over non-visible meshes or polygons. This project would integrate some of them into Irrlicht. Possible techniques include portal culling or hardware occlusion culling.
    Difficulty of this project is average. Since this project works with non-trivial rendering techniques, it will help to know at least the basic 3d rendering foundations. All coding will happen in C++.
  • File format advances or add-ons
    Irrlicht supports many mesh formats. However, most of them only support static meshes while the original format would support animation as well. This project targets at supporting animation for e.g. Collada or 3ds. Alternatively, or in addition, the student may add some more of the commonly used 3d mesh formats, e.g. fbx or u3d.
    Difficulty of this project is low-average. Only C++ knowledge is necessary.
  • Level of detail support
    Irrlicht doesn't currently support LOD methods for static and animated meshes. This project will focus on implementing LOD methods for such nodes by, for example switching to user-provided low detail meshes, adding mesh manipulator methods to reduce meshes, adding support to the animation players to skip animation frames and possibly even implementing impostors.
    Difficulty of this project is average. C++ knowledge is necessary.
  • .NET update
    Irrlicht has many wrappers for integration into other programming languages than C++. One of the most commonly used wrappers is one for C# and the .NET framework. Until Irrlicht 1.3 this wrapper was developed as part of the core engine, until then the Irrlicht-CP.NET project maintained the wrapper. Unfortunately, this wrapper was not upgraded to the latest Irrlicht release, and lacks some major features of the engine. The proposed project would update the existing wrapper to the current Irrlicht release and establish increased maintainability of the wrapper.
    Difficulty of this project is low-average. C++ and C# knowledge is necessary, development platform should be Windows.
  • SColor/IImage updates
    The current Irrlicht implementation of image classes requires images to consist of 3 or 4 colors per pixel with integral color values (usually 0-255). In order to support HDR images, depth buffers, alpha channels, and other advanced features in the image class, a major refactoring has to take place. This project would factor out the currently used image methods, add a more general image handling, and adapt the texture handling to the new formats.
    Difficulty of this project is high. C++ knowledge is necessary, decent knowledge of rendering techniques and Render-APIs is required.

Shader based add-ons

  • Postprocessing framework
    Postprocessing is a common practice in 3d rendering. Some proposals for a post-processing framework have been made in the Irrlicht forums. This project will integrate one of these frameworks into the engine, and extend it to some support for the fixed function pipeline. Additionally, some post-processing effects shall be added.
    Difficulty of this project is average. C++ and Shader knowledge is necessary
  • Generalized shader access including Cg
    Shader support in Irrlicht is still limited in several places. This project will enhance the situation and add the missing features. It will also add support for Cg (currently only ASM, GLSL, and HLSL are supported) and simplify the choice and fallback for shader languages.
    Difficulty of this project is average. C++ and Shader knowledge is necessary
  • OpenGL-ES 2.x driver
    Irrlicht currently supports OpenGL and OpenGL-ES 1.x (for the OpenGL-based drivers). The next step in this direction is the implementation of an OpenGL-ES 2.x driver. Due to the purely shader-based rendering in this render API, the whole material system of Irrlicht has to be rewritten based on GLSL.
    Difficulty of this project is high. C++ and GLSL knowledge is necessary. Development platform can be Windows or Linux, the driver shall be tested on a mobile platform, if accessible within the project's runtime.
  • DirectX 10/11 driver
    Irrlicht currently supports DirectX 8 and 9 (for the DirectX based drivers). This project will add a new driver which uses one of the more recent DirectX-APIs. Since the fixed function pipeline has been dropped in those drivers, the implementation will require a shader-based rewrite of the Irrlicht material system.
    Difficulty of this project is high. C++ and HLSL knowledge is necessary. Development platform must be Windows Vista or Windows 7.
  • Advanced shadowing techniques
    Irrlicht currently supports shadow volumes, Shadow maps are implemented in extensions from the forum. This project will integrate the existing shader based shadow techniques, and possibly add some more of the advanced shadowing techniques, e.g. those described in the GPU Gems books.
    Difficulty of this project is average-high. C++, 3d rendering, and shader knowledge is necessary. Implementations have to be for both HLSL and GLSL in order to run on all supported platforms.