AzurenderPlus is for final project of 15-869: Visual Computing System at CMU.
The goal is to build an out-of-core sort-based deferred ray tracer.
Project proposal page: http://photonmap.blogspot.com/2014/11/15-869-final-project-proposal-cpu-based.html11/5/2014
Removed path tracing code and photon mapping code from original Azurender code base for simplicity. This is the baseline.
11/6/2014
Update baseline for the final project. Added azRayPacket class for further working.
12/2/2014
Added OPEN MPI Supports. OPEN MPI libs are required. For Mac OSX: Use Homebrew install openmpi For Ubuntu: Use apt-get
To run the sample code on main.cpp, in your BUILD directory, cd into Debug, do as following:
mpirun -np 4 ./raytracer scenes/dragon_only.scene
Ideally, you should see:
Hello world from processor CMU-853713.WV.CC.CMU.EDU, rank 0 out of 4 processors
Hello world from processor CMU-853713.WV.CC.CMU.EDU, rank 3 out of 4 processors
Hello world from processor CMU-853713.WV.CC.CMU.EDU, rank 1 out of 4 processors
Hello world from processor CMU-853713.WV.CC.CMU.EDU, rank 2 out of 4 processors
12/3/2014
Got multiple machines on GHC running on independent instances simultaneously. To do this, change your .cshrc file, add the following lines for setting up environment variables
setenv PATH "/usr/lib64/openmpi/bin:/usr/local/bin:${PATH}"
setenv LD_LIBRARY_PATH "/usr/lib64/openmpi/lib"
Then go to your build directory where the bin file exists, run the ray tracer with following command:
mpirun -np 2 --host 128.2.100.173,128.2.100.175 ./raytracer scenes/dragon_only.scene -r
The two ip addresses are GHC40 and GHC42. -r
flag would prevent machines from opening a window, they would instead run the ray tracer on specific scene, and generate two independent png files.
12/4/2014
Created stanford dragon scene for testing. Added MPI basic interface and integrated data structure for ray redistribution through Open MPI. Refactorting of the matrix, ray class for distributed ray tracing. Finished the redistribution of MPI nodes bounding boxes.
12/5/2014 - 12/6/2014
Finished MPI stage for eye ray redistribution, shadow ray distribution and local independent shading.
12/7/2014 - 12/8/2014
Finished node framebuffer merging, refactored original single framebuffer to framebuffer with zbuffer integrated. Now we have a basic rendered result of piled stanford dragon:
12/11/2014
There are two different solutions in using MPI, one of them is currently having result like the following. The solution adopts a master-slave model, where all framebuffer updating is done by master. A basic path tracing result is as following: