I disagree with the introduction of the article. Low-level graphics programming is incredibly math intensive, and a solid understanding of trigonometry, linear algebra and discrete math is __required__ to be succesful in it. When I say discrete math, I mean fundamental understanding of how data is represented, and how you can interpret data as you please. E.g. using textures to store depth maps or even sound data, IEEE754 floats, etc.<p>There are many areas of design and 3d graphics that do not involve math, but to claim that low-level graphics programming doesn't involve a lot of math is disingenuous and harmful.
Excellent introductory post! There's so much to digest when you start playing around with things like OpenGL that you quickly get lost in the details... just memorizing things ("now for some reason I have to type "bindBuffer"). It's hard to build up a mental model for WHY you're doing all the steps. This gives a great bigger picture overview! (though, the next step is still the ocean of nitty-gritty details ;)
As someone who's only used high-level UI stacks (DOM, WPF, Android view system, etc.), I would love to read a great article that's a "Casual Introduction to Low-Level Graphics Programming", these are basics that I've been meaning to add to my quiver for a long time. Unfortunately, this less-than-coherent article is not it.
>Vectors have more values, 3 is common. Very useful for things like position or color.<p>>If two vectors overlap, the dot product is 1. If they are perpedicular (90 degree angle), the dot product is 0. (Note: just for vectors that only represent a direction and have length 1, you can think about varying vector lengths later)<p>Something is terrible incongruent (pun intended) here. How can three numbers have a length, much less length of one? I think here, the <i>mathematical</i> introduction that a vector is just an arrow is better here. It just so happens you can express the arrow as a set of numbers, which I admit is not obvious at first unless you've taken algebra 2. But the jump from "3 numbers" to length is confusing too.<p>The truth is people conflate vectors with arrays, but if you want to think deeper than anyone who does computer graphics needs to, you don't need coordinates or any group of numbers to express vectors.
I've got a list of computer graphics resources on Github:<p><a href="https://github.com/melling/ComputerGraphics/blob/master/README.org" rel="nofollow">https://github.com/melling/ComputerGraphics/blob/master/READ...</a>
It's bad. One one hand it gives something more or less true in a "casual" manner but on the other it's also intermixed with complete BS. E.g. wtf specular does not depend on view direction? It's called specular for a reason.<p>While I have no problem with people simplifying things for introduction to laymen, I think introducing falsehoods like this will do more harm than good.
While its true that you probably do not need to be very good at math to do basic graphics, you do need 'some' math. You need to be able to understand the basic algorithms of the graphics pipeline to use them correctly and experiment. The best source for a detailed and 'gentile' intro is still one of the introduction to computer graphic books. You can sit with a pad of paper and work through some of the formulas on paper until you understand what they do.<p>One of my favorites, because it does not use any particular language and the math derivations are detailed and easy to fallow.<p>Fundamentals of Computer Graphics - Shirley
<a href="https://www.amazon.com/Fundamentals-Computer-Graphics-Peter-Shirley/dp/1568814690" rel="nofollow">https://www.amazon.com/Fundamentals-Computer-Graphics-Peter-...</a>
Maybe my expectations are too high, but that's just a collection of random comments loosely related to graphics. It's a terrible introduction, and it doesn't give any concrete information on how to get started.<p>My advice for people interested in graphics would be to jump in and get started with a tutorial on the web and then get a book or two to learn more. My recommendations would be:<p>Introduction To Ray Tracing - It focuses on ray tracing, but many of the topics (vectors, matrices, shading, view transforms, etc.) are applicable regardless of the actual rendering method, and it does a good job explaining all of it.<p><a href="https://www.amazon.com/Introduction-Tracing-Kaufmann-Computer-Graphics-ebook/dp/B003VWBY18/ref=mt_kindle?_encoding=UTF8&me=" rel="nofollow">https://www.amazon.com/Introduction-Tracing-Kaufmann-Compute...</a><p>Real Time Rendering - This also covers all the math, but focuses on rendering at a higher level and covers more ground.<p><a href="https://www.amazon.com/Real-Time-Rendering-Third-Tomas-Akenine-Moller/dp/1568814240/ref=sr_1_1?ie=UTF8&qid=1477765570&sr=8-1&keywords=real+time+rendering" rel="nofollow">https://www.amazon.com/Real-Time-Rendering-Third-Tomas-Akeni...</a><p>Finally, Computer Graphics: Principles and Practice - This is a great general reference for more specific topics. It's like Real Time Rendering expanded to cover more topics and going into more depth. Not a beginner reference, but great to have when you need more information on something.<p><a href="https://www.amazon.com/Computer-Graphics-Principles-Practice-3rd/dp/0321399528/ref=dp_ob_title_bk" rel="nofollow">https://www.amazon.com/Computer-Graphics-Principles-Practice...</a>
Does this person know anything about graphics, or is this some sort of creative writing or reportorial exercise?<p>How can one introduce vectors without the word "direction"?<p>How can one so thoroughly screw up the introduction to illumination?