************************************************************************** * Interactive Volumetric Shadows in Participating Media with * * Single-Scattering * * (Proceedings of the IEEE Symposium on Interactive Ray Tracing) * * Chris Wyman Shaun Ramsey * ************************************************************************** This directory contains executables and code for a demo for our paper entitled: "Interactive Volumetric Shadows in Participating Media with Single-Scattering." Please be aware that in order to keep the demo relatively simple to understand, not all details of the paper are included. We used a simplfied sampling scheme that still works reasonably well, use only the Preetham and Hoffman scattering model (though code with documentation remains for the Sun et al model), and we do not handle scenes where the eye (or part of the near plane) is in shadow. The demo requires: 1) GLUT (.dll included) 2) GLEW (.dll included) 3) A DirectX-10 class graphics card under Windows XP or Vista 4) (Possibly) an nVidia card. I have not tested this using ATI cards. More details are included about requirements in the README inside the "bin/" directory (where the precompile executable resides). The project file is for Microsoft Visual Studio .NET 2008. The codebase relies on a "standard" framework I use for most of my recent OpenGL-based research. The idea is to use a scenegraph-like construct that hides most of the rendering details from me when I want to render the whole scene at once, but still lets me easily pick out individual objects to render as glass, with caustics, or casting volumetric fog. Most of the code (inside the directories DataTypes, Interface, Materials, Objects, Scene, and Utils) is thus framework code that isn't particularly relevant to this demo. While this code is mostly straightforward and "self-commenting," I haven't spent time making sure it is particularly legible. Most of the interesting stuff goes on inside "RenderingTechniques," particularly "basicVolumeShadows.cpp" and "volumetricShadows.cpp," which contain, respectively, the code for using basic point light sources and textured spotlights to cast volumetric shadows. The "sceneLoader.cpp" code in this directory keeps it all together (main() routine, display callback, etc). Shaders are located in "bin/shaders/", and a README in that directroy describes which are particularly relevant to this demo.