Project title/description
The Splash projection mapping software allows for controlling multiple videoprojectors together to build a single projection. It is able to adapt to virtually any real geometry, as long as the surface is diffuse. Its rendering engine is built using the OpenGL API. It currently runs on platforms capable of runing Linux and handling an OpenGL 4.5 context, and has been tested successfully on x86_64 (with NVIDIA, AMD and Intel graphic cards) and aarch64 (with NVIDIA graphic cards)
However to be able to a) optimize it further and b) support more platforms (for example Raspberry Pi), it would be interesting to support more graphics API. To do this it is envisionned to replace direct use of OpenGL with an intermediate, multi-API rendering library. For now bgfx is considered.
More detailed description of the project
For now everything related to graphic rendering is done through direct calls to OpenGL, which means that OpenGL is quite intertwined with the source code of Splash. A first step could be to isolate a bit more the OpenGL calls, which would then facilitate replacing these calls with calls to the multi-API rendering library.
Expected outcomes
- cleanup of the Splash rendering code
- added support for at least the Vulkan API
- possibility to run Splash on new platforms
Skills required/preferred
- C++
- OpenGL, other graphics API would be a plus
- experience with game/rendering engine programming
Possible mentors
Emmanuel Durand, Christian Frisson
Expected size of project
350 hours
Rating of difficulty
hard