A Practical Analytic Single Scattering Model for Real Time Rendering
Bo Sun | Ravi Ramamoorthi | Srinivasa Narasimhan | Shree K. Nayar |
ACM Transactions on Graphics (SIGGRAPH 2005) (2005)
We consider real-time rendering of scenes in participating media, capturing the effects of light scattering in fog, mist and haze. While a number of sophisticated approaches based on Monte Carlo and finite element simulation have been developed, those methods do not work at interactive rates. The most common real-time methods are essentially simple variants of the OpenGL fog model. While easy to use and specify, that model excludes many important qualitative effects like glows around light sources, the impact of volumetric scattering on the appearance of surfaces such as the diffusing of glossy highlights, and the appearance under complex lighting such as environment maps. In this paper, we present an alternative physically based approach that captures these effects while maintaining real-time performance and the ease-of-use of the OpenGL fog model. Our method is based on an explicit analytic integration of the single scattering light transport equations for an isotropic point light source in a homogeneous participating medium. We can implement the model in modern programmable graphics hardware using a few small numerical lookup tables stored as texture maps. Our model can also be easily adapted to generate the appearances of materials with arbitrary BRDFs, environment map lighting, and precomputed radiance transfer methods, in the presence of participating media. Hence, our techniques can be widely used in real-time rendering applications.
Bo Sun, Ravi Ramamoorthi, Srinivasa Narasimhan, Shree K. Nayar (2005). A Practical Analytic Single Scattering Model for Real Time Rendering. ACM Transactions on Graphics (SIGGRAPH 2005), 24(3).
@article{Sun:2005:Scattering,
author = "Bo Sun and Ravi Ramamoorthi and Srinivasa Narasimhan and Shree K. Nayar",
title = "A Practical Analytic Single Scattering Model for Real Time Rendering",
year = "2005",
month = aug,
journal = "ACM Transactions on Graphics (SIGGRAPH 2005)",
volume = "24",
number = "3",
}