This repo contains an implementation in C++ using MPI of a parallelized ray tracing algorithm, including implementation of both fixed and adaptive sampling schemes.
To run the code compile one of the files serial.cpp (for sequential code) or parallel.cpp (for the parallelized version) and then run it. If the file is run with a command line argument it generates an ouput image stored into a file named according to the argument, otherwise it performs some benchmarking and outputs the results into a .txt file.
Example for how to run sequential vesrion:
g++ serial.cpp -o my_serial.out
./my_serial.outThis benchmarks the fixed and adaptive rendering versions and stores output into a .txt file.
./my_serial my_image_namecreates two binary files "my_image_name_adaptive.bin" and "my_image_name_fixed.bin". These can be visualized using the vis.py file.
Example for how to run parallelized version:
mpic++ parallel.cpp -o my_parallel.out
mpirun -np 8 ./my_parallel.outor
mpirun -np 8 ./my_parallel.out my_image_nameThis does the same as the sequential code (only faster).
To visualize the images generated by the Ray tracing code use the python file vis.py, this file requires numpy and matplotlib. It expects as command line inputs the name of the image file to parse. E.g.
python vis.py my_image_name_adaptive.pngThis creates a .png file storing the image.