(Graphics) Programming Resource List

Game Engine Architecture, Third Edition

It is my favorite book, and I own the first and second editions. It covers a vast amount of different topics required for game engine development.

Presents different approaches to the engine design and discusses different strategies with practical examples from various engines and their associated tradeoffs. The book provides detailed insights into how Naughty Dog solved several challenges in their property technology.

It doesn’t focus too much on the rendering aspect of engine design but covers pretty much everything else.

Foundations of Game Engine Development, Volume 2: Rendering

This book fills the gap where Game Engine Architecture needs more information about rendering.

The book provides an extensive overview of the real-time rendering world aimed at an intermediate-level graphics programmer. This is not a beginner book, and it’s helpful to have followed a couple of getting-started tutorials for graphics programming before picking up this book.

However, it focuses on developing a practical and well-explained understanding of basics such as color spaces, coordinates spaces, graphics pipelines, projections in various forms, and classical lighting and shadow methods. Many of the techniques presented are not state-of-the-art, but these techniques provide an excellent understanding of the foundations of the more “modern” techniques used in many AAA game engines today.

Additionally, it contains an excellent chapter on visibility and occlusion.

It’s an intermediate book; a good understanding of fundamentals in math is helpful, but the author explains as the material gets introduced. If you notice yourself needing more mathematical understanding, look at part 1 from the same series and author.

Physically Based Rendering: From Theory To Implementation

This book covers a modern and in-depth approach to the design and developemnt of a practical photorealistic rendering system. The implementation is aimed at non-realtime rendering but shows the theory that underlies the state-of-the-art realtime rendering methods.

The whole book is available free of charge online but an print version is available as well.

Foundations of Game Engine Development, Volume 1: Mathematics

This book provides an in-depth introduction to the mathematics required for graphics developers. It covers “classical” topics such as linear algebra (vectors and matrices), transforms, and geometry and gives the reader a great understanding of how to solve many practical challenges and understand industry work.

However, the book also covers Grassmann/Geometric algebra, a relatively recent algebra extending to more natural work on geometrical objects. With this understanding, some “oddities” of linear algebra, such as the behavior of normal vectors under transformation, can be understood more cohesively.

Real-Time Collision Detection

This is a book that I find myself grabbing from the bookshelves quite regularly. It’s my go-to resource when I am looking to solve geometry or collision-related challenges.

It has an extensive list of explanations for the most reliable and efficient way to perform various operations.

Looking to test for a collision between two primitives, find the closest point between a shape and a line, how to merge AABBs, and build efficient spatial partitioning structures?

This book has you covered, as well as in many more cases. Take a look at the table of contents.

Data-oriented design: software engineering for limited resources and short schedules

This book is a quick and fabulous read to get a deeper understanding of what all this talk about data-oriented design is about. It goes beyond the often-mentioned reduction of cache misses. It shows how an application design based on the underlying data’s properties is fundamentally designed differently than when following an object-oriented approach. It provides much food for thought when looking at your problems with a new mindset.

Das Zettelkasten-Prinzip: Erfolgreich wissenschaftlich Schreiben und Studieren mit effektiven Notizen

This book covers the Zettelkasten method. A method of organizing knowledge based around a structured, interconnected web of fundamental ideas.

This book fundamentally changed how I store, connect, and find all the knowledge I read and learn about daily. The book focuses on academic writing, but the same can be applied to a personal knowledge management system.

This book is in German, and I have yet to read the English translation. Therefore, I cannot comment on the quality of the translated English text.