II. GPU BASICS
Over the past decade, GPUs have become widely available in PCs. GPUs feature powerful computing resources and high memory bandwidth, which enable high performance on 3D graphics applications. 3D graphics computations are organized into a graphics pipeline that outlines the series of computation stages between the scene input and the image output. The input to the graphics pipeline is a scene consisting of a list of geometry (defined as connected vertices) and a set of graphics instructions to compute the scene from the geometry. The GPU then processes and maps those vertices into screen-space geometry, which in turn is divided into pixel-sized fragments, in a process called rasterization. Each fragment is then associated with a pixel position on the screen. Finally, the fragments are processed and assembled into an image made of pixels [3].