Over two months, I iterated on a barebones raytracing engine for a class assignment. The engine is physically inspired and captures certain light phenomena such as refraction and reflection based on material properties, alongside typical Phong lighting properties and UV mapped textures. "Scenes" can be defined through text files similarly to the OBJ format, also allowing for user-made models to be rendered using the engine.
- Structured the engine from its most basic components of rays and shapes, then expanded on that foundation for more complex effects like reflection.
- Implemented shader-like functions with vector-based calculations and behavior.
- Utilized optimizations like ray packets to more quickly parse the scene and finish individual raycasts.
- Dealt with cases of error-based artifacts arising in the final raytraced images (e.g. shadows speckling the surfaces of primitives).