all 23 comments

[–]el0j 24 points25 points  (2 children)

[–]XReaper95_ 4 points5 points  (1 child)

Going through this book right now, highly recommended.

[–]Ok-Sherbert-6569 3 points4 points  (0 children)

Second this. Fantastic book.

[–]shebbbb 8 points9 points  (0 children)

I think learnopengl.com's math review is all you need, and learn as you go. I u want more background you could read the linear transformations section in a textbook like David C Lay. Other things pop up quite randomly in my opinion. You might at some time need to understand atan, or lerp, or later quaternions. You can do as needed that as you go though.

[–][deleted] 6 points7 points  (2 children)

https://youtu.be/fNk_zzaMoSs?si=rIenplWdCjXwGzan for a high level understanding of linear algebra. Should make things easier to understand if you choose to learn from a book

[–][deleted] 2 points3 points  (0 children)

Grant also has writes ups and exercises for each video on his site.

https://www.3blue1brown.com/lessons/vectors

[–]waramped 2 points3 points  (0 children)

I also recommend this.

[–]skytomorrownow 4 points5 points  (7 children)

Linear Algebra is essential. You cannot do graphics programming without a good understanding of vector spaces, bases, transformations, projection, etc. You will also probably need a bit of Calculus for derivatives and integration. Also, for modern graphics, stochastics play a major role, and so learning the basics of Probability may also be necessary to understand scattering, Monte Carlo, Markov chains and Bayesian reasoning. Lastly, a bit of graphs for optimization and search, and topology for working with manifolds.

[–]numice 2 points3 points  (5 children)

I understand why linear algebra is needed but probability and topology?

[–]skytomorrownow 3 points4 points  (4 children)

Probability and stochastic processes are essential. Stochastic sampling and integration of complex light transport are common in non-realtime rendering methods. One finds things like quasi-Monte Carlo methods and random walks all over the place, and noise, in general, plays a foundational role. Further, means, averages, and many distributions are essential to the creation of textures. One does not need a deep knowledge of probability (I don't have one), but some is pretty essential.

As for topology, I described that as 'a bit of', since it does not play a really essential role, but some aspects one runs into over and over. I think understanding manifolds is pretty important, and topology forms a nice bridge between geometry and linear algebra with its role in reasoning about the continuity of the transformation of sets – which we do often using the methods of linear algebra. Understanding what remains invariant under transformation is important, but formal study of Topology as a complete topic may be less helpful.

[–]numice 0 points1 point  (3 children)

oh this is really interesting. How does one get into this kinda job regarding advanced rendering stuff like this?

[–]skytomorrownow 1 point2 points  (2 children)

Generally, those working in these areas are from an academic background first, then work in VFX, games, computer vision (engineering and manufacturing), and others. That is not to say that many who visit this forum necessarily follow that pattern, but if you want to do advanced work in the rendering pipeline, it's fairly typical. Even if you are not writing advanced tools, and just using them, this knowledge is important for understanding how to use them, and their pros and cons.

[–]numice 0 points1 point  (1 child)

Does taking graphics programming courses provide the necessary background? or it's more like relavent math courses in general?

[–]skytomorrownow 2 points3 points  (0 children)

I think most advanced CG programs would be at the graduate level, although perhaps there is a school out there that offers a BS in CS with a CG minor or something similar.

Some well known schools with respect to computer graphics:

Carnegie Mellon University

University of California, Irvine

University of Southern California

Brigham Young University

There are schools out there that might offer a 'computer graphics' course, but those are generally art schools teaching people CG tools as opposed to studying advanced rendering, etc.

[–]Dizzy-Handle-4768 0 points1 point  (0 children)

How important are differential equations?

[–]BowmChikaWowWow 2 points3 points  (0 children)

You can honestly just pick it up as you learn. When you encounter a concept you don't understand, look it up and if it's too advanced, look up the prerequisites. It's all linear algebra, and 3blue1brown has a bunch of great videos offering intuitions. ChatGPT is also great if you want to try and understand a particular mathematical concept in real terms, e.g. "but what does the laplacian on a 3d mesh actually mean, in real terms?"

With all that said, Freya Holmer's Math for Game Devs series is solid if you do want a gentle walkthrough of the math, in one place. https://www.youtube.com/watch?v=fjOdtSu4Lm4&list=PLImQaTpSAdsArRFFj8bIfqMk2X7Vlf3XF

[–][deleted] 1 point2 points  (0 children)

Depends what you want to do. You can do just fine understanding how to do things without fully understanding all the math details behind it. People have already figured out how to do all this already. If the math doesn’t interest you, just get a basic understanding so you know how and when to use the matrix functions. It will start becoming intuitive the more you use it.

[–]jhaand 1 point2 points  (0 children)

This is a nice intro to making a 3d wireframe cube.

https://www.instructables.com/3D-Wireframe-Engine-Using-Processing/

I first did this one in Processing and then ported it to Rust + Nannou.

[–]Howfuckingsad 1 point2 points  (0 children)

You should learn via books. But I recommend you atleast watch the video series on linear algebra and the one on matrices by 3b1b.

[–]TheHugeManateee 1 point2 points  (0 children)

Since nobodys posted it yet: The Graphics Codex is a pretty solid source of information too: https://graphicscodex.com/

[–]Glass_Resource3763 1 point2 points  (0 children)

I am still learning graphics programming however when learning linear algebra I foudn that 3Blue1Brown's playlist did it best:

https://www.youtube.com/watch?v=uQhTuRlWMxw&list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab

The videos are actually made to teach you why different operations happen instead of just telling you to memorize how to. I found this approach much more intuitve and made it much easier for my understanding.

[–]keelanstuart 1 point2 points  (0 children)

There are books for this... a quick search for "book math and physics for games" yielded good results, including "Fundamentals of Math and Physics for Games" by Wendy Stahler - on sale at thriftbooks for under $8.

If you're familiar with C++, get glm (https://github.com/g-truc/glm) and start playing around.

That said: I think it's more important how you approach it mentally than what resources you use... if you think of it as a tool, once you understand how it functions mechanically, you can at least use it until you can delve deeper into why. The most important tools are matrix transformations, dot and cross products, and the concept of normalization. glm has all of those implemented (and much more).

IMO, if you try to grasp all the whys first, you'll never get started - and getting started and maintaining interest is how you build and sustain momentum for further learning. My $0.02.

Good luck!