Learning how to write a 3D engine from scratch in C#, TypeScript or JavaScript (2013)
Doing 3D rendering in software is incredibly satisfying, it's one of those things that can make you feel like a REAL computer programmer (compiler implementation has a similar effect, I believe).<p>I briefly scanned through these articles and did not see any mention of polygon clipping. A note to the inexperienced; it took me some years (I am dense at times) to realize that one of the primary uses for polygon clipping is to clip polygons against the view frustum in view space (ie after polygons have been projected to the screen). This is useful to only draw the part of a possibly <i>very large</i> polygon that is visible. As a consequence of clipping, a triangle can result in 5 sided polygon, so drawing/rasterizing arbitrary polygons, not just triangles is desirable.  You'll often read about rasterizing arbitrary side polygons when studying software 3D, this is why.<p>Also, I always like to link this tour de force by Charles Bloom when software 3D comes up, it's a great read:<p><a href="http://www.cbloom.com/3d/techdocs/pipeline.txt" rel="nofollow">http://www.cbloom.com/3d/techdocs/pipeline.txt</a>