As part of my Computer Graphics class (CSCI-420), I built a ray-tracer in C++ using the OpenGL Core profile. As shown in these images, I implemented phong shading, shading based on barycentric coordinates, and shadows.
Currently, my shadows aren't perfect. There are lots of optimizations I could make to my current version, so this is a constant work-in-progress for me.
This ray-tracer is one of my favorite projects I've ever completed in my undergraduate career, and I plan to continue working on it once I complete my thesis project.