ShaderX 7 Submission

Real-time dynamic shadows for image-based lighting

authors

abstract

Rendering of scenes illuminated by high dynamic range (HDR) environment maps provides images of remarkable visual quality [2]. Existing real-time rendering algorithms based on pre-computed radiance transfer suffer from long pre-computation times precluding their use in dynamic scenes. Other real-time algorithms support dynamic scenes at the expense of ignoring visibility. However, the absence of shadows can compromise image quality since shadows play an important role in understanding the shape and position of the geometry.

We propose a simple real-time GPU-based algorithm to compute an approximate visibility function for vertices or texels of an object. In combination with previous work [1], our method yields a real-time shading algorithm for surfaces illuminated by an environment map that fully supports dynamic shadows in scenes where geometry, illumination, and materials are allowed to change since no pre-computation is involved.

We describe in detail how an environment map is importance-sampled in order to find high-intensity areas [5]. Then, we discuss a multi-pass GPU-based approach to fit the visibility function onto Spherical Harmonics basis functions and store them into a texture [3,4]. We show how this visibility representation can be used to render shadows resulting from an environment map illuminating both glossy and diffuse surfaces.

As a proof of concept, we provide a demo of several dynamic scenes with both glossy and diffuse materials exported from Autodesk Maya. The user can change the object's material properties and playback the animation to see the object appearance over the course of the animation.

We believe that our technique provides a novel and useful contribution to production pipelines with simple integration into existing software, as verified by our Autodesk Maya plug-in.

downloads

  • Video Walkthrough of Demo [12 MB]
  • Demo [50 MB]
    Note: This demo was developed using DirectX 9.0c (August 2007 SDK) on an NVIDIA 8800GTX with ForceWare Release 167. We have also tested the demo code on an NVIDIA 7900GT, 7950GT, and 8400GS, but for optimial performance please use an 8800GTX with the latest NVIDIA drivers.

references

  1. Colbert, M. and Krivanek, J. 2007. "GPU-Based Importance Sampling." GPU Gems 3. NVIDIA, pp. 459-475.
  2. Debevec, P. 2002. "Image-Based Lighting." In IEEE Comp. Graph. App.22(2), pp. 26-34.
  3. Green, P., Kautz, J., and Durand, F. 2007. "Efficient reflectance and visibility approximations for environment map rendering." In Proc. Eurographics 2007, pp. 495-502.
  4. Green, R. 2003. "Spherical Harmonic Lighting: The Gritty Details." Game Developers' Conference (available on-line at http://www.research.scea.com/gdc2003/spherical-harmonic-lighting.html).
  5. Pharr, M. and Humphreys, G. 2004. Physically Based Rendering: From Theory to Implementation. Morgan Kaufmann.