I regularly receive e-mails with the question what kind of books I recommend if someone wants to become a graphics programmer. Here is my current list (maybe some of you guys can add to this list?):
First of all math is required:
- Vector Calculus
- Vector Calculus, Linear Algebra, and Differential Forms I have the 1999 version of this book
- Computer Graphics Mathematical First Steps
- Mathematics for Computer Graphics
For a general knowledge in programming the CPU:
- Write Great Code Volume 1: Understanding the Machine
For a better knowledge on how to program the GPU:
- DirectX documentation
- NVIDIA GPU Programming Guide
- ATI GPU Programming Guide
To learn about how to program certain effects in an efficient way:
- ShaderX - ShaderX7
- GPU Gems - GPU Gems 3
- GPU Pro and GPU Pro Blog
To start learning DirectX 10 API + Shader Programming:
- Introduction to 3D Programming with DirectX 10
- Programming Vertex, Geometry and Pixel Shaders
To start learning OpenGL & OpenGL ES:
- Khronos group
For general overview:
- Real-Time Rendering
- Fundamentals of Computer Graphics (this one also belongs in the math section)
To get started with C:
- C Programming Language
To learn C++
- C++ for Game Developers
- C++ Cookbook
- there is a long list of more advanced C++ books ...
Do yourself a favor and don't buy Peter Shirley books if you are a beginner. Get "Interactive Computer Graphics: A Top Down Approach" by Angel. And "Realtime Rendering" rocks. :D
ReplyDeleteI also liked "3D Math Primer".
"Real-Time Rendering" is in the list -> list is complete. :)
ReplyDeleteI like "Essential Mathematics for games & interactive applications" by Van Verth and Bishop. It has some good, easy to read explanations of a lot of graphics topics.
ReplyDeleteAlso, I think every programmer regardless of specialty should read "The Pragmatic Programmer" by Hunt & Thomas and "Code Complete" by McConnell.
I have a deep knowledge in the object oriented programming languages like C++, Java, Python etc. I don't want to become a graphic programmer.
ReplyDeleteNothing on Win32 or other ways of interfacing with the OS? (Qt/Gtk/WxWidget/etc...?)
ReplyDeleteYou are right, we could also name a few books here although I can't think of any of those in my hands for more than a decade.
ReplyDeleteI would add some books on painting and learning to draw. Heinrich Wölfflin's introductory essay on Dürer for example, and some minimal understanding of photo/cine lighting, because cg - REAL cg -- is about using complex processes to make colors to make pictures.
ReplyDeleteSpeaking of books, is ShaderX8 set for release next month?
ReplyDeleteAny particular article title you could single out? hehe
It is now called GPU Pro and in full-color and it will be released before GDC. You can read up already on the GPU Pro blog ... link is mentioned above.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteFor the mathematical part I can only recommend "Geometric Tools for Computer Graphics" as a thorough reference
ReplyDeleteIntroduction to 3D Game Programming with Direct X 9.0c: A Shader Approach
ReplyDeleteMe and several students (20+) at my school, DigiPen, have used this book to get introduced to Direct X 9. The book is simply an intro to Direct X, but it works great.
Both books Introduction to 3d games programming (dx9 and dx 10) from Frank Luna are very good (excellent reference and samples inside with a lot of basic interesting hlsl stuff)
ReplyDeletealso Game graphics programming from Allen Sherrod is a very good book
cause it has examples in opengl/dx9 and dx10
Now if opengl is your flavour
there is (more opengl programming by DAvid Astle) which is an excellent book
covering opengl 2 and glsl
plus some model and bsp/portal stuff
when i get asked this question... it is almost invariably by people who are not yet programmers.
ReplyDeletelearn to be a programmer first
then specialize.
Hi Wolfgang,
ReplyDeletehas it a sense, in your opinion, to code graphics in "simple" C (instead of C++)?
This is still quite common. The C99 standard added a lot of good C++ features to the C language. Unfortunately I believe Visual Studio is still not C99 compatible. I used Pelles C for a while and it is a pleasure to work with C99.
ReplyDeleteYou keep your port more portable this way. For some environments, C is still the way to go.
C# is for tools programming and for spare time programmers that don't care about being restricted to Microsoft Windows environments.
C code is also easier portable to the iPhone. Obj-C++ does not support many C++ features.
I've not read RTCD in the list --> the list is incomplete!
ReplyDelete(Real Time Collision Detection)
This is a great book. I use it quite often. If you define graphics programming very narrow, than what you do is program the graphics card. Collision detection is traditionally handled on the CPU and is also now in the content of Physics engine packages. Therefore I would consider it a great candidate for a list of books named "You want to become a more experienced Graphics Programmer ...".
ReplyDeleteI think that the math in that book is necessary to became an advanced Graphics Programmer ;)
ReplyDeleteI remember when I used to suggest just "Computer Graphics by Foley, van Dam".
ReplyDeleteA lot of time ago and for me that was THE book.
Eheh, I'm getting nostalgic ;)
Thank you for taking the time to write about wanting to be graphics programmer. I found some of these books on my own and working through them. It is nice to see I am moving in the right direction.
ReplyDeleteThank you
This is all focused on interactive graphics programming. But there are still people taking their time to get more photo-realistic images. So here is some literature listing about offline rendering books.
ReplyDeleteFirst - to get going:
- Shirley & Morley, Realistic Ray Tracing
- Suffern, Ray Tracing from the Ground Up
- Jensen, Realistic Image Synthesis using Photon Mapping
If you want it all put together nicely in literate programming and in depth theory:
- Pharr & Humphries, Physically Based Rendering
Looking at all the bunch of GI algorithms:
- Dutré et al., Advanced Global Illumination
And don't forget about realistic material models:
- Rushmeyer et al., Digital Modeling of Material Appearance
Some classics, still in print:
- Glassner et al., An Introduction to Ray Tracing
- Sillion & Puech, Radiosity and Global Illumination
- Cohen & Wallace, Radiosity and Realistic Image Synthesis
- Ward et al., Rendering with Radiance
- Ebert et al., Modeling and Texturing - the Procedural Approach
- Apodaca & Gritz, Advanced Renderman
Get the free PDF+code for:
- Ashdown, Radiosity - a Programmer's Perspective
For some in depth details about implementing solid irradiance caching:
- Krivanek et al., Practical Global Illumination with Irradiance Caching
Some older textbooks about the fundamentals, beside Shirley etal.:
- Watt, The Computer Image
- Watt, 3D Computer Graphics
- Watt & Watt, Advanced Animation and Rendering Techniques
Don't buy them all, they are quite redundant. Look for what is right for your level, topic interests and learning style.
check www.scratchapixel.com to learn CG programming.
ReplyDelete"Write Great Code" was superb, thanks for recommending it!
ReplyDeleteMy pleasure!
ReplyDelete