"Improving Image-Space Caustics Via Variable-Sized Splatting" Chris Wyman, University of Iowa Carsten Dachsbacher, University of Erlangen Running the demo: ----------------- Unzip the package, goto the "\bin" directiory, run the executable "improvingImageSpaceCausticsDemo.exe" Relevent commands: * Pressing "x" switches between caustic rendering techniques (Default = Approach of Wyman and Davis from I3D 2006) * Pressing "f" toggles on/off temporal filtering over 4 frames * Pressing "h" displays a help screen about other commands. (Note that rendering speed with help text displayed is quite variable, and often very slow) Initial state: -------------- This demo starts with a 512 x 512 window, with 4x supersampling (the final image is rendered at 1024 x 1024), a 512 x 512 buffer of photons, and a 512 x 512 caustic map. You may change resolutions using the menu (right mouse). Most options are configurable via key commands. The most important (and best tested/debugged) commands are documented via the help screen (toggled by pressing "h"). In order to keep distribution size small, the basic demo package comes with data to only render a glass Beethoven bust. Data for other example models can be downloaded separately. Simply place the data in the correct directories and the demo will add menu options to load these additional refractive objects. Demo requirements: ------------------ We developed our demo on nVidia GeForce 6800, 7800, and 7800 Go cards, so it will work on those models with up-to-date drivers. Because we use Cg for all our shaders, including various features of Shader Model 3.0, it may not work (easily) on ATI cards. This is solely due to our development environment. A (possibly non-exhaustive) list of OpenGL extensions explicitly used follows: GL_ARB_VERTEX_PROGRAM GL_EXT_FRAMEBUFFER_OBJECT GL_ARB_DRAW_BUFFERS GL_ARB_VERTEX_BUFFER_OBJECT GL_ARB_COLOR_BUFFER_FLOAT GL_ARB_TEXTURE_FLOAT GL_ARB_SHADOW GL_ARB_DEPTH_TEXTURE A couple extensions are (or probably are) implicitly used by Cg: GL_ARB_FRAGMENT_PROGRAM GL_NV_FRAGMENT_PROGRAM2 For nVidia graphics cards, any 8x.xx series driver should work. If not, update your drivers to an 82.xx, 83.xx, or later version. Requires the GLUT utility toolkit (DLL included), full package available from: http://www.opengl.org/resources/libraries/glut.html Requires the GLEW 1.3.2 OpenGL Extension library (DLL included), full package available from: http://glew.sourceforge.net Requires nVidia's CG library, release 1.4 (DLLs included), full pacakage available from: http://developer.nvidia.com/page/tools.html Source Code: ------------ Available upon request. E-mail: cwyman@cs.uiowa.edu Requests that appear to be from students doing term projects will be ignored. If you are an unknown (to me) student and expect a response, please distinguish yourself from the student requests I get periodically, for instance by telling me why you need the code. Code for this demo is (relatively) clean, though some crud still remains from the numerous paper deadlines this work has passed through. I have spent time commenting important parts of the code reasonably well. Shaders, however, are poorly documented. Limitations: ------------ Because the caustics gather happens in light-space, only when motion of objects or the light occurs, our caustic illumination on Phong surfaces is *wrong* (because we do not know the direction to the eye at the time of the gather). We use the approximation that all illumination comes from the light (not from points on the refractor). Acknowledgements: ----------------- Lightprobes from Paul Debevec (http://www.debevec.org/Probes/) Models from all over, but particularly the Stanford 3D Scanning Repository (http://graphics.stanford.edu/data/3Dscanrep/) and Hughes Hoppe's web page (http://research.microsoft.com/~hoppe/).