I chose to implement a bounding volume hierarchy. The spheres are all bounded
by axis-aligned boxes. The hierarchy traversal is done recursively following
pointers, so even more speed could be cranked with a non-pointer
implementation.
The scene traced for this project consists of N spheres (N=1..100000)
generated by center(2*drand48()-1, 2*drand48()-1, 2*drand48()-1),
radius(0.1/N^1/3). The images are all 512x512 pixels with 1 sample per pixel.
The eye is at (0,0,2) looking at (0,0,0) with a vertical field of view of 90
degrees. The image for N=1,000,000.
All time data was gathered running on Surreal (R10k). All data are
for total processing time.
| Num. Spheres
| Brute Force time
| Recursive Hierarchy time
|
| 1
| 3.014s
| 2.770s
|
| 10
| 6.031s
| 3.843s
|
| 100
| 36.269s
| 6.729s
|
| 1000
| 355.772s
| 20.809s
|
| 10000
| 4213.490s
| 118.814s
|
| 100000
| 49301.681s
| 1097.852s
|
| 1000000
| Surreal died...
| 11409.413
|
purcell@facility.cs.utah.edu
Last Modified February 7, 1998