As a practice of reading PBRT (not finished yet), I refined my former ray-tracer significantly:
1. An extensible framework
2. Refraction included
3. OBJ file format supported (Yes!)
4. A better sampling strategy (randomized)
5. A better GUI interface
This is only a START. Just wait for me…