C++/OpenGL tool for realistic ocean wave rendering. Originally developed as a winter 2020 term project for CPSC591 @ University of Calgary.
Aaron Hornby
10176084
based on my other repo...
- cpp-xplatform - (C++17 cross-platform template repository using CMake + Git Submodules.) - CC0-1.0 licensed.
- and building off some parts of the code from my CPSC589 project... cage-tool.
- GCC (libstdc++) 7
- Clang (libc++) 6
- MSVC (MSVC Standard Library) 19.14 (VS 2017 15.7)
- Apple Clang 10.0.0
Refer here for a comprehensive overview of which C++ standard features are supported by each compiler.
- note: all C++17 core language features are supported by these compilers, but some library features are unsupported.
easiest (preferred) method:
git clone --recursive https://github.com/TexelBox/wave-tool.git
or (if you did a normal clone already (first two lines below)...)
git clone https://github.com/TexelBox/wave-tool.git
cd wave-tool/
git submodule update --init --recursive
- note: the enforced generators by the scripts are "Visual Studio 2017"/"Visual Studio 2017 Win64" and "Unix Makefiles" for their respective platforms. I won't be testing this repository with any other generator (use
cmake --help
for a list), but anybody can try using cmake manually to see if another generator works.
- double-click or use your favourite terminal to run
dev-build-all.bat
- note: you may have to run
./dev-build-all.bat
or.\dev-build-all.bat
instead (depending on your shell).
- use your favourite terminal to run
./dev-build-all.sh
- note: executing this way defaults to using
bash
. - note: if for some reason the script is non-executable, then run the script through an interpreter (only
bash
anddash
are tested, but you can try others).
bash dev-build-all.sh
or add executable permissions and then run
chmod +x dev-build-all.sh
./dev-build-all.sh
- for best performance, double-click/run
wave-tool.exe
in either x86/Release (32-bit) or x64/Release (64-bit).
- for best performance, double-click/run
wave-tool
in build/Release.
- if using
VS2017
, open either x86/wave-tool.sln or x64/wave-tool.sln and click the green arrow (you can also change the build config with the drop-down - use Debug when you need the debugger and Release when testing for performance).
make
./wave-tool
Many thanks to the contributors of the following projects! Please check them out!
- mainly implementing features outlined by Real-time water rendering / Introducing the projected grid concept - Claes Johanson [2004].
- with clarification using the demo code downloaded from here Tech Demo.
- Gerstner Waves implemented based on Nvidia GPU Gems - Chapter 1. Effective Water Simulation from Physical Models.
- cloud/star skybox visuals would not be possible without the base textures generated with this amazing tool! space-3d - Quickly generate procedural 3D space scenes in your browser with WebGL.
- cubemap debug texture sourced from Babylon.js.
- wave noise heightmap textures sourced from opengameart.org - Seamless Looping Waves Heightmaps.
- Mount Everest model sourced from free3d.com - Everest Mountain.
- grayscale water splash texture source from <title>unsplash-logo</title>Matt Brockie
enjoy!
😉