Computer hardware advances at a stunning rate, and graphics processing units are part of it. Today’s GPUs are highly programmable, capable of running complex algorithms, and have a high computing capacity.
My thesis’ goal is to investigate real-time shadow rendering algorithms. Rendering good quality shadows is important for improving the realism of rendered scenes. Another important aspect of shadow rendering algorithms beside quality is computational and storage costs.
I will present two families of algorithms, each with a distinct principle for solving shadow rendering, along with an algorithm uniting both concepts. The first family is shadow map-based algorithms. Shadow maps are computationally cheap, and easy to implement, but they use a rasterized approximation of the shadow casting objects, thus producing aliasing along shadow edges. The second family of algorithms is based on generating geometry that approximates the shadow’s shape or volume. This method produces good hard edged shadows, but requires generating an unknown amount of geometry (impossible with previous generations of GPUs), and requires filling these shapes, thus putting a heavy burden on rasterization units. The hybrid approach is to use a shadow map, augmented with geometry data, to later reconstruct precise shadow edges. This method unites low computational cost with sharp shadow edges. Until today, their main limitation stemmed from using textures, which constrained the amount of data stored per pixel to a single vertex, thus introducing errors in the shadow’s shape.
Using the latest generation of graphics hardware, it is possible to generate a variable amount of geometry primitives on the GPU, and store variable sized data per pixel, thus not only enabling the implementation of these algorithms purely on the GPU, but also making room for further improving on them.
In my thesis, I will present the aforementioned algorithms, and will implement and propose improvements for a hybrid approach (based on shadow maps and shadow geometry) for rendering hard shadows in real-time. Furthermore, I will implement the penumbra wedges algorithm on the GPU, which is a shadow volume-based approach to rendering soft shadows.