About: A sidequest is an optional, not graded, not evaluated in anyway exploration into a topic. Sometimes it is just cool to know what is out there in the world. Sidequests come with a little descritions, presentations, related resources, and a sample code or exercise you can try. Side quests are likely a good area for further independent studies, research project, thesis, etc.


Software Rasterization


tbd

Problem Statement

There are too many complicated hardware-accelerated graphics APIs. The advantage of a software-based graphics API is the ability to run on any CPU regardless of it having hardware acceleration (i.e. portability), and the ability to debug the application on the CPU (i.e. no need to rely on hardware vendor debuggers which may not give you access to all data). The disadvantages however of a software rasterizer, are that it is likely to be slower and potentially consume much more energy.

Proposed Exercise

Build a software rasterizer that mimics a hardware-based API. Use SIMD instructions and multiple threads to make it reasonably fast. Profile the energy usage to see if it's feasible (potentially port to mobile). Consider if there may be other accelerators that can be used that remove dependence on proprietary GPU hardware vendors.

Proposed Evaluation

tbd

Key Resources

(The first resource you should read)

Additional Resources