Jim Blinn and Ed Catmull – graphics class at Berkeley (1981)
youtube.com
youtube.com
In the morning, we would study a little bit of the physics and math behind image rendering. I didn't have a lot of the content in school, and this is where I learned all the high-school math around matrices and vectors. The instructor truly did an unbelievable job motivating us with this "real" problem we had about understanding the natural world, and then going through exploring how we could marshal the math to make it work.
Then, in the afternoon, we'd turn our attention to the computers, where we would then implement in C the math that we had done in the morning. We all literally started from a "blank sheet of paper," and over the course of a month build our own very simple rendering engine, including all of the helper math functions that it relied on, to a point where it could consume files with vertex information and render a 3D image on the screen. It was... absolutely exhilerating.
I vividly recall our discussion about aliasing, and just how awesome it felt being an "investigator" and thinking deeply about this phenomenon I had noticed while using paint, and now uncovering what to me where insanely clever strategies on how to mitigate it.
I've become an educator, and to this day I hold that as the gold standard for what an incredible educational experience can be. I've tried many times, but if I'm being honest I don't think I've come close to delivering to my kids what that course did for me those years ago. I'm embarrassed to say I don't remember the instructor's name, because I wish I could publicly give him a ton of credit for it.
I had traveled to the US to enable a SoC GPU for a client in California. In my home country, India, good computer science books were a luxury then. So when in the US, I took an opportunity to buy some computer graphics books. Jim Blinn's excellent books were on my list. One of the books was the "Dirty Pixels". During lunch time, I visited a local Barnes and Noble shop to see if I could get the books. I went to the help-desk at the book shop. At the counter there was a young girl, and I enquired about the book "Dirty Pixels". The girl without saying a word immediately went away. I thought she might have gone to check if they have the book in stock. But she returned back with a male colleague. And the guy looked at me in a suspicious way and asked, "Yes, how can we help?". I said, I am looking for a book titled "Dirty Pixels". He gave me a look, and turned to the computer on the desk, typed something and asked, "What is the author's name?". I said, Jim Blinn. He typed something on the computer, and said "There is no such author!" Again giving me a suspicious look. Now realising what might be happening, I said the book is of computer graphics; and the author's name is Jim Blinn with double 'n'. The guy typed in something on the computer again, then smiled and said, "Oh! Computer Graphics! We don't have that book in store." :)
I think a very illustrative case for OpenGL is what's up with all the glPushMatrix(), glPopMatrix(), GL_MODELVIEW and GL_PROJECTION stuff. Do you glTranslatef() or glRotatef() first -- and why does that depend on whether you're moving the camera or an object?
I found all this very confusing, and I'd just try permutations of the calls until things worked, which is a suboptimal way to write software. At some point I decided to really understand what was going on, to the extent that I ended up teaching it (best way to verify if you really understand something!) and even writing about it [0] (even better way?)
TLDR: Even as the user as an opaque API, understanding what's happening under the hood makes you a better user of said opaque API.
[0] https://gabrielgambetta.com/computer-graphics-from-scratch/1...
Much of CG is basically an exercise in linear algebra.
https://medium.com/@kaveh808/from-arcmac-to-the-media-lab-22...
I'd argue that if you still don't at least understand a bit of the math today, it's still very limiting in spite of the progress the tools have made.
As an EE, this was our complaint for pretty much every non-lab course :-)