A lot of resources (“lessons”) about Computer Graphics. Especially describes the whole 3D pipeline: triangle rasterization (projection, coverage test, depth management, etc.).

How OpenGL works: software rendering in 500 lines of code

Another set of lessons to build a rendered.

Explanation of gamma. Takeover: most operations (gradient, blending, etc.) must be done in linear space and in floating-point to be correct. Using sRGB space as if it is linear is wrong.

“YUV and Luminance considered harmful”. Takeover: “luminance” (Y’) in computer graphics is not the same as “lumninance” (Y) in color science (i.e. CIE luminance). We should avoid the terms YUV and “luminance” and use the correct “Y’C_BC_R” and “luma” terms instead.


Describe how difficult it is to handle input events with the experience of libinput.