CPU Renderer

Above you see a video showcasing the CPU renderer I built and its comparison with a GPU renderer. Both projects were written in C#, the GPU renderer using SharpDX for DirectX 12 interop. Both have 10 different tests shown, with the first simply being a color clear and then the tests increasing in intensity. In the uppper lefthand corner of each window is the frame rate. For the most part the tests are attempting to replicate identical scenes. There are a few visual glitches. The main visual glitch in the CPU render comes from the fact that it uses conservative rasterization which leads to some edges not being completely drawn. This was not replicated as SharpDX had a glitch in their conservative rasterization. The other visual glitch comes with the blown out colors which stems from a glitch in SharpDX relating to the ID3DResource-Map() function. Otherwise the imsages produced are roughly similar with some difference based on aspect ratio.

The purpose of this project was to illustrate the use of GPUs and their multicore approach to processing and its impact. Even with the CPU rendering fully utilizing a 16-Core 4.0GHz AMD threadripper, it barely is able to draw more than a handful frames per second as soon as geometry is introduced. The GPU renderer is running on Nvidia GTX 970. Even in the tests which the CPU renderer is able to produce over 10FPS the GPU renderer is capable of about 10 times as many frames.

Currently, there are no plans to continue work on this project as it was simply a proof of concept, but if you want to see the code used for it check out its Github. Both projects do output timing statistics in their debug folder if they are left to run.