0) Preface
The following list is primarily intended as a study guide for
graduate students (masters or PhD) who intend to do research in the
area of computer graphics. Computer graphics has involved into a fairly
mature field so that a decent foundation is required before good
research can be done. The list gives several books that I would
recommend to read. There are many different types of books and it is
sometimes difficult to pick the right one. Personally, I prefer to
start reading books that are less formal, more redundant and give a
good intuitive understanding of a topic. These type of books might be
criticized for being too easy and not rigorous enough. However, if your
background is computer science, it might be hard to understand advanced
mathematical texts at the beginning. I believe it is much more
efficient to read the simple introduction first. Then, after you have a
good initial understanding, you might get bored with introductory books
and favor books that are concise, in depth and include a rigorous and
complete treatment of a topic. Additionally, it is important to
consider that even the simple books require a decent mathematical
foundation.
Constructive comments and feedback is appreciated. Peter Wonka - May
2006.
1) Computer Graphics Text Books
1.1) Basic Text Books
There are several interesting text books that can be used as
introduction to Computer Graphics. These books cover the topics of an
introductory undergraduate class in computer graphics:
- Hearn, Baker. Computer Graphics with OpenGL.
The book has many nice illustrations, but is fairly long and not very
concise. I currently use this book for the undergraduate class in
computer graphics.
- Shirley. Fundamentals of Computer Graphics.
This book is more concise and formal and covers more advanced topics.
1.2) OpenGL
Most computer graphics programs in research use OpenGL. OpenGL is
also typically covered in the first introductory undergraduate class:
- OpenGL Architecture Review Board, Dave Shreiner, Mason Woo,
Jackie Neider, Tom Davis.
OpenGL(R) Programming Guide : The Official Guide to Learning OpenGL(R),
Version 2 (5th Edition) (Paperback)
1.3) Real-time rendering
The main book in this area is
- Tomas Moeller, Eric Haines. Real-Time Rendering (2nd Edition)
The book is very ambitious and covers many topics in the area of
real-time rendering and also related topics from other areas.
I think this book is one of the best books to read after reading an
introduction to Computer Graphics. The disadvantage is the fact that
several topics are not described in sufficient detail to be
understandable from the book. However, the book does a very
good job to reference important research papers in most areas for
further study
Other interesting books in real-time rendering are the GPU GEMS. These
books are collected articles about various topics that use
graphics hardware. The advantage is that articles are easier to read
than average research papers and the articles often include
source code for vertex shader and pixel shader.
- GPU Gems 2 : Programming Techniques for High-Performance Graphics
and General-Purpose Computation (Gpu Gems)
Matt Pharr, Randima Fernando;
- GPU Gems: Programming Techniques, Tips, and Tricks for Real-Time
Graphics
Randima Fernando
1.4) Physically-based rendering
I use the following two texts for the graduate graphics class:
- Pharr and Humphreys. Physically-based Rendering.
This book is a good introduction to global illumination, focusing on
ray tracing. The book includes source code and includes many detailed
explanations. I think it is a great introduction to global illumination
and ray tracing, because it is detailed enough to convey advanced
concepts, but still easy to read.
- Dutre, Bekaert, Bala. Advanced Global Illumination.
This book is more concise, shorter and it seems to be more complete. It
is definitely harder to read as an introduction, because it includes a
many formulas.
2) Mathematics
To sell research ideas and to be precise in the description of what
you are doing, it is important to read a lot of math. Starting with a
good foundation in calculus and linear algebra you can then proceed to
more advanced topics. Again, this list focuses on books that are
understandable by computer science graduate students with decent
mathematics background.
2.1) Calculus
- James Steward. Calculus.
This basic book is not extremely formal. Most of this information is
typically covered in undergraduate classes.
2.1.1) Vector Calculus
- Schey. Div, Grad, Curl, and All That: An Informal Text on Vector
Calculus
This is a great little book that gives a good overview. The book can be
read really quickly.
2.2) Linear Algebra
- Farin and Hansford. Practical Linear Algebra: A Geometry Toolbox
This book is a great introduction to Linear Algebra. It uses geometric
intuition and interpretations rather than formal proofs.
- Gilbert Strang. Linear Algebra and Its Application.
This is one of my favorite books. I would recommend it to any PhD
student in computer graphics. Most likely it contains information you
did not learn as an undergraduate student.
- Matrix Methods in Data Mining and Pattern Recognition by Lars
Eldén
This book is very concise and includes a lot of helpful information. I
recommend reading this book after Gilbert Strang.
3.4) Signal Processing
- Bracewell. The Fourier Transform and Its Application.
This text focuses on the continuous Fourier transform. I really like
this book, because it includes many images and explains the Fourier
transform without too many simplifications. I found that most computer
graphics books do not present the Fourier transform in sufficient
depth. This is understandable due to space constraints, but the Fourier
transform is essential for several topics in computer graphics, most
importantly aliasing and anti-aliasing. I would recommend that text to
all PhD students in computer graphics. Read at least the first eight
chapters.
3.3) Wavelets
- Jensen and la Cour Harbo. Ripples in Mathematics.
This book is a very simple introduction to the topic. The first 70
pages give an excellent intuitive understanding of wavelets using
simple examples and almost no formalism. It is possible to gain a lot
of intuitive insight into the topic and spend only an afternoon.
3.5) Differential Geometry
- O'Neill. Elementary Differential Geometry.
If you work with curves, and surfaces, this book is a good
introduction. Discrete computations on triangle meshes are not really
covered, so this book is only the basis.
- Do Carmo. Differential Geometry of Curves and Surfaces.
This book is more formal and complete.
3.6) Other Topics
There are many other topics of interest, such as statistics,
optimization, monte-carlo statistical methods, curves and surfaces, and
calculus of variations. Book recommendations in these areas are future
work.
3) Related Areas
3.1) Computational Geometry
Computational Geometry covers topics such as spatial data structures
(quadtrees, kd-trees, bsp-trees, ...) and geometric algorithms such as
triangulation that are often used in computer graphics. I would
recommend the book
- Computational Geometry
Mark de Berg, Marc van Kreveld, Mark Overmars, Otfried Schwarzkopf
3.2) Image Processing
- Digital Image Processing (2nd Edition)
Rafael C. Gonzalez, Richard E. Woods.
This book is fairly easy to read and covers most basic topics in image
processing.
3.3) Computer Vision
Computer vision and computer graphics share many interesting
problems and in the recent past
conference papers included components from computer vision and computer
graphics.
I would recommend the book:
- Computer Vision
Linda G. Shapiro, George C. Stockman, George Stockman, Linda G Shapiro