February 2025
Stylised ocean shader
A drag-and-drop stylised ocean with any number of Gerstner waves. Optimised for real time and highly customisable.

Breakdowns
3 deep dives into the parts I built.
- 01Gerstner waves in HLSLI implemented a custom HLSL Gerstner-wave shader with artist-friendly parameter tuning.

- 02Performance and LODsI kept the scene performant in real time with material and mesh LODs that move with the camera.

- 03Making the ocean's detailsI made the ocean look stylised and easily customisable with foam, caustics and wet sand.

Overview
This was my Year 2 specialism module at Escape Studios. It involved 5 weeks of self-directed research into a technical area of my choice. I’d been playing Dredge (Black Salt Games, 2024) at the time, and it made me want to build a large-scale, real-time stylised ocean shader that artists could author themselves. Ghislain Girardot’s deep dive into his own animated stylised ocean in Unreal (Girardot, 2022) was my main technical reference.
The brief I set myself was a drag-and-drop ocean that an artist could customise without touching the graph, and that stayed performant in real time. I skipped interactivity to fit the time, so there’s no buoyancy or physics. The result is one blueprint, with intuitive artist controls for the look and feel of the ocean.




Set dressing
To give the scene some scale and sell the image, I used the demo scene assets from Sandvector Studios’ Cartoon Water Shader pack (Sandvector Studios, 2017), which I got as one of Fab’s free monthly assets. They make up everything around the ocean, including the rocks, ruins, landscape and trees.

Reflections
Being my first specialism module, this was the first time I had the freedom to really explore something I wanted to. I think for the timeframe and my skill level it was a success. It was easily the most complex shader system I’d built at the time, and I was able to scope well, so I didn’t need to compromise on my vision.
If I were to come back to this project, there would be a lot of things I’d do differently. Firstly, a more intuitive dynamic mesh system would give me much more efficient triangle usage. I’d also add particles and drive the foam from a runtime virtual texture. While definitely overkill for this, exploring FFT-wave simulation would be a fun challenge. These additions would also provide a tougher profiling challenge.
Sources
Black Salt Games (2024). DREDGE. [online] Available at: https://www.dredge.game/ [Accessed 21 Jan. 2025].
My inspiration to make the stylised ocean shader in my project brief.
Girardot, G. (2022). A deep dive into my process of creating this animated stylized ocean in UE. [online] YouTube. Available at: https://www.youtube.com/watch?v=UWGwq-_w08c [Accessed 1 Oct. 2026].
My main technical reference for the project, from the Gerstner waves to how the material is put together in Unreal.
Noclip (2024). The Design of Dredge - Noclip Documentary. [online] YouTube. Available at: https://www.youtube.com/watch?v=yXQipk_mBAo [Accessed 21 Jan. 2025].
Research for the project brief, behind-the-scenes development footage.
Sandvector Studios (2017). Cartoon Water Shader. [online] Fab. Available at: https://www.fab.com/listings/23869931-3e46-4c42-b541-9f6057f12d13 [Accessed 1 Oct. 2026].
Demo scene assets used for the set dressing around the ocean.