Conway games of life on a cubes surface
Timbre Freeman: Email [email protected]Nicholas Gainer: Email [email protected]Jeremy Munson: Email [email protected]Johnathan Smith: Email [email protected]
Each face of a cube will have a 2d grid of Conway games of life and their edges will interact with the connected face’s
- OpenGL Cube
- CPU Conway games of life but for cube surface
- CUDA Conway, games of life but for cube surface
At min, a cube with each face running Conway games of life on CUDA that has the edges interact with some start state to see it run (Ex have some Glider’s)
In void GameOfLifeCube::cpuCreate(int size) (file GameOfLifeCube.cpp) for the CPU Code and in __host__ void cudaMainInitialize(int size_set) (file cudaMain.cu) for the GPU Code
for (int i = 0; i < column; ++i) {
board[(3 * column) + i] = 1;
}Making a Line 3 from the top of all faces of the cube
World size of 12
Cube
Data of all faces (front, right, back, left, top, bottom)
Need the project executable (TODO: is dll’s needed?) and res folder to run
Take no arguments
The program will log to console and log files in logs folder using spdlog
A imgui state file will also be made to remember somethings about GUI last state (Ex where within the window GUI is at)
Recommend using a game pad (Microsoft Xbox Series S|X Controller) to look that the game of life cube
Note: avoid using left stick
Using ImGUI give you menus to control the program from.
Gives control over the camera.
- Check box
Stop Rotate CameraAuto rotate the camera (camera rotate angle value) - Check box
Top view camerawhen in default values move the camera to look from the top - Slider
camera rotate angle valuerotate the camera around theEye Center+Eye Hightat theEye Radias - Slider
Field of viewthe “extent of the observable world seen at any given moment” - Slider
Eye Hightthe hight of the eye above theEye Center - Slider
Eye Radiasthe diastase the camera is fromEye Center - Drag
Eye Centerwhere the camera looking at
Note: a cube (not game of life cube) exist at light
Eye Center
No need to use from the project (Leave at defaults)
Note: a cube (not game of life cube) exist at light
position
Gives control and info over the window
- Show info about the window and displays
- Check box
vsync (frame limit)let you trune on and off the frame limit to the frame rate of your display. - Check box
Full Screenset the screen full screen - Color Edit
clear colorset the background color
No need to use from the project (Leave at defaults)
Gives control over the graphics settings
-
Check box
Show linesNo need to use from the project (Leave at defaults) -
Check box
CL_CULL_FACENo need to use from the project (Leave at defaults)- Check box
CL_CULL_FACE backNo need to use from the project (Leave at defaults)
- Check box
-
Check box
Scale is all the same valueHas theModel Scalebe the same value for all axis -
Drag
Model Scalescale of the model -
Slider
Model rotate anglethe angle the model is rotated about (Model rotate vector) -
Slider 3
Model rotate vectorthe vector used when rotating the model -
Combo
ModelNo need to use from the project (Leave at defaults ofGameOfLifeCube) -
Slider
Sphere StepsNo need to use from the project (Leave at defaults) (used for the sphere model) -
Button
Reload ShadersNo need to use from the project (Leave at defaults)
Give info about use the game pad and how to use it
Note: avoid using left thumb stick
Note: only test with Xbox Series Controller over usb c cable on Linux
Gives control and info over the Game Of Life
-
Reset Menu
- New world size
- Reset button
-
Slider
Speed of Game of Life (sec)how much time need to pass before next state of current game of life (run update) -
Check box
Run game of lifeif the game of life is ruining or not (Use to stop the game of life and look at it without changing) -
Check box
Use help image (f, l, r, b, t, b)to use the help image to know what face we are looking at -
Check box
Use CUDA instead of CPUto use CUDA or CPU code- Text
Warring, Using Help Imagewhen using the help image - Text
Cuda not availablewhen no Nvidia CUDA device found
- Text
-
Button
Console Print CPU Stateto print all 6 sides of Game Of Life from CPU to console and log files -
Text
-
World size
-
CPU Board
Note: text output set up to world size 12
-
GPU Board
Note: text output set up to world size 12
-
-
Time info
- Time need to run last update
- The speed up of the last update in cpu and gpu
- Continuous average of time need to run update
- The speed up of the Continuous average time in cpu and gpu
- What state each are at (number of time update is called)
World size of 12
| Cuda/GPU | CPU |
|---|---|
| Cube | Cube |
| Data of all faces (front, right, back, left, top, bottom) | Data of all faces (front, right, back, left, top, bottom) |
World size of 163
https://drive.google.com/file/d/16g-Gnnah8pfelmU87dxCpXrcnlp3tsaQ/view?usp=sharing
We only test on Linux
Need OpenGL lib and dev
Need GLEW lib and dev
Need GLU lib and dev
Need GLM dev
Need git clone sub modules
Note: If altered cloned use
git submodule update --init --recursive
Need CMake
Need pandoc and wkhtmltopdf
Need nvcc
Wants clang
May Need gcc
sudo dnf group install "C Development Tools and Libraries" "Development Tools"
sudo dnf install cmake
sudo dnf install libXi libXi-devel
sudo dnf install glew glew-devel libGLEW
sudo dnf install clang clang-devel clang-libs clang-tools-extra
sudo dnf install glew glew-devel glfw glfw-devel glm-devel
sudo dnf install pandoc wkhtmltopdf