Some time ago, in 2012, I thought about implementing software renderer. The project wasn't focused on speed or parallelism, but more like on proof-of-concept, to check and learn how it really works.
In the end I ended up with the code, that is SIMD vectorized (e.g. works similarly to actual GPU rendering), works entirely on CPU, was written in C language, and isn't as slow as I thought it would be.
|Sample screenshot from software renderer.|
Now the shading language was the biggest problem in the project, because I didn't really want to implement virtual machine for this one. So if you want to know more, grab the code, test and read through.
As for the links - source and binary.
Both are linux only, binary is only for amd64 (you can always compile the source).
If you would like to use the source in any way, please ask first through mail.