GPUs have remained a mystery for most of my life. The performance they provide is a tantalizing, yet illusive, power. As a hardware enthusiast and gamer, I’ve had access to one for years. I wish I could say I used my GPU for more practical purposes than gaming. Sadly, I cannot. Other uses like machine learning and cryptocurrency are not my cup of tea either (for now).
I am interested in scientific computing but don’t really have any scientific reasons to write GPU accelerated code. Until I do, I figured I might as well have some fun and gain some practical experience with GPU programming. I do not have a specific goal in mind, but I do have a bunch of different interests that might lend itself well to GPU programming.
I am a big fan of visualizations to build intuition for mathematical concepts. I watch a lot of that kind of content on YouTube and hope to someday contribute to the community myself. I have been looking for a reason to go through my old courses and review some mathematics to improve my understanding of the material. So I might create some simulations to demonstrate multivariable calculus, linear algebra, and differential equations.
I have used Manim in the past, but was not a fan of the library (too declarative for my taste). Motion Canvas looks like a really cool alternative! I think it could be cool to develop a GPU accelerated tool for making these types of animations. Or alternatively, making a non-linear gpu-accelerated video editor that uses code. Kdenlive is an open source video editor that is pretty great, but sadly suffers from bad GPU rendering support. For simple video editing operations (trimming, transitions, text, etc), I think there is a niche to be filled.
Graphics programming in itself is a pretty mathematical endeavour. The classic use case is to build a 3D game engine. I don’t intend to fully develop a game, but it could be a cool side project for the coming years when I am bored.
And my final motivation for learning more is to have an understanding of how graphical interface applications work behind the scenes. Since Rust GUI libraries are relatively young, WebGPU debugging could be a helpful skill to have.
GPU Programming
Inducted July 22, 2023
Learning graphics programming with WebGPU and Rust