Real-Time GPU Techniques for Advanced Lighting Phenomena
In the real world, the visual perception of an object is completely determined by the object's interactions with light. One large application of computer graphics is to visualize virtual objects and worlds in a fashion that is familiar to humans. Successfully emulating light and its effects on virtual objects therefore plays a central role.
The papers included in this thesis mainly explore improved methods of computing the effects of light in various settings. The focus is on doing so in real-time for interactive applications. Two papers target capturing the visual effects of light traveling through a participating medium (a medium such as fog or smog). The first of these papers presents a method that can be used to render shafts of light/volumetric shadows in real time. The second paper extends this to include additional effects associated with participating media, including, for example, indirect illumination of surfaces from light scattered in the medium.
Next, two papers explore real-time rendering with many light sources. One paper presents a method to efficiently render in the presence of and manage thousands of light sources and demonstrates scaling up to one million lights. The other paper focuses on rendering on mobile devices (such as smartphones and tablet devices), and investigates the possibility of off-loading rendering tasks to a remote server. The paper presents one approach where a server computes indirect illumination represented by virtual light sources. The client retrieves these virtual light sources from the server and uses an adapted version of the previously presented many-lights technique for rendering.
Graphics processing units (GPUs) play a central role in all these techniques. Thus, the first paper included in this thesis discusses efficient implementations of fundamental building blocks for programming GPUs. In particular, it presents an efficient implementation of the stream compaction operation. It further discusses the programming strategy that makes the implementation efficient and demonstrates several related fundamental operations developed using that strategy.