{"repo":"2Retr0/GodotOceanWaves","free":true,"listed":false,"github":"https://github.com/2Retr0/GodotOceanWaves","clone":"git clone https://github.com/2Retr0/GodotOceanWaves.git","description":"FFT-based ocean-wave rendering, implemented in Godot","language":"C#","stars":3229,"topics":["godot","godot-engine"],"license":"MIT","category":"game-templates","readme_excerpt":"GodotOceanWaves An open ocean rendering experiment in the Godot Engine utilizing the inverse Fourier transform of directional ocean-wave spectra for wave generation. A concise set of parameters is exposed, allowing for scriptable, real-time modification of wave properties to emulate a wide-variety of ocean-wave environments. ocean demo.mp4 Introduction Why Fourier Transforms? A common approach for animating water in video games is by displacing vertices using Gerstner waves . While Gerstner waves work well for modeling the lower-frequency details in calmer waters, they fall short in accurately representing the choppy surfaces in an open ocean. To simulate the latter, a more complex approach simulates waves using the inverse Fourier transform of ocean-wave spectra modeled from empirical data gathered by oceanographers. A benefit of working in frequency space using ocean-wave spectra is the ease of modifying ocean properties (e.g., surface choppiness). When using Gerstner waves, it is unclear how waves (and their parameters) need to be changed to emulate a certain ocean state. In contrast, ocean-wave spectra expose parameters that change waves' properties directly. To compute the Fourier transform, a fast Fourier transform algorithm (FFT) is used specifically. On top of having a lower computational complexity than the classical discrete Fourier transform algorithm ($O(N \\log N)$ versus $ O(N^2) $), the FFT is scalable as a parallel system . This means that it is perfect for run","default_branch":null,"files":null,"tree":[],"storefront":"/r/2Retr0","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/2Retr0/GodotOceanWaves/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}