Stylized Water 2 documentation

Stylized Water 2

Stylized Water 2
Version: 1.3.1

2.Compatibility #



Minimum required version is Unity 2020.3.1f1, supported up to 2022.2.

Updates/fixes for Unity 2019 LTS have been discontinued as of version 1.1.8.

Beta and Alpha versions may work but will not be eligible for support or fixes. These versions are intended for beta and alpha testing Unity itself. Once a release version is available, the asset will be re-tested, and an update may follow with any required changes or fixes.

Error in Unity 2022.1+: Failed to include source file Underwater/UnderwaterFog.hlsl

As of this version, Unity changed the behaviour of their shader compiler, which causes this false–positive error to be thrown. That part of the shader code is not supposed to be activated normally, and it’ll be stripped during the build process. So ultimately it’s harmless, and doesn’t actually mean anything is practically wrong. I have yet to find a way around this inconvenience!

Scriptable Render Pipeline

Pipeline Compatible
Built-in (Legacy)
Universal (URP)
High-Definition (HDRP)

Only compatible with the Universal Render Pipeline. Support for other render pipelines unfortunately cannot be added, since this practically requires a complete rewrite of scripts and shaders, resulting in a new asset altogether.

Tested versions:

Unity version URP version
2020.3 10.x.x
2021.2-3 12.x.x
2022.1 13.0.0
2022.2 14.0.0
2023.1 15.0.0 (beta)

Version 11.x.x (in Unity 2021.1) has no major shader changes, it is not being tested on.

Changes to the URP shader libraries and rendering API are undocumented and come without usage instructions. This means preview versions can break the shader or scripting code.

This takes time to manually reverse engineer. Sometimes pre-emptive fixes are made for alpha versions, but these may break in earlier or later alpha versions.



Graphics API Compatible
OpenGLES 2.0
OpenGLES 3.0+

Devices released after 2012 support OpenGLES 3.0. Or typically an iPhone 6s or newer.

The shader is generally optimized, and uses a few principles that also aid performance sensitive hardware. Depending on the device and complexity of the project, it will depend if every feature on the shader can be enabled whilst maintaining proper framerates. See the Performance Guidelines page for more details. Expecting desktop-level graphics on mobile is unfortunately not realistic.

  • The water will not turn pixelated the longer the application runs, as is the case with other water shaders. Though this may slowly start to occur after ~6+ hours due to the limited precision of mobile hardware.
  • Google TV is not supported, given that URP graphics don’t fully work on the platform to begin with.

Desktop VR
Tested using an Oculus Rift S with the Oculus XR plugin. The Multi-pass, Multiview and Single Pass Instanced rendering techniques are all supported and work the same across all VR plugins. As a means of optimization, orthographic camera’s are not supported when VR is in use.

  • The “Shared depth buffer” option must be disabled in the Oculus XR settings, otherwise the water effects appear to lag behind the headset movement.
  • Planar reflections are not supported, regular reflections from the skybox or reflection probes work as expected.

Oculus Quest/Meta Quest 2

Tested using an Oculus Quest 2 with the Oculus XR plugin. Multiview rendering must be used, otherwise the water effects appear to lag behind the headset movement (issue with how the depth texture is rendered).

There’s a bug in OpenGLES 3.0 which severely affects transparent materials on Quest. When MSAA is enabled, they will either appear invisible or show blocky artefacts, depending if post processing is enabled or not. This means MSAA with transparent materials (such as water) aren’t supported on Quest.

As a rule of thumb: If a simple transparent plane works in your project, the water will also render correctly.

  • Any reference to mobile platforms in the documentation also applies to Quest.
  • Planar reflections are not supported, regular reflections from the skybox or reflection probes work as expected.

Oculus Go and Gear VR are considered obsolete, and are no longer being tested on. Though they practically work the same as Quest, rendering-wise.


WebGL 2.0 is compatible since it uses the OpenGL 3.0 rendering API just like Android/iOS does. WebGL 1.0 is not compatible and should be removed as a Graphics API in the Player settings.

Compatible with both OpenGL 4.1 and Metal.

tvOS remains untested, though it also uses the Metal graphics API, so there’s a slim chance this will pose any specific issues.

No graphical or performance issues were encountered.

Platform Compatible
Playstation 4 Tested via external party
Playstation 5 Verified by users
Xbox One X Tested with UWP build
Xbox Series X Tested with UWP build
Nintendo Switch Tested with EDEV hardware

Shader runs without any issues on Nintendo Switch. With all features enabled, the shader does not incur a noticeable performance hit (also in handheld mode). Though this may vary per project. Any references to mobile devices in the documentation should also apply to it.

Playstation 5 remains untested, due to lack of development hardware. Though I don’t suspect there will be any specific issues. Should you run into any, please contact me, as I’d be happy to investigate

Other assets

Fog post processing effects
See this page for a list of compatible assets.

Typically, any third-party fog/volumetric lighting solutions will ignore the water, which applies to all transparent materials in general. If this is the case, please get in touch so that I can investigate integration. The shader is set up in a way that easily facilitates this.

Asset name Compatible
Atmospheric Height Fog
Buto ❌ (Pending)
Enviro 2
Enviro 3
Cozy 1
Cozy 2
SC Post Effects
Weather Maker
Massive Clouds

Some assets have a closed code structure for fog shading, rather than exposing a re-usable code function for applying fog. Thus these asset can’t be integrated unless refactored by the author.

Use cases


Type Compatible
  • Rendering the water on an Overlay camera is not possible, due to limitations imposed by URP’s camera stacking system.
  • Overlay geometry will cause artifacts when refraction is enabled on the water material, since they’re rendered after the water. A setup using the Render Objects feature otherwise works perfectly.


May not appear to have any effect when using an incompatible graphics API or GPU (not supporting Shader Model 4.6+). In this case it is automatically disabled, so it can be enabled without worrying about a pink shader on some devices.

Tessellation cannot work with waves if GPU Instancing is enabled on the water material, due to a limitation of Unity’s rendering architecture.

Yes No Suggest edit
Last updated on January 30, 2023
11 of 11 users found this section helpful
Suggest Edit