I've recently decided to re-embark on a journey to becoming adept at WebGPU and graphics programming in general. I've experimented with OpenGL, creating my own text editor, but I still feel like I need to patch up some holes in my mathematical knowledge.
I'm not averse to math, in fact I enjoy it, but I find coding more fun and thus I've neglected math and allowed my mathematical knowledge/skills to dilapidate. In particular, I feel as if I've forgotten a huge chunk of the linear algebra course I took in university, which is a definitely a concern for this graphics programming pursuit of mine. I don't want to be hindered by weak foundations, so now's the time to re-learn some math I've forgotten.
So I Googled some literature/resources to consume to refresh my linear algebra knowledge, and came across one that I liked: Foundations of Game Engine Development, Volume 1: Mathematics.
I have no intent in pursuing game engine development, so the choice may seem odd, but the math in the book aligns with what I need to re-learn. Additionally the text has some qualities I was looking for:
- It's short (200 pages) and only covers what I need. The book is meant to be read cover to cover, and only covers what is relevant to computer graphics/game engine development. I'm not looking for a big chonky book that serves more as a giant reference guide for every linear algebra topic. Anything I'm not clear on I can just Google elswhere for clarification.
- The exercises are good. Mostly proofs and problems that enhance your intuition of the concepts. They're not mindless computations (like multiplying matrices), which are especially pointless since I will never have to do computations by hand since I will almost always be using a library like cgmath.
Really I'm looking for a book I can read cover to cover with good exercises that can help me rebuild the mathematical foundations I will need for graphics programming.
Also, it feels really good to be learning linear algebra for the express purpose of using it with graphics programming, because it allows you to contextualize the concepts under the field of graphics programming, which makes it much easier to realize why these concepts are useful.
In university my course just thrust me with information and never explained why it was useful. I particularly remember wondering what matrices were used for, and that they probably had something to do with pixels or something.
In this book, it is immediately made clear that matrices, in the context of 3D graphics, are most commonly going to be used to transform vectors/points from one coordinate space to the other. This allows me to easily contextualize how this will be useful in a graphics API. It feels really good learning this way.