As a final project for my graduate graphics class, my team implemented a Water Surface Wavelet from SIGGRAPH 2018. Unlike traditional FFT-based implementations of water surface, the paper’s wavelet-based approach allows for more localized and dynamic effects such as boundary reflection, spatially varying wind, and interactions with moving solids.

My work primarily focused on architecturing and programming the simulation to run on the GPU in realtime. Specifically, I compressed the 4D wave amplitude simulation table into 8 2D textures, one for each wavedirection, and packs the amplitude data of a certain wavenumber into one of the 4 color channels. I then programmed a glsl fragment shader to perform the simulation step, and optimized by precomputing constants on the CPU.

Below are visualization tools that I wrote to display the simulation textures.