Stylized Water 3 - Art-focused water shader

Asset Store | Documentation

What’s new?

  • Rewritten rendering code for Render Graph support
  • Revamped wave animations, allowing for various types of waves
  • GPU-based height query system, making rivers and Dynamic Effects readable
  • Water decals, snaps textures onto the water (oil spills, weeds, targeting reticles)
  • Improved wave crest foam shading (min/max range + bubbles)
  • Ocean mesh component, 8x8km mesh with gradual vertex density
  • Improved support for RigidBodies for the Align To Water component
  • Waterfall prefabs (3 sizes)
  • Height Pre-pass, allows other shaders to read out the water surface height.

A boat load of details are kept up-to-date in the documentation

1 Like

Stylized Water 3 is now available! Stylized Water 3 | VFX Shaders | Unity Asset Store A 50% release discount automatically runs for 2 weeks.

As the name implies, this is the continuation of SW2, for Unity 6. A fresh slate allowed me to freely iterate, without having to design around stability, as is the case for regular updates. Many things seemed to work well according to your feedback, and have remained the same. Whilst old backlog items and experimental features were revisited and formalized as new features.

Tthe Dynamic Effects extension for SW3 is also up here: Dynamic Effects for Stylized Water 3 (Extension) | VFX Shaders | Unity Asset Store

On the store descriptions you’ll find a brief overview of what’s new, to help you decide if the upgrade is worthwhile for you :slight_smile:

Supplemented by the changelog itself:

Added:

  • Option on shader to disable point/spot light: caustics & translucency
  • Waterfall prefabs (mesh, material + particles)
  • Support for the Waves feature on rivers
  • Align Transform To Water component now better handles RigidBodies

Changed:

  • Directional Caustics is now a per-material option
  • Screen-space Reflections is now a per-material option
  • Sharp and Smooth intersection foam styles are now merged into one feature
  • “Align Transform To Waves” is now called “Align Transform To Water”

Removed:

  • Integration for Dynamic Water Physics 2 (now deferred to author)
  • Non-exponential Vertical Depth (deemed unused) option

I love this asset from the early days and it is really nice to see the new version that supports Unity 6. Is there any rough ETA for the Underwater extension for the new version?

Happy to hear it!

it’s difficult to say! December will be a slow work month for me, so early 2025 is probably a more realistic goal post. I’ve made some promising strides this week, restoring much of the base functionality. But there’s an alternative approach I’m trying, that’ll ultimately be more flexible, so that leaves things very open endedat the moment.

Hi, I am using SW3 with Azure Sky 8 and they work pretty great so far. However, when I change the time, the lighting on the water surface does not seem to correct. I can fix it by clicking “Generate Lighting” button in the Lighting settings but there used to be a button called “Auto Generate” to handle that in the versions before Unity 6. What is the new way to handle dynamic lighting changes now that the button is gone in Unity 6?

The water shader samples environment reflections in the same way standard Unity shaders do. This means that reflection rendering is a scene-wide construct. But this hasn’t changed in Unity 6

In the editor (outside play mode), whenever the skybox or directional light is altered Unity refreshes the scene’s internal reflection probe (hidden). This hidden reflection probe is also what drive the “Skybox Intensity” slider under the scene’s Lighting settings. Without it, indirect light appears pitch black on geometry.

In play mode the probe is never rendered. Because GI (Global Illumination) baking is considered an editor-only feature. So it’s very possible for objects to appear oddly bright, even under night-time lighting.

Updating reflections in realtime is a common problem to solve for any day/night cycle system. Typically, you can create a reflection probe in the scene, and set it’s culling mask to “Nothing”. To emulate a “skybox only” reflection probe.

From that point on, strategically updating this reflection probe becomes the responsibility of the day/night system. That’s kind of a broader subject to look into and I’m sure Azure covers that in some way.

Thanks for the detailed explanation of how it works. Strangely, I noticed that when I manually press the “Generate Lighting” button, the reflections from the directional light don’t render on the water surface when the time changes (directional light intensity and position) correctly. When I clear the lighting data, it works fine again.

If you are using baked lightmaps and a baked directional light, shaders will no longer receive information about the directional light (direction, color and intensity), since in a sense it no longer exists.

I believe to retain (specular) reflections it needs to be set to “mixed”. Not sure if the water surface then needs to be marked as static or not, but this’ll work the same for any other object/material.

Hi, I recently downloaded the Unity6 compatible Curved World update and did the manipulation to integrate it with Stylized Water 3. The keywords appear well in the shader but the surface does not bend. There is no error message, so I can’t find what could be missing.

Have you been able to test the integration of this update?

The “shader activator” from Curved World will unfortunately not work, as some updates are necessary, pending by the author.

You can still manually add support for it, by uncommenting these lines of code in the shader:

Followed by uncommenting the lines that read #include "Assets/Amazing Assets/Curved World/Shaders/Core/CurvedWorldTransform.cginc" in all the files in the Assets\Stylized Water 3\Shaders\Passes folder.

After which, the Curved World options appear on the water material.

It works, thanks :+1:

The Underwater Rendering extension for Stylized Water 3 is now available!,

This requires Stylized Water 3 v3.1.0, please update it first!

What’s new?
• Completely rewritten for Unity 6’s Render Graph
• Redesigned to work exclusively with defined underwater areas (box collider triggers)
• Particle Effect controller, makes effects follow the camera underwater up to a specific depth (eg. sunshafts)
• Easier integration for transparent materials. The render queue of the effect can now be set • Revised shader for transparency, used for particle effects underwater.
• Optimized technical design, no longer uses full-screen post-processing.
• Support for mobile hardware.

Notes
• Blur/distortion effects have not been ported over (not implemented in any AAA games either, will be reconsidered based number of request over time)
• Volume-based settings blending was not ported. Over the years this feature was rarely ever mentioned, thus assumed to be unused by the majority of users.
• Support for split-screen camera setups is no longer possible

There is currently a 50% launch discount running for two weeks. After which, a 20% upgrade discount will remain available for anyone who owns a license to SW2’s Underwater Rendering extension until the end of September 2025

1 Like

Hi, I was waiting for a new Underwater Rendering update, glad it finally came out. Any idea/plans for supporting split screen in the near future? Or maybe you can share some insights of any workaround at this moment to achieve it?

Coincidentally, this should be possible quite soon!

1 Like

Looks like Dynamic Effect Demo scene in Unity 6 didn’t work at all, at least I can’t see anything. :eyes:
But the Water 3 is working as expected.

Also the effect is recognized:


Also on the demo there’s no camera and the Demo Controller is not configured!

It’s installed, but not visibile…

I’ve been able to fix it once, but can’t remember how :thinking:

[Edit]
Oh I see there’s no water! :joy:
You should fix the demo, YOU REALLY SHOULD!

Not needed.

If you were to open the StylizedWater3Demo scene (the base asset’s demo scene), the scene containing all the Dynamic Effects content will load additively with it. By itself it doesn’t contain anything else.

This is noted in the “Getting Started” section of the documentation. I’ll see if I can improve the wording to make this more apparent.

1 Like

Are there an buoyancy samples or examples of floating objects or boats?

Practically speaking, no. The term “buoyancy” refers to water physics, which this asset doesn’t feature.

Part of what’s necessary to achieve that is having access to the water’s height at any given position, for which there is an API, so it’s ultimately possible. On Discord “IceBadger” has shared a buoyancy physics script that uses this.

Hello, I’m trying out the Underwater rendering extension but I get flooded with this warning every frame:

[Underwater Rendering] The skybox reflection cubemap "ReflectionProbe-0" format "RGB_BC6H_UFloat" is reportedly not supported. This affects negatively underwater lighting. A third-party script is likely overriding this cubemap, but with an incorrect (or compressed) format.
UnityEngine.Debug:LogWarning (object)
StylizedWater3.UnderwaterRendering.SetupPrePass:RecordRenderGraph (UnityEngine.Rendering.RenderGraphModule.RenderGraph,UnityEngine.Rendering.ContextContainer) (at Assets/Stylized Water 3/Runtime/Underwater/Passes/SetupPrePass.cs:72)
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)

To recreate this:

  1. Import Stylized Water 3 and the Underwater Extension, follow all the setup steps
  2. Open the Underwater Trigger Example demo scene
  3. In the lighting settings Scene tab, create a new lighting asset
  4. In the lighting settings Environment tab, assign the Default-Skybox material for the Skybox material
  5. Generate lighting
  6. Constant flood of the above warning when the camera is under the water

When baked lighting runs, it will generate a ReflectionProbe-0, and something about this reflection probe freaks out. The underwater rendering appears fine, but being constantly flooded with a warning message is a no go.

I’m using Unity 6000.2.1f1.

Edit:

Found a workaround! It seems setting the Environment Lighting to Color (which is what the demo uses) stops the warning. Gradient also works too.

This warning is in place for a few edge cases, namely custom reflections. But evidently it also crops up when using baked lighting, which I hadn’t considered.

I will remove the warning in a future update, but you can also go ahead and remove it from Assets/Stylized Water 3/Runtime/Underwater/Passes/SetupPrePass.cs:72 in the meantime.

Thanks for the headsup!

1 Like