Real-time Rendering Using Layered Depth Maps

A layered depth map is an extension of the well-known depth map used in rasterization. Multiple layered depth maps can be used as a coarse scene representation. We develop two global illumination methods which use said scene representation. The first is an interactive ambient occlusion method. The second is an interactive single-bounce indirect lighting method based on photon differentials. All of this is implemented in a rasterization-based pipeline.

Introduction

Following my bachelor thesis on ambient occlusion, I wrote my master thesis on indirect lighting in general. The idea is to use a so-called layered depth map as a ray-tracing accelerator for real-time photon differential tracing. This can be used to trace diffuse indirect lighting (and also ambient occlusion).

Shortly after handing in, I wrote an article on the same topic. The definitive version is available at http://diglib.eg.org/. The Bibtex entry for the article is located further down on this page. I recommend that you read the article first to get a brief introduction to the topic. If your interest is piqued, then you can read my master thesis to get all the technical details.

Source Code

As always, the full source code is available. I’ve also made a binary distribution along with some model files. You press/hold r to render. Press/hold t to overlay rendering statistics (e.g., frame time).