Found in 5 comments on Hacker News
rjf72 · 2019-01-07 · Original thread
It depends on your motivation but if you really want to learn about graphics programming (as opposed to learning an API) then I think the best way to do so is to remove any API from the picture. There is an absolutely phenomenal book that does just this: Andre LaMothe's 'Tricks of the 3D Game Programming Gurus'. It was published in 2003 but when you remove APIs from the picture it's just as relevant today and will remain so for the foreseeable future.

The book starts with little more than plotting a pixel on the screen. By the end you'll have a complete lit, shaded, 3D game engine that you've written entirely from scratch. And in the process you will learn absolutely everything that goes into it.

And one thing I'd add is that this might sound somewhat overwhelming but it's really not. The book is extremely well written and clearly was a labor of love. If you get some pleasure out of math and code, you'll have no technical troubles working your way through the book and in the end will be rewarded with an intimate, flexible understanding of graphics development that won't be hamstrung by dependence on a specific API.

[1] -

TangoTrotFox · 2018-02-27 · Original thread
An absolutely phenomenal book I'd recommend on writing your own computer graphics from scratch is 'Tricks of the 3D Game Programming Gurus' [1] by Andre LaMothe. It was published in 2003, but as it's about how technology works and not using whatever the latest graphics API is - it's timeless. It goes through everything in immense, yet still very accessible, detail. You start from nothing and at the end have a fully lit, shadowed, spatially partitioned, animated, textured, 3D game - using a software renderer that you write from scratch.

[1] -

khedoros1 · 2017-02-16 · Original thread
I bought this a year or two ago:

It's basically a set of tutorials that lead you through the steps of building a software 3D graphics rasterizer. It covers rasterizing, lighting, shading, shadows, textures, etc, and the math behind each set of concepts. It's built on late-90s C and DirectX, but the capabilities used are covered by just about any game programming library. The author builds kind of an abstraction library on top of the DirectX code, and that's pretty easy to rewrite in whichever language and toolset you're comfortable with.

gmriggs · 2012-06-08 · Original thread
If you want to know all of the math and functions involved in pushing individual pixels to the screen and building something along the lines of a Quake 2-level engine in software, this book is a pretty good introduction to it all:

Note that this is the type of programming now implemented in hardware GPUs, and in libraries such as DirectX and OpenGL. If you were to write a modern game, you would do it on top of one of these hardware-accelerated libraries, and you wouldn't be writing this type of code in software anymore. But if you really want to learn how to do these things from the "ground up", this book can help you build that foundation

Fresh book recommendations delivered straight to your inbox every Thursday.