Reddit reviews Computer Graphics: Principles and Practice in C (2nd Edition)
We found 7 Reddit comments about Computer Graphics: Principles and Practice in C (2nd Edition). Here are the top ones, ranked by their Reddit score.
We found 7 Reddit comments about Computer Graphics: Principles and Practice in C (2nd Edition). Here are the top ones, ranked by their Reddit score.
Some game development related books and articles that I went through the 90's.
Computer graphics, principles and practice
Hopelessly outdated by now, but I have so many fond memories of reading it as a teen :)
The good news is that the things I learned from my 2nd ed. Foley and van Dam textbook in 1990 http://www.amazon.com/Computer-Graphics-Principles-Practice-Edition/dp/0201848406 are all relevant to me today, even though I've learned so much more now. Learning a particular piece of software can get outdated, but learning ray tracing, inverse kinematics, or procedural animation will probably never get old and at least give a strong background to everything you need to learn in the future. And to stay current, you can always go to SIGGRAPH! http://s2014.siggraph.org/
Depends on what you mean by "basics".
If you want to build from the ground up, look into things like image processing (de-speckle, add noise, edge detect, grayscale, etc), and then raytracing, image mapping, texture mapping, camera effects like fisheye, and so forth.
If you want a higher-level approach, check out the free software GIMP (for 2D) and Blender (for 3D), and build your own animations and photo effects.
The classic text for this, is the Foley and Van Dam Computer Graphics Principles and Practice
Nope. I'm Cory. (Check the comment at the top of the file.) Paul has been nice enough to host the code I posted to comp.graphics.algorithms for 20-something years now. Since then, I've watched it evolve through generations of people copying, pasting and editing it over and over.
So, I guess I read too much into the code below. It's neat that we ended up with such similar implementations. I didn't read the original Lorensen and Cline paper. I learned the technique from Foley & van Dam. But, F&vD's implementation was much more manually unrolled, so it didn't have this technique.
static const float offs[][3] = {
{0.0f, 0.0f, 0.0f},
{1.0f, 0.0f, 0.0f},
{1.0f, 1.0f, 0.0f},
{0.0f, 1.0f, 0.0f},
{0.0f, 0.0f, 1.0f},
{1.0f, 0.0f, 1.0f},
{1.0f, 1.0f, 1.0f},
{0.0f, 1.0f, 1.0f}
};
for(i=0; i<8; i++) {
p[i][0] = pos[0] + sz[0] offs[i][2];
p[i][1] = pos[1] + sz[1] offs[i][1];
p[i][2] = pos[2] + sz[2] offs[i][0];
val[i] = ms->eval(ms, p[i][0], p[i][1], p[i][2]);
}
process_cube(ms, p, val);
vs
//a2fVertexOffset lists the positions, relative to vertex0, of each of the 8 vertices of a cube
static const GLfloat a2fVertexOffset[8][3] =
{
{0.0, 0.0, 0.0},{1.0, 0.0, 0.0},{1.0, 1.0, 0.0},{0.0, 1.0, 0.0},
{0.0, 0.0, 1.0},{1.0, 0.0, 1.0},{1.0, 1.0, 1.0},{0.0, 1.0, 1.0}
};
GLvoid vMarchCube1(GLfloat fX, GLfloat fY, GLfloat fZ, GLfloat fScale)
{
//Make a local copy of the values at the cube's corners
for(iVertex = 0; iVertex < 8; iVertex++)
{
afCubeValue[iVertex] = fSample(fX + a2fVertexOffset[iVertex][0]fScale,
fY + a2fVertexOffset[iVertex][1]fScale,
fZ + a2fVertexOffset[iVertex][2]fScale);
}
Real Time Rendering was recommended to me by a few professional graphics devs when I asked them the same question. This is NOT a light read, and it won't tell you how to use a specific API (DirectX, OpenGL), but it will give you the foundations to better understand an entire graphics pipeline and the various techniques used.
Other posters have mentioned starting with a software rasterizer. I'd highly suggest this as it helped me a lot when I had to do a very small one in college. There is a more recent version that is likely better(haven't looked yet), but this is the book we used and it can be picked up for dirt cheep!
Senior Level Software Engineer Reading List
Read This First
Fundamentals
Development Theory
Philosophy of Programming
Mentality
Software Engineering Skill Sets
Design
History
Specialist Skills
DevOps Reading List