Ever try to learn something and find yourself banging your head against an invisible wall. Well that’s what happens every time I try to understand computer graphics. My oldest son seems to have figured it out, but I just haven’t heard an explanation that will get me started. I go for runs with my son and he can talk for hours about shaders and pipelines and various types of graphics related constructs and I just don’t get it.
It was very much like that for me with the programming language C. I just couldn’t understand why there had to be files with an h extension that said the same thing as the ones that held the code. Then I stumbled across a series of videos from Standford university on Objective-C. When I was done the lectures and had written my first few programs, I realized that it didn’t really matter. Java got me part way there and objective-C finished the job.
So what do I have to do to understand why it’s important for graphics cards to have hundreds of cores with gigabytes of memory? Usually I start with a trip to the source of all knowledge … Wikipedia.
“Shaders are simple programs that describe the traits of either a vertex or a pixel. Vertex shaders describe the traits (position, texture coordinates, colors, etc.) of a vertex, while pixel shaders describe the traits (color, z-depth and alpha value) of a pixel. A vertex shader is called for each vertex in a primitive (possibly after tessellation); thus one vertex in, one (updated) vertex out. Each vertex is then rendered as a series of pixels onto a surface (block of memory) that will eventually be sent to the screen.
Shaders replace a section of video hardware typically called the Fixed Function Pipeline (FFP) – so-called because it performs lighting and texture mapping in a hard-coded manner. Shaders provide a programmable alternative to this hard-coded approach”
What does that mean? There are lots of big words with links, but there has to be a better way to understand this technology. Tessellation? WTF? I clicked on the link but I can’t say that I feel enlightened. So where do you go next? YouTube…
I feel slightly more enlightened now but I will probably have to write a program or two before I really understand what is going on. Anyone out there have a suggestion for where to start. Or better yet, a simple description in the form of text or a link.