Stylized Water 2
8.Roadmap
There really is no shortage of ideas, and there are still plenty of things I want to work on! These are some features that are slated for R&D or are in an early stage. A general design principle if that everything should remain plug & play, and can be disabled entirely to avoid a performance impact for unused features.
I must, however, stress that anything written here is not concrete and subject to change.
The Trello board, used to manage development tasks can be publically viewed here:
Stylized Water 3
The Stylized Water 2 asset was initially released in November 2020. It has been regularly updated and extended through free updates. Though development is purely funded by the purchased of new licenses, rather than upgrades, whilst only the opposite is sustainable. Unfortunately the asset store ecosystem does not facilitate this, except by splitting of versions into separate assets altogether.
In 2024, with the release of Unity 6, future development will branch off into Stylized Water 3, so that users who contributed in 2020-2023 can choose to receive updates onwards in 2024-20xx. Whilst SW2 can remain stable and available for projects in the final stages of development.
For both the Underwater Rendering and Dynamic Effects extensions, a separate SW3-version will be released. Upgrading to these will be free if the work involved isn’t too drastical.
Features slated for Stylized Water 3
- Revised demo scene, aiming to house all examples in one environment
- Refractored waves, by using a precomputed set of parameters through the use a “Wave Profile”, this allows using up to 64 individual wave layers
- Support for waves on rivers.
- Water decals, a shader graph that snaps geometry to the water surface. Includes several premade textures (eg. duckweed, oilspill)
- GPU-based water height readbacks. Water height, including any dynamic effects, can be read out in C#
- Foam bubbles, creates a slightly lighter color underneath the surface foam effect.
- Render Graph support
- Wave crest foam particles, for ocean spray
- Ocean mesh, with high vertex density near the camera that taper of into large triangles on the horizon.
After release (R&D):
- Further improvement of screen-space reflections.
- Water effect trigger script functionality.
- Refactored Planar Reflections to adhere to URP best practices (currently relies on an obsolete API, soon to be deprecated entirely).
- Support for Tessellation when URP’s “GPU Resident Drawer” is enabled (if at all possible).
- MicroVerse content prefabs.
Extensions
In order of importance/completion:
Flowmap painter (extension asset)
Create a flowmap object, with a specific box-size and enables you to paint a flow map within this area. The painter is GPU based, so isn’t per-vertex, and allows for greater detail. This allows the use of brushes (modeled after Substance Painter).
Splines can be used to drive the flow, next to manual painting. But this specific feature would be rebuilt on Unity’s native spline tool when it releases.
Color gradient
Rather than using a 2 colors to set the deep and shallow color, a gradient can be used.
Released
Dynamic Effects (extension asset)
A decal-like system that allows the water surface to be displaced and its foam and normals to be modified. These decals are projected from a top-down perspective onto the water surface.
In practical terms, it means particle systems, trail renderers and static meshes can be used to influence the appearance of the water.
The normals of the water surface are recalculated from the created displacement (Y-axis only), ensuring any and all lighting effects look correct. For example, a wave actually makes the surface appear to curve.
Shown here is a single “Beach Wave” particle system that emits particles moving forward. The ‘Color Over Lifetime’ module is used to control the fading of displacement and foam.
The boat wake above uses two TrailRenderer components, and a ‘ripples’ particle system.
A ripples particle effect is attached to the surfers here
1.5.0
- Color absorption feature, darkens the underwater color based on depth (physically accurate shading)
- Improved refraction, taking the curvature of the surface into account more accurately.
- Improved surface foam, where it appears to dissipate based on the “intensity”. Visually, this translates to way better foam caps on wave crests.
1.4.0
- Conversion to a new “scriptable shader” framework. This allows the shader code to first be passed through a C# template parser. Meaning that things like integrations and support for extensions will be automatically configured. Plus this’ll make it easier to implement URP version specific code, safeguarding against breaking changes.
Underwater rendering (extension asset)
Allows a camera to be partially submerged, and draws a waterline effect on the camera lens. Underneath the water surface, fog and caustics are drawn and the water refracts the scene below the water.
Tessellation (feature update)
Dynamically subdivides the water geometry to create more vertices near the camera. This allows to have very detailed waves near the camera, without needing a high-poly mesh.