Just glancing through the chapter on matrices, and I really wish I'd have found this last weekend, when I happened to be diving into projection matrices and homogeneous coordinates from a geometry point of view
It seems like a really good companion book to Physically Based Rendering[4], which also requires some amount of calculus and statistics. The primer in the article only has a section on blinn/phong shading, which is great as something that's quick to implement.
If you're learning any of it for the first time, I really suggest using a repl based language like julia or python that make it really easy to plot the functions being implemented. They can be hard to write tests for, but can also be very easy to visually see something wrong.
I've owned two editions of this book and when working on 3D graphics, this was the most useful book in filling the gaps of mathematical knowledge & understanding. One of the issues I had when learning 3D was that there are so many assumptions made about one's existing math knowledge on linear algebra, vectors, matrices, etc. as I never learned it in high school (at the time, they didn't think it was useful and focused on statistical math instead). This book was really the missing tome that contained everything you needed to know. The code samples also really helped. Highly recommended and I'm glad it's freely available online. I still have my hard copy on the shelf and enjoy flipping through it occasionally.
I've been reading lots of books (On computer graphics) and it's surprising how much better the average book content is then most online resources. I guess the difficulty to get it published really forces the quality to be high. It's so easy to get a copy of "The Cg Tutorial" for a couple of bucks online and get an overview of the graphics pipeline that is super higher quality(Though for 20 year old GPUs).
It's great that people are putting versions of their books online. I just hope that they keep making physical versions. I much prefer reading on paper rather than a screen or even kindle.
Excellent book if you're looking to understand the foundations of 2D & 3D graphics / game dev, although the topics covered have even more broad applications. I had quite a bit of experience with C/C++ going into it but no experience with game programming / math. I went through the book cover-to-cover when it was first published. Did all the exercises. Ran and stepped through all the code. Came away from it with a solid understanding of the basics and could have written a simple game engine I believe. I went on to tinker with a few real game engines and the knowledge gained from this book made it easier to get started with them. Highly recommended. Excited to see it updated and available online.
Coming from theoretical physics background, I find the mathematics and physics side of game development quite easy. Is this considered a real advantage if I wanted to pursue a career or something in game development? Is there some way to leverage my physics/math skills to do this stuff as a serious hobby, perhaps even making small amounts of money from it?
Like probably many people, I've wanted to make games since I was a kid, but somehow there is never enough time or energy to start doing indie development seriously and I always imagined there's no way I could get hired in a game company without a good developer or arts background.
To be fair, the math is actually quite easy - if you took any LinAlg at the university level you're basically golden. It's just difficult to learn by yourself especially since there is no curriculum.
Yes, it can be an advantage if you want to apply to a rendering or engine dev position, but obviously being a good developer is just as important. You don't necessarily need to develop an indie game either, a few renderers should be good.
Really what you need is being a good general programmer, being good at algorithmics, and being good in linear algebra. For many programmers the later is most difficult, but the first two are about as difficult to an outsider imo. You need to be able to write good C++ and understand performance characteristics of GPUs and CPUs well. It's not easy on the programming side - game engines and their renderers are some of the finest achievements in software engineering.
Alternatively, you could go for a research position in a game company or GPU company.
Scanning through it, I didn't notice anything about projections such as isometric projection and how it relates to 2d / 3d.
I would have expected, perhaps incorrectly, that there may be a short mention of it and how it relates. There are some additional things that are relevant such as tile sorting.
So it's a little off topic, but are there any good resources on isometric projection and how 2d/3d relate to it that people would recommend?
> I didn't notice anything about projections such as isometric projection and how it relates to 2d / 3d.
§ 10.2 Viewing in 3D is mostly about perspective projection, and discusses orthographic projection briefly. (Isometric view is just a collection of orthographic views along each axis, usually either 3 [one view on each axis] or 6 [+ and - directions one each axis].)
Orthographic (including isometric) views have fairly trivial math, so being a book about the math of 3d graphics, they don't get a lot of attention.
If you want to make games, I'd advise not learning code or math. Use a FSM based visual editor, and learn the bare minimum for things as you need them.
If you are a programmer interested in the idea of making games, then go forth and learn all the math and code.
Some videos on it that I found helpful:
- Math for game programmers[0]
- Homogeneous Coordinates (Cyrill Stachniss, 2020)[1]
- Essence Of Linear Algebra, 3b1b[2]
It seems like a really good companion book to Physically Based Rendering[4], which also requires some amount of calculus and statistics. The primer in the article only has a section on blinn/phong shading, which is great as something that's quick to implement.
If you're learning any of it for the first time, I really suggest using a repl based language like julia or python that make it really easy to plot the functions being implemented. They can be hard to write tests for, but can also be very easy to visually see something wrong.
[0] https://www.youtube.com/watch?v=o1n02xKP138
[1] https://www.youtube.com/watch?v=MQdm0Z_gNcw
[2] https://www.youtube.com/playlist?list=PL0-GT3co4r2y2YErbmuJw...
[3] https://www.pbr-book.org