Some impressive shaders have been implemented with Shadertoy. However, rendering a 3D scene without input geometry is rather challenging. The typical way to have geometry in Shadertoy is to take an "inverse" approach, meaning to use ray marching and see where a ray hits geometry. This must be figured out for all kinds of primitive shapes, and with them, more complex scenes can be assembled.
While some users have achieved stunning results, like Inigo Quilez' Rainforest scene, not every user can be expected to have the skills to create scenes in this way. Therefore, in our new tool we will take the "forward" approach and construct geometry parametrically. Parametric modelling is an approach often taken by 3D designers and architects through tools like Rhino's Grasshopper or Blender's Geometry Nodes. We'll either create meshes on-the-fly or render them directly point-based.
A sphere, for example, can be described like follows in its parametric form:
WebGL is arguably too limited in its features, lacking compute shader support. But WebGPU has become widely available earlier this year, so we will base our onlinetool on the new browser-based GPU interface.
We have a small showcase for parametric modeling here: https://www.cg.tuwien.ac.at/math2model/ but it is lacking the feature of a code editor.
- You'll be on the project team right from the very start.
- Help to design and shape this new onlinetool.
- Implement a nice and effective user interface.
- Implement parametric modeling either through WebGPU directly, or through the framework Babylon.js
- Work with Johannes Unterguggenberger and Markus Schütz on an efficient modeling and rendering implementation and hopefully learn something along the way.
- Create a new, first of its kind (because WebGL didn't cut it), tool and have your name associated with this awesome piece of software to be.
- Profound experience with at least one graphics API (OpenGL, Vulkan, etc.). The more low-level the better. Optimally: Experience with WebGPU
- Ability to meet deadlines (be a getting s...tuff done guy to at least some degree)
We'll start with the project on 08.01.2024.
Around end of April, we should have something to show (at least a working prototype, but that should be feasible given that we already have https://www.cg.tuwien.ac.at/math2model/)
At 30.06.2024 the tool should be mostly finished (but an extension is probably possible).
If you're doing this as part of a BA or DA, then mind that only the onlinetool must be finished by then. You can write your thesis afterwards.
Type and Compensation
A project (6+6 ECTS) would fit optimal, but a diploma thesis could be made suitable too, if we extended the scope for some other aspect (like an additional rendering algorithm, or a usability study). A bachelor thesis might also fit, but it might be a lot of work (so we could grant an additional 6 ECTS project for your efforts).
By contributing substantially and by approximately meeting all our deadlines, you'll be rewarded with € 2000,- (all genders).
The exact technological basis is to be specified, but the tool will definitely be based on WebGPU.
If you have further questions or would like to apply for this project, please contact Johannes Unterguggenberger, preferably via email@example.com. Looking forward to working on this project with you. :)