Virtual Shadow Maps
This is a copy of a near-final version of the article we published in GPU Zen 3, translated from LaTeX to Markdown.
This is a copy of a near-final version of the article we published in GPU Zen 3, translated from LaTeX to Markdown.
Reflective shadow maps, introduced in 2005 by Carsten Dachsbacher and Marc Stamminger in the eponymous paper, is a technique for rendering a single bounce of indirect lighting in real time.
RSM is derived from the simple observation that any point that can be directly seen by a light source is itself a light source for first-order indirect illumination. In other words, each texel in a shadow map can be treated as a tiny light that can illuminate the scene. For this purpose, RSMs extend shadow maps to include normals and luminous flux.
While the technique delivers on the promises made in the paper, it suffers from a few drawbacks that make it difficult to use in real applications:
In this post, I will describe some techniques to improve the performance and quality of RSMs.
In computer graphics, Mie theory describes the interactions between light and large (relative to the wavelength of light) particles in a medium. Simulating it is crucial in rendering convincing volumetric effects like fog, clouds, and smoke.
This article is primarily aimed at graphics programmers who already have a volume renderer that has a pluggable phase function. In other words, this is a tutorial about producing phase functions that you can easily use in a volume renderer.
While a common way to use GLSL, editing bare text files or embedded strings is not a scalable way to write programs.
This article will show how to make programming in GLSL more tolerable with linting and various means of code reuse.
October 2020
