Here are some of the more interesting design choices:
Implemented a grid accelerator.
Use 2 pass optimization (hopefully correctly...)
Use a bounding box/triangle overlap test to help determine which triangles need not be put into a cell. (Since my big models use around a million triangles, this is huge. )
I keep track of the last n hits so I don't need to redo work (although keeping track of this adds work...)
Images!
The reference bunny image.
The Stanford Happy Buddha (1,087,716 triangles) made out of green glass and the
Stanford Dragon (871,414 triangles) inside a red glass ball.
5spp using a Tent filter. I used independent grid acceleration structures for the Buddha and Dragon.