
The Computer Graphics Library - lispython
http://fabiensanglard.net/Computer_Graphics_Principles_and_Practices/index.php
======
sekasi
For anyone curious in the field, there's a version of Michael Abrash's black
book publicly available at github;

[https://github.com/jagregory/abrash-black-
book](https://github.com/jagregory/abrash-black-book)

~~~
jheriko
although its labelled and oft quoted as such the black book is really an
optimisation manual in disguise imo.

the content on graphics is virtually non-existent except for outdated
information about old hardware interfaces from a time before DirectX, OpenGL
and any particularly friendly rendering interfaces (so there was GDI and Win32
for early Windows, but we weren't yet in the time where programmers could
spunk away resources and the hardware suck it up without destroying your
performance).

there is some discussion on VSD techniques, the bresenham line algorithm etc.
but these are also outdated - libraries today draw lines for us and even AAA
games can ship without giving a serious crap about culling and hit
framerate...

i do still highly recommend reading it, just don't expect to learn anything
useful about graphics. my main takeaway from this book was 'optimise by
measuring then experimenting and measuring to confirm the optimisation'. its
so obvious but a large number of programmers i've worked with seem to prefer
to guess and not measure...

~~~
clarry
I actually started reading the book slowly a few days ago, and am now in
Chapter 17. So far there hasn't been anything about graphics; it's been mostly
about low-level optimization and discussion of differences between 8086, 286,
386, and 486... yes, it's that outdated. There are some ideas that apply more
generally (optimize your design and algorithms first, profile or measure,
etc.). I don't think you need a book to learn these things, and I think
they're close enough to common sense (for programmers) now anyway.

Having said that, I still find the book interesting, and I can't wait to get
to the part where Mr. Abrash gets to talk about the software rendering in
Quake (which he worked on). It might be outdated information for most of you,
but I'm actually interested in seeing how far you could push software
rendering with modern CPUs; it's sad that progress on that front pretty much
ended around the time Unreal was released. If it was good enough for games
back in the 90s, why wouldn't it be good for games in 2014?

If someone else here happens to be interested in 90s software rendering, make
sure you read this bit about the Thief engine.. :-)

[http://nothings.org/gamedev/thief_rendering.html](http://nothings.org/gamedev/thief_rendering.html)

~~~
blt
I started writing one and got discouraged when per-pixel Phong shading on the
teapot ran at like 10 FPS. A profiler showed me that I was bottlenecked by
simple unavoidable work like matrix multiplies in my shaders. Maybe that
profiler was wrong though... now I want to hack on it some more.

~~~
clarry
When was that, and what sort of hardware were you using?

Here's a rather impressive software renderer that does per-pixel Phong shading
and shadow mapping (among other things):
[http://users.softlab.ntua.gr/~ttsiod/renderer.html](http://users.softlab.ntua.gr/~ttsiod/renderer.html)

You might also want to look into Ingo Wald's thesis on realtime ray tracing.
In a ray tracing tutorial Jacco Bikker wrote that Wald is reporting speeds of
several frames per second for scenes consisting of thousands of polygons at a
resolution of 1024x768 pixels, _on a single 2.5Ghz laptop_. That was written
_ten years ago_ , in 2004.

------
simias
The link towards the "shadow mapping article" seems broken, it's this one:
[http://fabiensanglard.net/shadowmapping/index.php](http://fabiensanglard.net/shadowmapping/index.php)

------
jlas
No love for the Shirley book? That's what we used at CMU.

[http://www.amazon.com/Fundamentals-Computer-Graphics-
Peter-S...](http://www.amazon.com/Fundamentals-Computer-Graphics-Peter-
Shirley/dp/1568814690)

------
octopus
Nice list of books. I think I read _Fundamentals of interactive Computer
graphics_ (1st edition) around 1999 :).

~~~
mzs
Around '93 for me, the plates with the Xwing blew me away.

------
z3phyr
Off-Topic : What are some of the unsolved problems of graphics programming?
Realistic Animations?

~~~
mjn
I haven't followed progress recently, but one question that's gotten some
research is how to make GPU-ized raytracing work on dynamic scenes. Static
scenes can be handled fairly well by preprocessing data into efficient spatial
data structures like KD-trees or octrees. For example, here's an nVidia paper
from 2009 that raytraces scenes made up of huge numbers of voxels, using a
representation called a sparse voxel octree:
[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.156...](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.156.3512&rep=rep1&type=pdf)

Last time I looked at this research, though, how to handle highly dynamic
scenes efficiently was a bit of an open question. It seems to largely be a
data-structure research problem.

------
arsupertec
ahaan, gotcha..

