Things every graphics programmer should know?

Started by
19 comments, last by noisecrime 12 years, 1 month ago
In additions to the two good books you already got I recommend reading:
-Fundamentals of Computer Graphics by Peter Shirley, Michael Ashikhmin, Steve Marschner. (Know about the Ashikhmin-Shirley BRDF ? It's them.)
-Game Engine Architecture by Jason Gregory. (AAA game developer.)
-Mathematics for 3D Game Programming and Computer Graphics from [color=#000000][font=verdana, arial, helvetica, sans-serif][size=1]Eric Lengyel. (He was one of the first to push for the correct "bitangent" name over "binormal".)[/font]

I assume you already know aglorithms, CPU architecture, how memory works, GPU architecture, C++ and at least one graphics API.

If it's not the case I can recommend a few more books on those topics.
-* So many things to do, so little time to spend. *-
Advertisement
In additions to the two good books you already got I recommend reading:
-Fundamentals of Computer Graphics by Peter Shirley, Michael Ashikhmin, Steve Marschner. (Know about the Ashikhmin-Shirley BRDF ? It's them.)
-Game Engine Architecture by Jason Gregory. (AAA game developer.)
-Mathematics for 3D Game Programming and Computer Graphics from [color=#000000][font=verdana, arial, helvetica, sans-serif][size=1]Eric Lengyel. (He was one of the first to push for the correct "bitangent" name over "binormal".)[/font]









I assume you already know aglorithms, CPU architecture, how memory works, GPU architecture, C++ and at least one graphics API.


If it's not the case I can recommend a few more books on those topics.
-* So many things to do, so little time to spend. *-
Here are the books on my reading list: lightreading.jpg

You know, just some light reading when I have the time. smile.png


Need extensive calculus, signal processing, statistics, all kinds of stuff.


Indeed, I'm beginning to realize this now that I'm studying topics like radiosity, spherical harmonics, and monte carlo integration. Even basic mip-mapping has signal processing theory behind it.

When I first came to GameDev (like 10 years ago), I was just learning DirectX and basic programming. I've spent a lot of time trying to learn APIs and rendering techniques, but until recently I've neglected more academic aspects of graphics like fully understanding the math behind everything and really learning the data structures and algorithms. I'm realizing that even after 10 years of programming with DirectX, I'm still really not a graphics programmer; I feel a bit like a poser with a lot of upper level knowledge without the fundamentals to back it up. I want to change that. At the same time though, it seems like to really grow, you need to do it full-time in a production environment (i.e. get an entry level graphics job or something).
If your maths isnt as strong as you may think, pre calculus books are an excellent way to 'catch up', it makes those calculus books easier to work with, the big book on linear algebra is a bit worrying though, I wouldnt be surprised if its all wordy and 'boring', especially considering the size similarity to Calculus which I have worked with and it contains linear algebra and pre calculus anyway.

One thing I would recommend is you download Microsoft Math, its free and its graphing features and well everything else are excellent, much better than a graphical calculator plus it has onenote integration which is great.

Oh and for the sake of procedural programming, have a look at "Texturing & Modeling - A Procedural Approach" and GPU Gems, Real time rendering does reference GPU Gems a lot and just adds more words, I found GPU Gems to be easier to read than Real time rendering but it really depends on your style of learning, some people like lots of theory some people dont.

One thing I would recommend is you download Microsoft Math...


How is it possible that I've gone this long without knowing about this?

Another thing about Real-time Rendering is that, aside from a view chapters that discuss theory (in very good detail), it's more of an overview of what is out there than a "how-to" book. But it's great for helping one decide what direction to take, and it is extremely well-referenced, and so it also serves as a directory for finding the implementation details that you're looking for. Don't take my word for it, though; I'm somewhat of a newbie.

How is it possible that I've gone this long without knowing about this?


Doesnt really surprise me, MS are bad when it comes to informing / advertising, sign up to all their spam mail and you'll likely only get generic mail on core products, things like Math, Robotics, Visio, project etc only seem to be discovered by error these days

If your maths isnt as strong as you may think, pre calculus books are an excellent way to 'catch up', it makes those calculus books easier to work with, the big book on linear algebra is a bit worrying though, I wouldnt be surprised if its all wordy and 'boring', especially considering the size similarity to Calculus which I have worked with and it contains linear algebra and pre calculus anyway.


Ironically, the Linear Algebra book is the one I'm most enjoying at the moment. Strang is an incredible professor (he teaches the OpenCourseware Linear Algebra course at MIT). Thank you for the Microsoft Math suggestion, I have been looking for something like that for a while now! I haven't started Real-Time Rendering yet, but it looks very heady, and it will probably be a slow read.
Thanks guys ...your suggestions will definitely help me a long way...i have just started my graphics programming ,starting off with the API DirectX, then now i have moved on to shaders, and the books you have suggested , vil start reading them, though i knew some of them, but ,this post will be really helpful.... :)
I recommend Paul Dawkins' course Calculus I,II,III, Differential Equations & Linear Algebra. You can download it for free as a pdf. http://tutorial.math.lamar.edu/
Additionally you can watch the excellent videos from Khan Academy. http://www.khanacademy.org/
[color=#282828][font=helvetica, arial, verdana, tahoma, sans-serif]

*

[/font]Photography and cinematography.

[font="helvetica, arial, verdana, tahoma, sans-serif"][size="2"][color="#282828"] Maybe how to draw and paint. This is one I only understood fairly recently. The vast majority of rendering is motivated by cinema approaches and some photography, which in turns draws a lot from old school hand-created art. There's no point developing visual effects if you don't understand why and how they're used.[/quote][/font]
[font="helvetica, arial, verdana, tahoma, sans-serif"][size="2"][color="#282828"]^^ this, this, and this again ^^ [/font]

Photography and cinematography are absolutely vital for realism. Art, design, and sculpture come into their own when you start dealing with NPR techniques. Take as many art/sculpture/design/photography/animation classes as you can. It doesn't matter if you suck, you will get better, and I can't emphasise enough how much that knowledge will help you in the long run. The two biggest benefits I've personally found is that you develop a very critical eye for flaws in your own work, and it allows you to communicate with the art/animation departments using their terminology (thus reducing the amount of wasted work and general confusion). It's also possibly telling that around half of the graphics programmers I work with, have a formal education in art, myself included (I originally entered the games industry as an 3D artist before making the switch to the dark side).

This topic is closed to new replies.

Advertisement