This example renders sets of characters in a virtual environment using MPI for parallel rendering in GPU clusters. Each GPU renders a crowd, then the framebuffer is captured and the resultant image with depth is sent to the master node, no fancy communications are performed such as binary-swap. In the master node sort-last composition using GLSL is performed.
This project needs the following libraries previously installed:
- ASSIMP version 3. You might need compile ASSIMP's source code in your system in order to get version 3.
- GLEW
- Freeglut
- glm
- OpenMPI
- pthreads
In a cluster environment:
- Any image transport library (e.g. virtualGL) installed in your cluster.
GPU with OpenGL 4.2
- Header
Contains the header files
- Source
Contains the source files. The file main.cpp is the entry point of the project
- media
Contains 3D models
- shaders
Contains shaders in GLSL 4.2
The project was developed using NVIDIA Nsight in LINUX.
TODO:
In addition you will find the makefiles of the project in the Debug directory, you can change it according to your needs, however you might need to change *.mk files inside the Debug/Source directory.
mpi -np <N> <path/name of the executable>
where N is the number of nodes, it has been tested for N=1 to 9 nodes.
The app will open N windows, N-1 windows will render NUM_CHARACTERS models and the master window (title Process ID 0) will display the composition of the other subwindows. Open the Screenshot.png file
You can interact with the mouse and WASD keys by previously select the Process ID 0 (master) window. Pressing ESC in this window or closing it, will shut down the app.
Only tested in LINUX