naive software renderer for learning purpose
- use all CPU cores but none of GPU
- shader based rendering (vertex shader and fragment shader are supported currently)
- draw a white triangle
- basic triangle rasterizer
- basic pipeline
- draw a triangle with interpolated color
- calculate barycentric coords to interpolate vertex attributes
- draw a triangle with a perspective camera
- implement mvp matrix transform
- implement naive clipping (remove the triangle when one of its vertices is out of the frustum)
- implement homogeneous division and screen mapping
- draw a white cube with a perspective camera
- draw a cube with diffuse shading
- calculate normal vector using two edges of a triangle
- draw two cubes overlapping each other to demonstrate z-test is working
- implement z-buffer and z-test