What did you read prior to undertaking the project? How did you know what you needed to build? Have you been working in graphics awhile?
I would totally read any blog post or postmortem writeup you have if you decide to publish your results.
What did you read prior to undertaking the project? How did you know what you needed to build? Have you been working in graphics awhile?
I would totally read any blog post or postmortem writeup you have if you decide to publish your results.
I ended up doing a lot more math than I expected to understand the fundamentals of projection, basically teaching myself linear algebra, but that was pretty fun in itself.
My goal was to build a minimum-viable software rasterizer for embedded situations (STM32-F7). I still haven't gotten around to getting lighting to work efficiently, or to leverage SIMD, but I intend to whenever I get back to the project.
The source is here if you're curious: https://git.sr.ht/~zjm/Moon3D. There's also some screenshots/progress updates on my Twitter: https://twitter.com/zackmichener
[0]: https://www.pearson.com/us/higher-education/product/Foley-Co...
[1]: https://www.youtube.com/watch?v=01YSK5gIEYQ&list=PL_w_qWAQZt...
I took it well over a decade ago, but the current material is largely similar. Going in you were required to know C and C++, and math pre-reqs (Calculus, linear algebra). Other university classes might skip the rasterizer building, but I think its a useful foundation.
We started with basic OpenGL to render models. Then we replaced the OpenGL with our own rasterizer, adding features as you went. It was a tough class (10 week schedule), but very rewarding. Probably the worst part was debugging rendering issues. You could see the problem, but it was hard to locate where your math went wrong.
https://github.com/magcius/sw3dv/blob/gh-pages/sw_rast.js#L1...