Skip to content
Snippets Groups Projects
Commit 23878468 authored by Dorian Rudolph's avatar Dorian Rudolph
Browse files

update plan

parent 5190bdd8
No related branches found
No related tags found
No related merge requests found
# Project Group: Vector Graphics on Modern Hardware # Project Group: Vector Graphics on Modern Hardware
🚧🚧🚧 **WORK IN PROGRESS** 🚧🚧🚧
(I still need to add more references and explanations)
![Ghostscript Tiger](assets/Ghostscript_Tiger.svg){width=350} ![Ghostscript Tiger](assets/Ghostscript_Tiger.svg){width=350}
<sup>Example of vector graphics [1]</sup> <sup>Example of vector graphics [1]</sup>
...@@ -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++
- GPU programming (e.g. CUDA, OpenGL, Vulkan, Metal, DirectX, wgpu)
- Read and understand scientific papers
- Graphics rendering
## References ## References
...@@ -51,14 +73,8 @@ Hence we will not just nVidia CUDA (like e.g. [GLFN14]), but a cross-platform in ...@@ -51,14 +73,8 @@ Hence we will not just nVidia CUDA (like e.g. [GLFN14]), but a cross-platform in
- [3] Diego Nehab. 2D Computer Graphics (course). 2020.https://w3.impa.br/~diego/teaching/vg/ - [3] Diego Nehab. 2D Computer Graphics (course). 2020.https://w3.impa.br/~diego/teaching/vg/
- [4] Google. The Raster Tragedy in Skia (blog post). https://skia.org/docs/dev/design/raster_tragedy/ - [4] Google. The Raster Tragedy in Skia (blog post). https://skia.org/docs/dev/design/raster_tragedy/
- [5] Nicolas Silva. List of vector graphics rendering approaches: https://github.com/nical/lyon/wiki/Related-projects - [5] Nicolas Silva. List of vector graphics rendering approaches: https://github.com/nical/lyon/wiki/Related-projects
## Prerequisites - [6] Beat Stamm. The Raster Tragedy at Low-Resolution Revisited: Opportunities and Challenges beyond “Delta-Hinting”. http://rastertragedy.com/
- Programming in a system programming language like Rust, C, C++
- GPU programming (e.g. CUDA, OpenGL, Vulkan, Metal, DirectX, wgpu)
- Read and understand scientific papers
- Interest in graphics rendering
Note, these are not necessarily rigid requirements and it would be fine for you to learn during the project.
## Contact ## Contact
......
...@@ -52,23 +52,29 @@ ...@@ -52,23 +52,29 @@
\begin{frame} \begin{frame}
\frametitle{Motivation} \frametitle{Motivation}
\emph{Why are the quantum computing people doing a project group on vector graphics?} \emph<+->{Why are the quantum computing people doing a project group on vector graphics?}
\begin{itemize}
\item<3-> None of the existing digital whiteboard apps are \emph{great}.
\begin{itemize}
\item<4-> not supporting all platforms (Linux, Windows, Mac, Android, iOS, Web)
\item<5-> bad performance
\item<6-> missing ``multiplayer'' (though MS Whiteboard is good)
\item<7-> bad/missing PDF integration
\end{itemize}
\end{itemize}
\begin{tikzpicture}[overlay, remember picture] \begin{tikzpicture}[overlay, remember picture]
\node at (current page.center)[] \node at (current page.center)[]
{ {
\only<2>{\shadowimage[height=.95\paperheight]{mswhiteboardscreenshot.jpeg}} \only<+-+>{\shadowimage[height=.95\paperheight]{mswhiteboardscreenshot.jpeg}}
}; };
\end{tikzpicture} \end{tikzpicture}
\begin{itemize}[<+->]
\item None of the existing digital whiteboard apps are \emph{great}.
\begin{itemize}
\item not supporting all platforms (Linux, Windows, Mac, Android, iOS, Web)
\item bad performance
\item missing ``multiplayer''
\item bad/missing PDF integration
\end{itemize}
\end{itemize}
\onslide<+->{\emph{Ok, so how can we build a better app?}}
\begin{itemize}[<+->]
\item Need to render vector graphics
\item Chrome uses skia, so let's try that...
\end{itemize}
\end{frame} \end{frame}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment