|Austin Morlan 263c36bd9a Update GIF location||3 weeks ago|
|Source||1 year ago|
|CMakeLists.txt||1 year ago|
|LICENSE||1 year ago|
|README.md||3 weeks ago|
To best learn what a GPU is doing, I wanted to recreate the functionality of the GPU in software. It’s not anywhere near as fast as a GPU of course, but it’s not slow either (for a single model that is relatively low-poly).
The biggest bottleneck of modern CPU performance is latency between memory and the CPU, so I tried to use spatial and temporal locality to keep data in the cache. Although I chose to go for array-of-structs instead of struct-of-arrays, the cache miss rate is fairly low.
I created my own very basic OBJ loader (rather than use
tinyobj) to better
understand how OBJ files are constructed, along with their respective MTL files.
I also wrote my own linear algebra functions and classes (rather than use
to better understand the low-level math operations.