This is my raytracer that has been fully optimized, with the use of const correct code, factories and singletons. Through the use of object oriented principles I was able to establish a convention so that any .txt file, written appropriately could be read into the scene and the objects would be created. By using my own tokenizer I get each component of the objects through commands written in the .txt file. I input my sample size, file to read from, and file to write to saving it out as a .raw file and the raytracer will run efficiently to produce a high quality render. The raytracer implements: diffuse, specular, and reflective materials ( also implementing diffuse reflections), point and directional lights, hard and soft shadows, anti-aliasing, depth of field, and environment fog.