Technologies
- CPU Paralellism with std::async
- UV Texture Coordinate Mapping
- Normal Mapping
- Improvised Metalness Mapping
std::async
std::async was introduced in C++ 11 and is easier to use than both pthreads and open mp. My initial implementation paralellized at the multisampling level and I saw a 30% overall speed improvement. The final implementation was implemented on a per pixel basis and showed a 9.5x to 15x improvement on my 8 core 16 thread intel 9900k cpu.
All cores were working at 100% almost all the time
p4_r2-5.pov, Foggy Day, 1000 samples per pixel, 1000 depth
- with std::async
20.1 sec
- without
3 min, 8.2 sec
p4_r4-1.pov, Foggy Day, 1000 samples per pixel, 1000 depth
- with std::async
12 min, 1 sec
- without
2 hours, 46 min, 12 sec
quiz4.pov, Foggy Day, 1000 samples per pixel, 1000 depth
- with std::async
34.4 sec
- without
6 min, 38.6 sec