This is a course project from class Ray-tracing for Computer Graphics. The original fall 2013 (August – December, 2013) course project website is here. Class website is here. Some of the code bases are from cyCodeBase, provided by Cem Yuksel.
AtomTrace supports basic ray-tracing technique as well as Bounding-Volume-Hierarchy (BVH) spatial partitioning (for accelerating ray-objects intersection detection), adaptive multi-sampling anti aliasing, glossy reflection surface, soft shadow and depth of field:
Besides direct illumination, AtomTrace can also render global illumination. I implemented Monte-Carlo methods and Photon Mapping:
The following image was originally render for the 2013 Teapot Rendering Competition in the University of Utah. Besides the teapot, the other 3D models are came from PC game Starcraft II. I used the game model of Void Ray and Carrier (Yes, I am a Starcraf II player and a big fan of Protoss!!).
If you attended the competition, or saw the image in my course webpage, the image below looks different because there was a gamma correction bug in the original image.
This new image has almost the same parameters setup as the original image except it has a bigger resolution (1440×1080). Notice the floor with bump mapping, depth of field, and the caustic under the two glass balls.
In addition, I implemented a naive emmision lighting method which takes the emission texture from the original game, and just take the emission texture in BRDF(Bi-directional Reflection Distribution Function) for rendering (notice the middle silver Void Ray, its front crystal looks brighter compares to its other components, similar lights happen on the golden Carriers).