Stylised ocean shader (Gerstner HLSL breakdown)
James Marland
Proposed by Jan Mróz
Visit resource ↗Description
Stylised ocean shader is a James Marland portfolio breakdown of a stylised ocean in Unreal using custom HLSL. It documents looped Gerstner waves, fraction-based wave LOD, dispersion-based speeds, and artist-facing parameters for tuning look versus cost.
Intermediate shader readers studying water rendering benefit from links to classic Tessendorf ocean notes cited in the write-up.
Free on the portfolio site at the linked URL.
Related resources
- Borderline Racing - Outline shader and VFX (breakdown)
Portfolio breakdown of a Borderlands-style Unreal post-process outline using depth and world-normal edges, distance LOD bands, Custom Depth exclusions, and Niagara VFX.
95% match · <shaders><intermediate><blog><marland><breakdown><custom><notes><parameters> - Ocean Rendering, Part 1 - Simulation
Ocean Rendering, Part 1 - Simulation is an October 2025 technical blog post by Robert Ryan on the theory and mathematics of real-time FFT ocean surface simulation using…
90% match · <code><shaders><blog><dispersion><links><notes><ocean><tessendorf> - Simulating Ocean Water (Tessendorf, course notes PDF)
Classic SIGGRAPH course notes on simulating and rendering ocean surfaces, including Gerstner waves and FFT-based animation.
81% match · <shaders><classic><gerstner><notes><ocean><stylised><waves> - Shoreline Shader Breakdown (Cyanilux)
Shoreline Shader Breakdown is a December 2024 Cyanilux post merging earlier shoreline water threads into one stylized coast tutorial for Unity URP Shader Graph. It compares depth-texture versus UV shoreline meshes, then walks approaching wave lines, synced swash motion, Voronoi on the swash, and wet-sand darkening via low-alpha blending.
73% match · <shaders><intermediate><blog><breakdown><ocean><stylised><water><waves> - Interactive Simulation of Water Surfaces (SBGames 2010 short paper)
SBGames 2010 short paper on real-time water surface simulation techniques suitable for games.
69% match · <shaders><ocean><stylised><tessendorf><water><waves> - Terrain Texture Node Parameters - Terrain Shaders - Episode 13
Terrain Texture Node Parameters - Terrain Shaders - Episode 13 is a Ben Cloward YouTube tutorial continuing a Unity terrain shader series on wiring terrain layer controls into a…
58% match · <shaders><intermediate><cost><custom><notes><parameters> - Creating a Volumetric Ray Marcher
The post builds a march loop along the camera ray inside a mesh volume, sampling tiled 2D slice atlases as pseudo-3D density, accumulating opacity, and clipping to a bounding box while supporting o…
56% match · <shaders><intermediate><blog><artist><custom><notes><hlsl> - Physically Based Rendering
Alex Tardif’s Physically Based Rendering page is a practitioner-oriented explainer of energy-conserving shading terms - diffuse, specular, Fresnel, and microfacet models - for real
56% match · <shaders><intermediate><blog><custom><links><notes><hlsl> - The Art Of Packing Data
The Art Of Packing Data is a long technical blog post by redorav on The Code Corsair.
56% match · <code><optimization><shaders><intermediate><blog><custom><notes><hlsl> - Half-Edge Data Structure
The flipcode archives article from August 2000 explains the half-edge b-rep for triangle meshes.
54% match · <intermediate><blog><classic><cost><links><notes> - Finger Shadows in Compose
Finger Shadows in Compose is a November 2025 graphics article by Romain Guy on soft finger or stylus shadows over Jetpack Compose UI using Android RuntimeShader. It models the…
54% match · <code><shaders><intermediate><blog><custom><notes><parameters> - Optimizing mannequin
Optimizing mannequin is a December 2025 post on the peterstrahle.dev blog about performance work for the Quest VR title Mannequin, with lessons carried from Vampire: The…
54% match · <code><optimization><intermediate><blog><custom><notes><tuning> - Video Game Blurs (and how the best one works)
Video Game Blurs (and how the best one works) is an interactive graphics article on FrostKiwi's Secrets that teaches realtime blur algorithms in the browser with WebGL demos,…
54% match · <optimization><shaders><intermediate><blog><cost><notes><parameters> - Algorithms for making interesting organic simulations
Algorithms for making interesting organic simulations is a long technical article by Etienne Jacob on bleuje.com.
54% match · <code><shaders><intermediate><blog><links><notes><parameters> - Render Hell 2.0
An illustrated, artist-friendly deep dive into the GPU raster pipeline - draw calls, batching, vertex fetch, rasterization, and bottlenecks.
52% match · <optimization><artist><links><notes><unreal> - Custom Renderer Features (Cyanilux)
Long-form Cyanilux guide to URP ScriptableRendererFeature and ScriptableRenderPass code: example effects, RTHandle setup, blit paths, and Unity 6 Render Graph notes.
52% match · <code><shaders><blog><breakdown><custom><notes> - A series of tricks and techniques I learned doing tiny GLSL demos
A series of tricks and techniques I learned doing tiny GLSL demos is a December 2025 blog post by bµg about lessons from size-constrained GLSL demos after the earlier Red Alp…
52% match · <code><shaders><blog><links><notes><water> - Notes about VK_EXT_custom_resolve
Notes about VK_EXT_custom_resolve is a November 2025 Geek Blight blog post by Ricardo Garcia on Vulkan shader-driven multisample resolve, tied to Igalia work around the Steam…
52% match · <code><optimization><blog><classic><custom><notes> - Optimizing Individual Draw Calls - Game Optimization - Episode 9
[video] Optimizing Individual Draw Calls - Game Optimization - Episode 9 is an approximately 52-minute YouTube lesson by Ben Cloward in his Game Performance Optimization series.
52% match · <code><optimization><intermediate><cost><links><tuning> - Borderline Racing - Optimisation (breakdown)
Case study optimizing a large Unreal scene with 2,500+ actors: Nanite versus manual LODs, shared master materials, batch utilities, and Insights tuning.
51% match · <optimization><shaders><intermediate><blog><marland><breakdown><portfolio><unreal>