Lab 4b:
This program is an expanded version of my Raytracer from Lab4a. In this version I used specific features only present
in C++11 such as the mersenne twister, which I need for supersampling.
Additionally this version of my raytracer comes with added terminal output, which shows a rough estimation of how far
the Raytracer engine is in generating the image. I also implemented special commands you can pass to the engine which
enables or enhances certain features. Below is an explanation of each feature and (if applicable) the added argument

Supersampling:
Supersampling is enabled by default and shoots 20 rays per pixel each offset by a randomization. This is the default,
setting. It is possible to adjust the amount of rays per pixel by providing an additional argument
--supersample-high will send 100 rays per pixel
--supersample-off turns the effect off

.obj Loading:
Since I was not able to get around to Field Test my Triangle intersection test, I included a parameter that prints the
contents of each mesh in a pretty format, mostly for debugging purposes, but also to show that my object loading works
--obj-print enables this feature, by default it is off.


New in this release are error codes:
-1 Path to XML File Wrong
-2 XML File exists but could not be loaded

Lab 4a:
The program was written in C++11, build system used is CMake. Resources used for this program outside of the
usual lecture slides were "Fundamentals of Computer Graphics 4th Edition" by Steve Marschner and Peter Shirley, as well
as the website www.scratchapixel.com which is an excellent resource for computer graphics. Additionally I borrowed the
conversion from a 0-1 float to a 1-255 number from StackOverflow.


Requirements:
Linux like operating system (needs to understand bash)
G++ version that supports C++11

Building:
cd into root directory
sh compile.sh
(Takes up to a minute to build)

Usage: ./ray <path to XML> <optional commands>
without <>

Example:
./ray res/example1.xml
or
./ray res/example1.xml --supersample-extreme

Additional libraries used are as following:
PugiXML for parsing XML files

Known issues:
UP-vector upside down
FOV not calculated appropriately, which means the image is slightly cut off

Completed Tasks:
Supersampling
Object Loading and Parsing into custom data structure