Assignment 2 Lazy KD-Tree
Ranjitha Kumar
Date submitted: 27 Apr 2006
Code emailed: 27 Apr 2006
Description of implementation approach and comments
Tree Representation
An extra structure called lazyInfo was added to store the temporary data that a lazy node would need to access to expand itself during traversal. This struct contains fields such as the bounding box, depth and badRefines count corresponding to the lazy node. A pointer to this struct was placed in the second union of KDAccelNode struct. Another bit was allocated in the first union to distinguish a lazy leaf node from a regular node.
Tree Construction in the Constructor
In the constructor I built only one lazy leaf node. Furthermore, every conglomerate object is refined and stored as a kdtree. The scenes were rendered quicker when the refinement was done upfront in the constructor than later during traversal; it especially helped the rendering time of killeroos1-view1 improve because the scene displays all four killeroos.
Tree Construction during Traversal
Final Images Rendered with my implementation of lz-kdtree.cpp
killeroos-view1.pbrt (Killeroos visible)
|
KD Tree |
Lazy KD Tree |
Ratio |
build time (secs) |
16.0 |
1.9 |
842% |
total time (secs) |
28.8 |
26.3 |
110% |
Num of nodes made |
2.75M |
1.96M |
140% |
Triangle ray intersections |
673.2K |
826.8K |
81.4% |
"killeroos-view2.pbrt (Killeroos invisible)"
|
KD Tree |
Lazy KD Tree |
Ratio |
build time (secs) |
16.0 |
1.9 |
842% |
total time (secs) |
26.4 |
12.8 |
206% |
Num of nodes made |
2.75M |
64 |
4300% |
Triangle ray intersections |
758.4K |
776.1K |
97.7% |
"killeroos-view3.pbrt (close-up)"
|
KD Tree |
Lazy KD Tree |
Ratio |
build time (secs) |
16.0 |
1.9 |
842% |
total time (secs) |
30.4 |
20.9 |
1.45% |
Num of nodes made |
2.75M |
468.1K |
587% |
Triangle ray intersections |
644.1K |
1.01M |
63.8% |
"plants-view1.pbrt"
|
KD Tree |
Lazy KD Tree |
Ratio |
build time (secs) |
39.6 |
.7 |
5657% |
total time (secs) |
587.5 |
872.8 |
67.3% |
Num of nodes made |
14.86M |
4.86M |
306% |
Triangle ray intersections |
20.29M |
27.6M |
73.5% |
"plants-view2.pbrt"
|
KD Tree |
Lazy KD Tree |
Ratio |
build time (secs) |
39.6 |
.7 |
5657% |
total time (secs) |
969.5 |
1509.4 |
64.2% |
Num of nodes made |
14.86M |
6.18M |
240% |
Triangle ray intersections |
25.83M |
31.2M |
82.8% |