Update 11-02-2017: GPU-port is done. I'm currently working to optimize the surface shader a bit to perform and look well at the same time. Apart from that the height fields are now believable and large enough to simulate infinite oceans with periodical lengths of up to 480 meters at an effective facet size of less than 3 cm. This is high enough to make visible tiling very much impossible, although smaller periodical lengths of 240 m or even 120 meters would probably be sufficient to not notice any tiling. The periodical length is increased by jagging multiple grids with different facet lengths into each other. Calculating multiple FFTs is of course more costly than computing perlin noise, but in turn waves look much more believable and there's no need for noise at greater distances. At the moment the surface is being rendered based on vertex normals, which requires heavy mesh tessellation resulting in quite a bit of a performance loss. Currently I'm working to convert the calculated vertex normals to normal maps, so I can keep tessellation low while preserving an acceptable visual quality. I'll try to post some new footage and images asap and provide a playable demo of an infinite ocean (without underwater effects) by the end of this week. =========================================================== Alright folks, it's time to announce a fairly distant yet very big update to AQUAS. AQUAS is gonna get physical waves and use a PBR shader. I've recorded a short preview video to show what it looks like at the moment. I've recorded ocean waves at different wind speeds: 2, 5 & 30 [km/h]: Some things to note here: The Spectrum used here is the classical Phillips spectrum. I'm gonna try Pierson-Moskowitz and maybe even JONSWAP to see what the differences are, but to me it seems at the moment, that Phillips might do just fine. For some reason the surface behaves as if in a storm when inceasing the wind speed to 30. I don't know if this is specific to the Phillips spectrum or if something is missing here. The FFT evaluation of the Fourier amplitudes runs entirely on the CPU right now. The reason why the frame rate stays relatively high despite the high detail, is that I've moved all FFT calculations on extra threads. This won't be usable on many machines, because the amount of threads is rather high and even though it works fine, firther scripting logic would now cause a quick decline in performance. The length of a single ocean patch in the video is 60 m. Beyond this length the ocean is perfectly periodical. The high detail density on the surface was achieved by jagging multiple grids with different edge lengths into each other, resulting in a seemingly non-repetitive height field. The amount of samples for each grid was chosen as 32x32. The shader is a generic opaque PBR-shader with a base color, a fresnel effect and specular gloss Even though it might look rather advanced, everything is still in very early stages. The surface is opaque and there's nothing like color absorption, reflection, refraction or let alone shore line waves. All of these will still have to be added and additional effects such as the buoyancy feature will have to be reworked to work on wavy surfaces. The next step from here on will be to port the FFT calculation as well as the calculation of the fourier amplitudes for the FFT to the GPU using compute shaders. At this point I can make absolutely no prediction when everything will be done, I'll do my best to have it out as soon as possible and will post news whenever there's anything new to present.