GameTools standalone demo: Ray tracing on the GPU [actual ray tracing, not approximate] ############################# Provided effect: ################# Multiple visible refractive objects with multiple refractions, including total internal reflection and refraction of exiting rays. The solution is based on the hierarchical (tiled) version of the Ray Engine approach. Algorithm benefits: ################### Actual ray tracing allows accurate light simulation. The hierarchical ray engine makes use of coherence to achive interactive performance. Therefore, it is most suitable for rendering eye or photon paths: primarily visible refractive objects or caustics (if augmented with photon splatting, not in this demo, but featured in our 'approximate ray tracing' implementations. ) The algorithm is linear in the number of ray-tracing primitives. It is therefore most useful if: - a large number of coherent ray paths needs to be traced - a low number of primitives are processed (low-poly models) - non-triangle geometry (spheres, quadratics, etc.) is used Compared to the depth approximate ray tracing solutions (a.k.a localized environment maps, depth environment impostors) the accuracy is often not necessary for a plausible result. Therefore, in a game, the ray engine approach is only competitive in a few special cases matching the conditions listed above. Build: ###### This is a standalone DirectX 9.0 application, compiles under Visual C++ 2003 with DirectX SDK April 2006 (identical to June 2006). Usage notes: ############ - Do not resize the application window. A fixed array of rays/tiles is used. - use the 'Iterations' slider to toggle the length of ray paths traced. Ignore the displayed number.