I am competing with @iaobardar, @Aderos68O1 and @finnagin5 to make a very capable full 3D engine. WASD to move horizontally, Q and E to move up and down and the arrow keys for rotation. Features: - Depth sorting - Back face culling - Z-clipping - Dynamic lighting - Dynamic triangles (translation only at the moment) - Frustum culling - Minimum triangle size Speed: - 7,750 3D triangles per second (250 per frame) on scratch. - 130,000 3D triangles per second (4,300 per frame) on turbowarp (turbowarp.org/563968913). My approach to this is to first do some pre-calculations with the camera rotation. Then 3D to 2D project immediately. During the projection the triangles get clipped. After the projection is done the triangles are run through a culling algorithm and get their distances to the camera. Then the sorter sorts the triangles before rendering the 3D triangles and 2D triangles.