Software rasterization is interesting. A lot of this is implemented in hardware on modern GPUs, and can easily handle millions of triangles at realtime framerates. But within certain scopes, there are reasons you might want to hook into the process in different ways that are not easy to do, with the fixed function GPU hardware. If you're doing it on the CPU, you have the added benefit of being able to use CPU debugging tools, as well. You can find out more in the articles below: