Indirect Diffuse and Glossy Illumination on the GPU István Lazányi and László Szirmay-Kalos TU Budapest Contact | Abstract | System requirements | Controls | Troubleshooting | Documentation Contact +-----------------------------------------------------------------------------------+ | IF YOU EXPERIENCE TECHNICAL PROBLEMS OR YOU WOULD LIKE TO INTEGRATE THE | | SOURCE CODE INTO YOUR APPLICATION, DO NOT HESITATE TO CONTACT US FOR ASSISTANCE. | +-----------------------------------------------------------------------------------+ | MAILTO: ilazanyi@freemail.hu, (szirmay@iit.bme.hu) | +-----------------------------------------------------------------------------------+ Abstract We present a fast approximation method to obtain the indirect diffuse or glossy reflection on a dynamic object, caused by a diffuse or a moderately glossy environment. Instead of creating a diffuse/specular irradiance map with precalculated values we perform all calculations on the fly. Supposing that the environment map representing the environment is downsampled, the method can run in real-time and provide visually pleasing results. System requirements Pixel shader 3.0 compatible video card with DirectX 9c driver. DirectX SDK, Visual Studio .NET 2003 to build the source code. Controls APPLICATION CONTROLS F1: Display this help text Quit: ESC F8: Switch to Wireframe mode Left click+drag: Rotate mesh Mouse wheel: Zoom Arrow keys: Move object L: [L]oad params S: [S]ave params & take SCREENSHOT R: [R]eset params MESH OBJECT CONTROLS O: show 3 mesh [O]bjects F: show [F]ireballs Ins, Del: scale mesh object Home, End, or 0-9: choose mesh object gray +,-: adjust intensity gray /,*: adjust specular shininess ALGORITHM-SPECIFIC CONTROLS TAB,Q: choose shading method N,M: choose cube map resolution A: refresh cube maps for every frame SPACE: refresh cube maps MANUALLY C: choose visualized [C]ube map Troubleshooting - display driver If you experience strange errors or artifacts, the first thing to do is to to update your display driver. - DirectX SDK The application was tested with the following Microsoft DirectX 9.0 SDK versions: - Oct 2005 (during development) - Jun 2006 (final testing) Porting to the new version was achieved by simply updating the DXUT files in the Common folder. To generate these files, we started the DirectX Sample Browser, and installed an EmptyProject(C++) project. The generated Common subfolder was used then to replace the old DXUT files. Otherwise, an error message "Incorrect version of Direct3D and/or D3DX." is displayed. Documentation We hope that you find the enclosed Doxygen documentation useful.