features: - scene and model rendering strategies, that can be optionally selected and will configure other constants (e.g. a "low memory sort strategy" will turn z-buffer off and turn back-to-front sorting on). - triangle sorting: - back-to-front (slower, better memory efficiency) - front-to-back (faster, but needs 1bit stencil buffer) - Z-buffer: - full DONE - reduced (resolution and precision) DONE - more reduced (4-bit) - perspective correction modes: - none DONE - full DONE - triangle subdivision (each triangle side will be subdivided after reaching a defined length, which will be measured by Chebyshev or similarly fast distance). - also offer some approximation function? - predefined 3D shapes: - cube DONE - sphere - cylinder - pyramid - plane - Depth computation during rasterization -- this should be an optional thing, specified with a define (S3L_COMPUTE_DEPTH), which may be turned on automatically for some modes (e.g. Z-buffer). It should be computed by the fast lerp and passed in the PixelInfo struct. - Python tool to convert obj to C array - helper functions for lighting/shading - Line and point drawing modes for triangles should maybe not overlap on adjacent triangles (as filled triangles already do)? - create demos - drawModel: create an option that would use a cache to not transform the same point twice - Optional rendering stats (FPS, rendered triangles, ...). - Change the rotations to use yaw-pitch-roll instead of extrinsic Euler angles? bugs: - Why is persp. correction inaccurate near the camera? repeated: - valgrind (and similar) checks - optimize - write tests/benchmarks