A project by Louis Caubet & Firas Ben Jedidia for the INF443 Computer Graphics course at Polytechnique.
In this project, we wanted to demonstrate a pirate ship at sea, with functional cannons able to shoot down an ennemy ship. We also demonstrated a procedurally generated island that can be visited.
Please go take a look at our demo clip here !
Screenshots:
If you download the source code from the release, everything is ready to run out of the box. Just run setup.bat
to install vcpkg dependencies and you're good to go!
Otherwise, please follow the steps below to set everything up manually.
-
CGP, as installed in INF443. You should clone this repo in /scenes/inf443 for it to work seamlessly.
-
OpenGL 4.6. You need to update the glad version used by CGP. To do so, download a newer version of glad here. Replace the glad folder in
library/third_party
with the downloaded version. -
Assimp: install using vcpkg:
git clone https://github.com/Microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh ./vcpkg integrate install ./vcpkg install assimp --triplet x64-windows
Download a sample
CMakePresets.json
here and put in in the root directory.
Set the path tovcpkg.cmake
inCMakePresets.json
. -
glslang: install using vcpkg :
./vcpkg install glslang --triplet x64-windows
-
rapidjson: install using vcpkg :
./vcpkg install rapidjson --triplet x64-windows
-
stb_image.h
(GitHub) is a single-file public domain C/C++ image loader. We use it to load the window icon. -
GLFFT
(GitHub) is a C++/OpenGL library to run FFT on the GPU using compute shaders. We use the version shipped with theopengl-es-sdk-for-android
due to compatibility issues with the latest version. -
FFTWater
is based on the FFTOceanWater advanced sample fromopengl-es-sdk-for-android
(GitHub). We made numerous changes to this code to make it compatible with OpenGL 4.6 instead of OpenGL ES and to adapt the result to our project. -
FFTW3
is required. Add the precompiled library into aprecompiled/fftw3
folder. You can download the library from https://www.fftw.org/ -
The ship is an asset named "Black Pearl" made by "Dazimbane" on RenderHub.