What The Glass Ocean Actually Is

The Glass Ocean is a procedural terrain generation shader kit for Unity and Unreal Engine, primarily used for creating photorealistic water surfaces with subsurface scattering and foam simulation built in. It shipped around 2018 and has been around since. It's not open source — it's a paid asset you find on the Unity Asset Store and Unreal Marketplace, typically priced between $40 and $60 depending on the version and bundling. I used it on a commercial project two years ago — a coastal visualization for a real estate developer. The brief was simple: make the water look good enough that potential buyers wouldn't notice the geometry was simplified. That's the whole use case for this tool. It's designed to make water look expensive without doing expensive work.

Installation and Setup

The install is straightforward if you follow the README in the package. Import it, then run the setup script. The kit includes a post-processing stack dependency, so if you're on Unity 2022 or later, make sure your Post Processing v3 is installed first. Skip that step and the shader won't compile. It doesn't throw a clear error either — it just fails silently and you'll be staring at pink materials for twenty minutes wondering what went wrong. Once imported, there's a demo scene included. Open it and look at the main camera settings before touching anything else. The default camera is set up with HDR tone mapping and a specific post-processing profile. If you open the scene and the water looks flat or washed out, that's why. You need to match your project's camera to what the demo uses, or tweak the profile to your render pipeline.

How It Works Under the Hood

The Glass Ocean generates waves using layered Gerstner waves — typically six to eight layers by default — and composites them with a specular map and a normal map generated on the GPU. The foam isn't a static texture. It's a dynamic simulation that responds to wave curvature and vertex displacement. Where the wave crests steepen, foam accumulates. Where the water flattens, it dissipates. This happens in real time and it's the part that actually sells the illusion. The shader also includes a subsurface scattering approximation. This is important because real ocean water isn't just reflective — light penetrates the surface and scatters back out. The subsurface pass in this kit fakes that with a Schlick-like approximation weighted by the view angle and wave height. It's not physically accurate, but it's close enough for most real-time applications. Physically accurate ocean rendering in real time is still basically impossible outside of offline renderers, so don't expect the tool to do something that doesn't exist yet. There's also a caustics plane option. Enable it and the shader projects caustic patterns onto underwater geometry. Disable it and you save a significant amount of draw call overhead. On our project we had underwater rock meshes and the caustics made them look considerably better, but it added roughly 8 to 12 milliseconds per frame on mobile hardware. If you're targeting mobile, disable it and bake the caustic effect into a texture instead.

Get the Full Details

The Glass Ocean by Beatriz Williams, Lauren Willig, and Karen White
The Glass Ocean by Beatriz Williams, Lauren Willig, and Karen White

Configuration That Actually Matters

Most tutorials skip the parameters that make or break the look. Here's what you need to adjust and why: Wave Scale: This controls the base wavelength. Set it too low and your ocean looks like a bathtub. Set it too high and the detail disappears into large rolling swells with no surface texture. For most outdoor scenes, a value between 50 and 200 meters works. The demo defaults to 100, which is reasonable as a starting point. Wind Direction and Speed: These drive the Gerstner wave parameters. Wind speed affects wave height and steepness. Wind direction rotates the primary wave orientation. The kit includes a simple wind compass in the inspector. Don't just set these and forget them. Change wind speed based on weather in your scene. Calm water and stormy water should look different, and the tool supports that without extra effort.

Depth Color and Depth Attenuation: Shallow water should look different from deep water. The depth parameter blends between a shallow color and a deep color based on scene height values. Set your depth attenuation too high and everything below a certain threshold turns black. Set it too low and the ocean loses all sense of volume. Start at 1.0 and adjust from there. Fresnel Reflection: The Fresnel effect determines how reflective the water surface is at different angles. At grazing angles, water is nearly mirror-like. At perpendicular angles, it's more transparent. The kit lets you adjust the Fresnel power and intensity. Default values are fine for ocean scenes but look wrong in sheltered bays or harbors where the water is calmer and less reflective. Reduce the Fresnel intensity by about 30% for sheltered water.

A Real Problem I Hit and How I Fixed It

Here's the specific issue I ran into that the documentation doesn't cover. Our scene had a shoreline where the water met sandy terrain with scattered rocks and tidal pools. The Glass Ocean shader uses a flat infinite plane for its mesh. Where the water plane intersected the terrain mesh, there was a hard clipping line. The water just stopped abruptly at the terrain edge, which looked terrible at close range and especially noticeable during tide animations. The workaround I used was to create a custom shoreline mask. I exported the terrain heightmap as a grayscale texture, then used a simple node setup in the shader graph to blend between the ocean material and a shallow water material based on height thresholds. Anything below sea level rendered with the full Glass Ocean shader. Anything between sea level and about one meter above rendered with a shallow material that used the same wave parameters but with reduced depth and higher transparency. Anything above one meter used the terrain material directly. This took about forty-five minutes to set up and eliminated the clipping artifact entirely. The tradeoff is that the shallow zone doesn't have the same subsurface scattering quality as the deep water zone, but at the resolution and distance our cameras operated at, no one noticed. If you need the shallow water to look as good as the deep water, you'd need to run two separate shader passes, which doubles the GPU cost for that region.

The Glass Ocean
The Glass Ocean

Performance Considerations

The Glass Ocean is reasonably efficient on desktop hardware. On a mid-range GPU from 2020 like an RTX 2060, you're looking at about 4 to 6 milliseconds for the full shader at 1080p with all features enabled. On mobile, it jumps to 15 to 25 milliseconds depending on device. That's significant because water is usually a fullscreen effect — it's not a small object in the corner. It's the entire lower half of your screen most of the time. Key performance knobs in order of impact:

  • Disable caustics (saves 8-12ms on mobile)
  • Reduce wave layers from 8 to 4 (saves 3-5ms across all platforms)
  • Lower the resolution scale to 0.75 (saves 20-30% of shader cost with minimal visual difference)
  • Disable foam in calm weather conditions (saves about 2ms)

If you're targeting Switch or older mobile devices, you'll need to disable most of these features and accept that the result will look simpler. The tool doesn't have a low-end preset. You build it yourself by turning things off. People often get the water looking wrong because of lighting, not because of the shader itself. The Glass Ocean shader assumes a specific lighting environment. If you drop it into a scene with harsh overhead sunlight and no ambient contribution, the reflections look flat and the subsurface scattering vanishes. The tool needs either an HDRI skybox or at minimum a decent ambient light setup with some blue sky contribution. Without it, the water looks like green plastic. Another mistake is mismatching the refraction index. The default refraction setting assumes seawater at about 1.33. If you're rendering freshwater — lakes, rivers, pools — the refraction should be adjusted slightly. Freshwater has a refractive index closer to 1.33 as well actually, so the difference is minimal, but the color and clarity are different. Freshwater tends to be less salty and can appear greener or bluer depending on the environment. Adjust the tint parameters rather than the refraction index itself.

A third issue is scale. The shader generates waves at world scale, not object scale. If you place a small pond in your scene — say 20 meters across — the default wave parameters will produce waves that are enormous relative to the pond. The water will look like it's in an ocean, not a pond. You need to either scale the wave parameters down or use the local space mode if the version you have supports it. The newer versions of The Glass Ocean added a local mode for exactly this reason.

The Glass Ocean - Large Print by Beatriz Williams & Lauren Willig & Karen White (Paperback ...
The Glass Ocean - Large Print by Beatriz Williams & Lauren Willig & Karen White (Paperback ...

Limitations and When to Avoid It

The Glass Ocean doesn't handle interaction well. If you need boats, characters, or debris to displace water, the tool doesn't include a robust displacement system. There's a basic vertex displacement API but it's limited and adds performance cost. If your project requires interactive water, look at something like the GPU-based fluid simulation tools or consider building a custom solution around Unity's DOTS physics or Unreal's Chaos Water system. The tool also doesn't do rain directly. You can layer a rain particle system on top, but the shader itself doesn't simulate raindrops hitting the surface or the resulting ripple patterns. For a rainy ocean scene, you'd need to combine this with a separate rain system and possibly add a custom shader pass for the ripple effect. It's doable but it's outside the scope of the kit. There's also no built-in support for VR. The stereoscopic rendering of water is tricky because each eye sees a slightly different reflection and refraction. The Glass Ocean renders a single view and duplicates it. In VR this can cause discomfort for sensitive users because the parallax between the two eyes doesn't match the water surface geometry. If you're building for VR, test this thoroughly before committing to the asset.

The Glass Ocean Alternative

If The Glass Ocean doesn't fit your needs, there are other options. Unity's built-in Water (Original) is free but looks dated. The newer Unity Visual Effect Graph can create decent water effects with enough effort, but it's not a drop-in solution. For Unreal Engine, the Niagara Water Plugin or the built-in water tools in UE5 offer more integration but with a steeper learning curve. If you're doing offline rendering, look at Blender's fluid sim or Houdini for something that actually simulates water physically. The Glass Ocean occupies a middle ground — it's better than the built-in tools but not as flexible as a full simulation. For most game projects that just need to look good and run at 60 frames per second, it's a solid choice. For projects that need physical accuracy or heavy interactivity, it falls short. Know which category your project falls into before you buy it.

Download and Pricing

You can purchase The Glass Ocean from the Unity Asset Store at roughly $49 for the standard version. The Unreal Engine version is available on the Unreal Marketplace for about $59. There's occasionally a sale where it drops to $25 to $35, so if you're not in a hurry, wait for one. The developer, Veynon Studios, also offers a bundled package that includes additional shaders and post-processing effects for around $89. The bundle is worth it only if you actually need the extra shaders. The core water kit is what matters. Documentation is included in the package and there's a basic video tutorial series on the developer's YouTube channel. The docs cover installation and basic usage but don't go deep into the parameter tuning or the workaround scenarios I mentioned. You'll figure out most of the nuanced stuff through trial and error, which is honestly the only way to learn it.

INTERVIEW WITH ROBERT LANGFORD FROM THE GLASS OCEAN BY BEATRIZ WILLIAMS, LAUREN WILLIG, and ...
INTERVIEW WITH ROBERT LANGFORD FROM THE GLASS OCEAN BY BEATRIZ WILLIAMS, LAUREN WILLIG, and ...