# 🌊🦞 Overcast Ocean Scene 🦞🌊

**URL:** <https://forum.babylonjs.com/t/overcast-ocean-scene/62478>\
**Category:** Demos and projects\
**Created:** [February 17, 2026, 7:13pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478 "2026-02-17T19:13:25Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![SirFizX](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sirfizx/32/11703_2.png) [@SirFizX](https://forum.babylonjs.com/u/SirFizX)\
**Post date:** [February 17, 2026, 7:13pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/1 "2026-02-17T19:13:25Z")

</div>

**Playground without Sound:**

> **[Babylon.js Playground](https://playground.babylonjs.com/full.html#O03DUQ)**
>
> Babylon.js playground is a live editor for Babylon.js WebGL and WebGPU 3D scenes

**Playground with Sound:**

> **[Babylon.js Playground](https://playground.babylonjs.com/#O03DUQ%231)**
>
> Babylon.js playground is a live editor for Babylon.js WebGL and WebGPU 3D scenes

[![](https://img.youtube.com/vi/sEdW-aXFnp4/maxresdefault.jpg "Overcast") ](https://www.youtube.com/watch?v=sEdW-aXFnp4)

**Note:** this implementation maintains the license.  
_ **Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License** _

I did this as a recent service to my students who have old iPads that don’t have WebGPU support. I wasn’t concerned about doing a completely independent rewrite. This spring I intend to do a MIT Licensed independently written ocean shader with significant improvements over this one.

---

<div class="post-metadata">

**Author:** ![AlitarSemiramis](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/alitarsemiramis/32/49920_2.png) [@AlitarSemiramis](https://forum.babylonjs.com/u/AlitarSemiramis)\
**Post date:** [February 17, 2026, 7:16pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/2 "2026-02-17T19:16:40Z")

</div>

That is some really pretty water!

---

<div class="post-metadata">

**Author:** ![onekit](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/onekit/32/49527_2.png) [@onekit](https://forum.babylonjs.com/u/onekit)\
**Post date:** [February 17, 2026, 11:52pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/3 "2026-02-17T23:52:23Z")

</div>

![image](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/2/7/27d2ee1e2a1061cf145a9cb20be5d9a066146a58.jpeg)  
The only thing that makes me a bit sad is the license restriction on this shader. If I want to monetize my game in the future, I’ll be forced to disable this ocean because of the Non-Commercial clause.

Technically, to use this commercially, I would need to track down **Alexander Alekseev** (the original creator) and also get permission from **Eric Eisaman** for his specific improvements and port to Babylon.js.

It’s an incredibly cool implementation, but to keep my project’s future safe, I’ll likely have to settle for a simpler water shader with a more permissive license (like MIT). Thanks to Eric for the great work on this port anyway! 🫩

---

<div class="post-metadata">

**Author:** ![SirFizX](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sirfizx/32/11703_2.png) [@SirFizX](https://forum.babylonjs.com/u/SirFizX)\
**Post date:** [February 18, 2026, 12:38am UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/4 "2026-02-18T00:38:40Z")

</div>

Thanks for sharing your perspective and concerns @onekit . I have to honor my inspiration and stay true to my heart and act in strict accordance with the license. I truly do however, intend to do an independently written MIT Licensed ocean shader this spring, from scratch, with several elements not present in this particular shader.

---

<div class="post-metadata">

**Author:** ![onekit](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/onekit/32/49527_2.png) [@onekit](https://forum.babylonjs.com/u/onekit)\
**Post date:** [February 18, 2026, 3:38am UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/5 "2026-02-18T03:38:34Z")

</div>

Eric, thanks for sending me the link to the [MIT-licensed ocean version](https://www.shadertoy.com/view/MdXyzX).  
I tried wrapping it in BabylonJS, and it worked!  
Check it out: [Babylon.js Playground](https://playground.babylonjs.com/#7KGC8J)  
🌊

---

<div class="post-metadata">

**Author:** ![julien-moreau](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/julien-moreau/32/12070_2.png) [@julien-moreau](https://forum.babylonjs.com/u/julien-moreau)\
**Post date:** [February 21, 2026, 11:52pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/6 "2026-02-21T23:52:34Z")

</div>

Bro @SirFizX this should go in the materials library of Babylon.js !!!

---

<div class="post-metadata">

**Author:** ![HiteshSahu](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/hiteshsahu/32/50817_2.png) [@HiteshSahu](https://forum.babylonjs.com/u/HiteshSahu)\
**Post date:** [February 23, 2026, 2:47pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/7 "2026-02-23T14:47:13Z")

</div>

See the Pen [Untitled](https://codepen.io/hiteshsahu/pen/yyaBxgL) by Hitesh Sahu ([@hiteshsahu](https://codepen.io/hiteshsahu)) on [CodePen](https://codepen.io).

I experimented a bit with your Shader code. It looks great when you are near ocean but it looks blurry from bigger distance.

playgroudn: [https://playground.babylonjs.com/#O03DUQ#2](https://playground.babylonjs.com/#O03DUQ#2)

---

<div class="post-metadata">

**Author:** ![SirFizX](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sirfizx/32/11703_2.png) [@SirFizX](https://forum.babylonjs.com/u/SirFizX)\
**Post date:** [February 23, 2026, 4:17pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/8 "2026-02-23T16:17:24Z")

</div>

Good point.

---

<div class="post-metadata">

**Author:** ![SirFizX](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sirfizx/32/11703_2.png) [@SirFizX](https://forum.babylonjs.com/u/SirFizX)\
**Post date:** [February 23, 2026, 5:19pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/9 "2026-02-23T17:19:23Z")

</div>

I incorporated a material level “fog-like” blurring effect at a distance. That is what you are experiencing. I did this in the shader itself particularly to incur less compute as an alternative to volumetric fog or other separate compute.

---

<div class="post-metadata">

**Author:** ![SirFizX](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sirfizx/32/11703_2.png) [@SirFizX](https://forum.babylonjs.com/u/SirFizX)\
**Post date:** [March 31, 2026, 11:10pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/10 "2026-03-31T23:10:31Z")

</div>

[Here](https://playground.babylonjs.com/#KFJT27) is a full MIT Licensed rewrite in WGSL running in the WebGPU Engine.

---

<div class="post-metadata">

**Author:** ![SirFizX](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sirfizx/32/11703_2.png) [@SirFizX](https://forum.babylonjs.com/u/SirFizX)\
**Post date:** [August 7, 2026, 9:52am UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/11 "2026-08-07T09:52:50Z")

</div>

[Here](https://playground.babylonjs.com/?webgpu=true#O4Z185) is the start using a slightly different approach.

 ![Ocean_Scene](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/b/2/b23ed38bdb392f88fd5d1ded93cd444be3bb6848.jpeg)

---

<div class="post-metadata">

**Author:** ![SirFizX](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sirfizx/32/11703_2.png) [@SirFizX](https://forum.babylonjs.com/u/SirFizX)\
**Post date:** [August 7, 2026, 2:04pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/12 "2026-08-07T14:04:21Z")

</div>

Here is a [video](https://youtu.be/Lu6Z5qsiETI) of the current state.

---

<div class="post-metadata">

**Author:** ![CrashMaster](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/crashmaster/32/23662_2.png) [@CrashMaster](https://forum.babylonjs.com/u/CrashMaster)\
**Post date:** [August 7, 2026, 2:08pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/13 "2026-08-07T14:08:22Z")

</div>

That’s a big moon 😆 Looking good otherwise, love the sound ambiance as well

---

<div class="post-metadata">

**Author:** ![SirFizX](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sirfizx/32/11703_2.png) [@SirFizX](https://forum.babylonjs.com/u/SirFizX)\
**Post date:** [August 8, 2026, 9:36pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/14 "2026-08-08T21:36:35Z")

</div>

[Here](https://playground.babylonjs.com/?webgpu=true#D4YXLN) is an update with several improvements including WASD and J for dolphin swim mode.

[![](https://img.youtube.com/vi/VdD4yNsDCWs/maxresdefault.jpg "Extended Seafloor and Dolphin Swim Mode") ](https://www.youtube.com/watch?v=VdD4yNsDCWs)

---

<div class="post-metadata">

**Author:** ![Pryme8](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/pryme8/32/7212_2.png) [@Pryme8](https://forum.babylonjs.com/u/Pryme8)\
**Post date:** [August 9, 2026, 6:01am UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/15 "2026-08-09T06:01:59Z")

</div>

haha fun \<3

---

<div class="post-metadata">

**Author:** ![SirFizX](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sirfizx/32/11703_2.png) [@SirFizX](https://forum.babylonjs.com/u/SirFizX)\
**Post date:** [August 9, 2026, 4:21pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/16 "2026-08-09T16:21:52Z")

</div>

There are so many imperfections in [this approach](https://playground.babylonjs.com/?webgpu=true#D4YXLN#12) yet I believe I am making progress, or at least learning a bunch related to combinatorics of employed techniques. I am so open to technical suggestions from the community. 🙏

[![](https://img.youtube.com/vi/bn8atryz_4A/maxresdefault.jpg "Soliciting Community Suggestions for Improvements") ](https://www.youtube.com/watch?v=bn8atryz_4A)

---

<div class="post-metadata">

**Author:** ![onekit](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/onekit/32/49527_2.png) [@onekit](https://forum.babylonjs.com/u/onekit)\
**Post date:** [August 9, 2026, 5:06pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/17 "2026-08-09T17:06:49Z")

</div>

The sound fits so well. I tried diving and surfacing. It sounds and looks great.

---

<div class="post-metadata">

**Author:** ![SirFizX](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sirfizx/32/11703_2.png) [@SirFizX](https://forum.babylonjs.com/u/SirFizX)\
**Post date:** [August 9, 2026, 5:32pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/18 "2026-08-09T17:32:35Z")

</div>

Thanks @onekit . After I tinker around a bit more, I intend on modularizing the client runtime, breaking the shader code into chunks, and creating a configuration based API as well as a function call based API, then releasing an npm package. The basic idea is to reduce the time required to set up a custom ocean scene.

---

<div class="post-metadata">

**Author:** ![SirFizX](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sirfizx/32/11703_2.png) [@SirFizX](https://forum.babylonjs.com/u/SirFizX)\
**Post date:** [August 9, 2026, 9:57pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/19 "2026-08-09T21:57:24Z")

</div>

I have begun to modularize the [code](https://playground.babylonjs.com/?webgpu=true#DN63AX).

 ![ocean_scene](https://us1.discourse-cdn.com/flex024/uploads/babylonjs/original/3X/5/5/559883c79a17a25c15d57039700d89cb71d79be5.jpeg)

---

<div class="post-metadata">

**Author:** ![Deltakosh](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/deltakosh/32/26635_2.png) [@Deltakosh](https://forum.babylonjs.com/u/Deltakosh)\
**Post date:** [August 10, 2026, 2:30pm UTC](https://forum.babylonjs.com/t/overcast-ocean-scene/62478/20 "2026-08-10T14:30:44Z")

</div>

water shader is super nice!

[Next page](https://forum.babylonjs.com/t/overcast-ocean-scene/62478.md?page=2)
