**************************************************************************
*       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.

