
3D Computer Graphics: Software Revealed - mjn
http://www.cores2.com/blog/?p=204
======
ChuckMcM
Sigh, the canonical reference on 3D graphics "in software" has been the Foley
and Van Dam tome "Computer Graphics: Principles and Practice in C" [1],
followed closely by "Principles of Interactive Computer Graphics" [2] by
Newman and Sproul. Followed closely by the Graphics Gems series, and then
Watt's eponymous "3D Computer Graphics" [3] and "Real Time Rendering" [4] by
Moller and Haines.

All wonderful texts and can tell you everything you want to know about doing
3D graphics in software. They won't help at all (generally) for GPU based
graphics sadly.

[1] [http://www.amazon.com/Computer-Graphics-Principles-
Practice-...](http://www.amazon.com/Computer-Graphics-Principles-
Practice-2nd/dp/0201848406/)

[2] [http://www.amazon.com/Principles-Interactive-Computer-
Graphi...](http://www.amazon.com/Principles-Interactive-Computer-Graphics-
McGraw-Hill/dp/0070463387)

[3] [http://www.amazon.com/Computer-Graphics-3rd-Alan-
Watt/dp/020...](http://www.amazon.com/Computer-Graphics-3rd-Alan-
Watt/dp/0201398559/)

[4] [http://www.amazon.com/Real-Time-Rendering-Third-Tomas-
Akenin...](http://www.amazon.com/Real-Time-Rendering-Third-Tomas-Akenine-
Moller/dp/1568814240/)

~~~
_delirium
There's some good information in those books, but I don't think this one is
redundant with them (admittedly, I've only skimmed it so far). Differences: 1)
open-access; 2) interactive HTML5 demos of most of the concepts.

~~~
ChuckMcM
My opinion is that the killer project would be to combine them, which is to
say put together interactive text/exercises around each concept so that you
could read all the theory then see it in action.

------
DanielRibeiro
Direct Link to the contents: <http://www.cores2.com/3D_Tutorial/>

------
andrewmu
This is interesting and probably quite useful for a beginner, although I would
have to say some of the techniques diverge from what more experienced graphics
programmers use, e.g. working out the lighting with acos, instead of
normalising the light and /normal/ vectors. Also the coding style, e.g. local
variables LikeThis drove me a bit nuts. I think with refinement it could be
really good though.

~~~
nint22
Hi Andrew, I'm Jeremy - the author of the book. So yes, I immediately agree
with everything you say, and would even like to ask you to clarify more on
some of the technique divergence. Optimisations (such as acos vs.
normalization) was done on purpose to make the math and code crystal clear to
the reader. I've really been frustrated with great books that explain one
equation but then implement its optimized form without any clear transition or
derivation. I'm also aware that my texture system is very different than the
standard approach; this was done for my own sake since I felt more comfortable
with the Barycentric system, though (correct me if I'm wrong) that is rarely
used in comercial applications. I'm always looking to make things better for
the reader, so do tell me what other professionals think!

As for coding style - PLEASE do comment on it! I'm pretty anal about
formatting and standards, and wrote this tutorial over a few months so things
might of broke down over time. I'll be posting the book's code on Github
tonight and allow several users to modify some code as requested by users here
and on Reddit.

------
Groxx
> _What’s notably interesting about this book is that it works through all
> programming lessons in HTML5 Javascript, using the new Canvas tag._

 _Definitely_ taking a look at this one. Thanks!

edit: if the creator is reading this, you have a stray "might of" part way
through. It's "might have" - sometimes shortened to "might've" which sounds
similar, hence the unfortunately-frequent mistake.

~~~
dllthomas
Unless you're talking about the strength of something - then, it's "might of".
This would be most applicable in bad fantasy.

------
mjn
Wish this had existed a few months earlier. I taught a 3d game engines class
this year, for which I wrote up a concise tutorial of how to write a wireframe
renderer from scratch [1], plus some additional conjured-up lecture material,
but I might've used this textbook instead if it had existed at the time.

[1] <http://www.kmjn.org/notes/3d_rendering_intro.html>

