
Description
We are looking for motivated students interested in computer graphics, C++ development, and GPU programming to contribute to AlpineMaps.org — an open-source system for visualizing terrain and geospatial data directly in the web browser.
TL;DR: The goal of this thesis/project is to (help) design and implement rendering and streaming of unbounded 3D meshes using C++/WebGPU.
Currently AlpineMaps renders only 2.5D data using either C++/OpenGL or C++/WebGPU, compiled to WebAssembly. We want to extend the WebGPU engine for 3D meshes, in particular for 3D meshes in the terabyte range. This means, that we need to stream the data from a server to the rendering client using a LOD based system. The data is processed out-of-core on the server (not your responsibility), and then loaded via http requests. The LOD system is based on Nanite, but geared towards the web and the large mesh sizes.
This project is funded by Netidee (project page with some more information), and two students are already working on it, but there is enough money and work to hire another one. Accordingly, the payment will be a function of contribution size. It is substantial indeed, which also means that the workload exceeds a normal thesis / project, and that you should apply with a portfolio (show me some projects you made, can be coursework, but can also be other stuff as well. it doesn't need to be polished, several links or your github account are fine).
Tasks
- (Co-) Develop our C++ / WebGPU 3D renderer (a 2.5D renderer already exists, but we need to adapt it)
- Hierarchical Level-of-Detail: Loading of the meta-data, actual data, and BVH based selection in a compute shader
- Instanced based, deferred rendering pipeline
- 3D navigation in globe to centimetre scale
Requirements
- Knowledge of C++ and a GPU API (OpenGL, Vulkan etc) is strictly required
- Knowledge of WebGPU and Qt is advantageous
- Knowledge of English language (source code comments and final report should be in English)
- More knowledge is always advantageous
Environment
The project is to be developed within the AlpineMaps.org project.