@@ -30,11 +26,37 @@ Hence we will not just nVidia CUDA (like e.g. [GLFN14]), but a cross-platform in
...
@@ -30,11 +26,37 @@ Hence we will not just nVidia CUDA (like e.g. [GLFN14]), but a cross-platform in
## Plan
## Plan
- Understand the current state of the art. This includes both academic publications, as well as practical implementations. Specifically vello seems very interesting algorithmically, but there is no academic publication.
Science:
- Understand the current state of the art. This includes both academic publications, as well as practical implementations. Specifically [vello](https://github.com/linebender/vello) seems very interesting algorithmically, but there is no academic publication.
- Implement one or multiple techniques (depending on number of participants and time). Define a common interface so that the different implementations can be tested.
- Implement one or multiple techniques (depending on number of participants and time). Define a common interface so that the different implementations can be tested.
- Perhaps develop your own rendering algorithm, or modifications. Also consider scenes with animations and how to do as little work as possible when the scene changes slightly.
- Perhaps develop your own rendering algorithm, or modifications. Also consider scenes with animations and how to do as little work as possible when the scene changes slightly.
- Develop benchmarks to compare implementations (your own and existing). Compare visual fidelity and performance.
- Develop benchmarks to compare implementations (your own and existing). Compare visual fidelity and performance.
- Develop your own application using the vector graphics renderer. My suggestion would be an interactive whiteboard collaborative, similar to MS Whiteboard, but use your own renderer to make it actually performant. Could also add additional nice features like PDF support. But this is just a suggestion, you could also come up with your own ideas for an application.
See [LP05, NH08, GLFN14, LHZ16] for prior work.
Programming:
- Build a collaborative digital whiteboard platform using the renderer you develop.
- Compare rendering algorithms in practice.
- Publish the software under an open source license, so other universities can develop it further.
- Try to port to all platforms (Linux, Windows, Mac, Android, iOS, web)
- Use techniques suitable for cross platform applications. I.e., avoid platform specific SDKs like Metal, DirectX, AppKit, ...
- Note, it is not expected that you really port to all platforms, but it should at least be possible without major difficulties.
- Implement some nice-to-have features in the whiteboard:
- PDF integration via [PDFium](https://pdfium.googlesource.com/pdfium/)
- Note, if you want to publish on iOS, this is really your only choice for a PDF library in terms of license.
- End-to-end encryption
- Your own ideas...
See [2]-[6] for more practical information.
## Skills
During the project group, you will learn and apply the following skills:
- Programming in a system programming language like Rust, C, C++