3D Fundamentals Tutorial 0
This video serves as an introduction to the 3D fundamentals series, stating the goals and methods of the series as well as the prerequisites needed to follow along.
This series teaches the fundamentals of all realtime 3D graphics systems. The focus here is on the math, physics, and algorithms of 3D graphics, and not on any specific graphics API. In order to explore these ideas fully, we create a software 3D engine from the ground up, allowing us to analyse every part of the 3D pipeline (i.e. even the parts of the pipeline that are hidden in graphics APIs such as Direct3D and OpenGL).
The engine that we create will be designed to mimic (as closely as is convenient) the architecture of the typical hardware 3D pipeline. Furthermore, the focus here is on learning the basic principles, and as such we will not strive to create an engine which is optimized nor one which is feature-rich. Once we have a basic system working, we will proceed on to the next series in which we create a 3D engine based on the Direct3D API.
- Strong command of the C++ language (including C++11 features) and its standard library
- Familiarity with math concepts such as linear equations, and equation manipulation, 2D vectors, 2D rotation transformation, and the matrix representation of 2D transformations
- Famiarity with graphics concepts such as the organization of the screen raster, straight line drawing, solid and textured rasterization of triangles (this will be reviewed, but it would be better if you were already somewhat familiar with triangle rasterization)
- Ability to use basic Git functions in Visual Studio
The tutorial video is on YouTube here.
The GitHub repository for the tutorial code is here.