[1481] | 1 | GameTools standalone demo:
|
---|
| 2 |
|
---|
| 3 | Ray tracing on the GPU [actual ray tracing, not approximate]
|
---|
| 4 | #############################
|
---|
| 5 |
|
---|
| 6 |
|
---|
| 7 | Provided effect:
|
---|
| 8 | #################
|
---|
| 9 |
|
---|
| 10 | Multiple visible refractive objects with multiple refractions, including
|
---|
| 11 | total internal reflection and refraction of exiting rays. The solution is
|
---|
| 12 | based on the hierarchical (tiled) version of the Ray Engine approach.
|
---|
| 13 |
|
---|
| 14 | Algorithm benefits:
|
---|
| 15 | ###################
|
---|
| 16 | Actual ray tracing allows accurate light simulation. The hierarchical ray engine
|
---|
| 17 | makes use of coherence to achive interactive performance. Therefore, it is
|
---|
| 18 | most suitable for rendering eye or photon paths: primarily visible refractive
|
---|
| 19 | objects or caustics (if augmented with photon splatting, not in this demo, but
|
---|
| 20 | featured in our 'approximate ray tracing' implementations. )
|
---|
| 21 |
|
---|
| 22 | The algorithm is linear in the number of ray-tracing primitives. It is therefore
|
---|
| 23 | most useful if:
|
---|
| 24 | - a large number of coherent ray paths needs to be traced
|
---|
| 25 | - a low number of primitives are processed (low-poly models)
|
---|
| 26 | - non-triangle geometry (spheres, quadratics, etc.) is used
|
---|
| 27 |
|
---|
| 28 | Compared to the depth approximate ray tracing solutions (a.k.a localized
|
---|
| 29 | environment maps, depth environment impostors) the accuracy is often
|
---|
| 30 | not necessary for a plausible result. Therefore, in a game, the ray
|
---|
| 31 | engine approach is only competitive in a few special cases matching the
|
---|
| 32 | conditions listed above.
|
---|
| 33 |
|
---|
| 34 | Build:
|
---|
| 35 | ######
|
---|
| 36 | This is a standalone DirectX 9.0 application, compiles under Visual C++ 2003
|
---|
| 37 | with DirectX SDK April 2006 (identical to June 2006).
|
---|
| 38 |
|
---|
| 39 | Usage notes:
|
---|
| 40 | ############
|
---|
| 41 | - Do not resize the application window. A fixed array of rays/tiles is used.
|
---|
| 42 | - use the 'Iterations' slider to toggle the length of ray paths traced. Ignore
|
---|
| 43 | the displayed number.
|
---|