The introduction of videocards was motivated by the enormous computational capacity required by three dimensional computer graphics, and the need for real-time performance. Implementing these operations on a processor would be too slow. The rendering capability of graphics cards have been improving drastically since they were introduced, but so did the expectations of users from graphical applications, so the performance and efficiency have always been a core issue in these programs.
When implementing rendering algorithms, it is easy to write such code, that doesn't use the GPU efficiently. This thesis shows how it is possible to find the bottlenecks caused by suboptimal GPU usage and the unnecessary computations, and also shows how to correct them.
A simple three dimensional graphical rendering system I created earlier will be presented first, and it will be analyzed in terms of scalability bottlenecks. The rendering engine at the start can't handle a scene containing fifty thousand objects and eleven million triangles, rendering a single frame of this scene takes several seconds. The thesis shows the ideas required to make this engine handle scenes this large in real-time.
The second important topic of this thesis, is the handling of shadows and many light sources for large scale scene. The solutions given for this problem will be presented in the same benchmark scene.