Contributor
Tarek Yasser

Replace OpenGL by a multi-API rendering library in Splash.


Mentors
Christian Frisson (SAT), Emmanuel Durand, Jean-Michaƫl Celerier, Christian Frisson, paperManu
Organization
Society for Arts and Technology (SAT)
Technologies
opengl, c++, cmake, raspberry pi, ImGui, port
Topics
graphics, Porting, Refactoring
The Splash projection mapping software allows for controlling multiple video projectors 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 running 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 envisioned to replace direct use of OpenGL with an intermediate, multi-API rendering library. Work Done: 1) Investigating available rendering libraries and APIs supported by the Raspberry Pi 4. 2) Modifying Splash's OpenGL 4.5 code to work with OpenGL ES and thus the Raspberry Pi 4. 3) Merging the old OpenGL and the new OpenGL ES codepaths to allow one binary to run both. 4). Pulling out graphics code such that application classes are only responsible for application logic, they just use the provided graphics API specific implementation. 5) Rudamentary performance profiling. 6) Bug fixes to application and graphics code.