Hobby real-time software rasterizer, requires a CPU with AVX2/FMA.
The goal of the project is to learn more about the graphics pipeline, software rendering and SIMD programming.
- SIMD (AVX2) rasterization/shading.
- Perspective correct interpolation of attributes.
- Fixed point rasterization with 8 bits of sub pixel precision.
- Texture sampling with billinear interpolation and tiled/morton order textures.
- Multithreaded geometry processing and rasterization.
- Sort middle architecture.
- Reverse Z depth buffer (compile time toggleable).
- Mip mapping using screen space partial derivatives.
- No runtime memory allocation (all allocations go through thread local linear allocators with a large upfront allocation).
- Simple OBJ model loader. Creates a binary out of the model and textures for instantaneous loading after the first run.
Various improvements are in todo.txt.
- Some notes on Graphics Hardware
- A Parallel Algorithm for Polygon Rasterization
- A Sorting Classification of Parallel Rendering
- A Modern Approach to Software Rasterization
- Rasterization on Larabee
- Advanced Rasterization
- Texture tiling and swizzling
- A trip through the Graphics Pipeline
- Optimizing Software Occlusion Culling
- High-Performance Software Rasterization on GPUs
- Rasterization: a Practical Implementation
- MIP-map Level Selection for Texture Mapping