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.
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?
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?
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.
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
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?
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.
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:
Import Stylized Water 3 and the Underwater Extension, follow all the setup steps
Open the Underwater Trigger Example demo scene
In the lighting settings Scene tab, create a new lighting asset
In the lighting settings Environment tab, assign the Default-Skybox material for the Skybox material
Generate lighting
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.