software 3D engine from scratch (learning purposes)