Press "O" for options WASD and arrows A recent state of GammaC's renderer. Compare with a fast version of a common Scratch BSP engine design: https://scratch.mit.edu/projects/1363391501/ What would I like to note about what I've done to help this engine run? It makes heavy use of preprocessing and shared references of objects: 1. Each type of struct is continuously packed into a sequence containing its own type, and can be efficiently accessed by indexing. 2. Each vertex is only ever transformed once, for example, no matter how many triangles owning it are rendered. Any vertex which is not referenced by a triangle currently being drawn is simply not transformed. 3. Similar planes are combined together such that several unrelated faces may share the same plane, 4. Among other various small hacks which exist to hyper-optimize the traversal phase. Many of these are also found in Quake's original software renderer 5. On a higher-level, the renderer performs a traversal on the BSP tree, and culls the BVH of nodes against a view frustum. Resultant leaf nodes are also culled.