Before updating, REMOVE the water shaders/scripts folder.
KWS2 is an advanced water system for Unity, built around a physically-based real-time simulation.
Unlike many static or purely visual solutions, KWS2 simulates actual wave-based flow, interactions with dynamic objects, and terrain-driven behavior.
Fully customizable through zones and optimized as far as technically possible for large-scale water environments, with support for natural scenarios like calm-to-moderate oceans, small waterfalls, and realistic river flows.
Ideal for projects requiring believable, performance-friendly water, from open seas to mountain streams, without targeting exaggerated extremes :)
Compared to the first version KWS Water System, some outdated features have been removed, while others have been significantly improved and reworked from the ground up.
KWS2 is a completely separate asset and does not require KWS1 to work.
An upgrade discount (~40%) is available for existing KWS1 users.
Supported pipelines: Built-in, URP, HDRP, Unity 6+, including modern RenderGraph-based versions
Mobile platforms are not supported due to compute shader limitations and heavy real-time rendering features. In future updates, lighter baked alternatives (such as precomputed simulation or ocean data) are planned, which should allow limited support on mobile hardware, webGPU, etc.
Other platforms (VR, Metal, PlayStation, Xbox, etc.) may work, but are not officially supported or guaranteed.
You can find additional technical information in the online README which is continuously being updated and expanded.
Also you can find an interactive PC DEMO here
Main Features
Dynamic Water Simulation
- Real-time dynamic water simulation using shallow-water equations and FFT ocean rendering
- Dynamic wave propagation and water mass movement
- Automatic interaction with terrain, obstacles, shorelines, and dynamic objects
- Water sources, drains, forces, flow redirection, and configurable zone effectors
- Persistent water accumulation, flooding, puddles, and evaporation
- Adjustable flow speed, turbulence, wave response, and stability
- Quality and performance controls for individual simulation zones
- Support for calm water, rivers, shorelines, pools, flooding, and other scenarios
- Optional cached simulation for faster and more predictable startup
- Dynamic rerouting when obstacles or water sources change
Rivers and Waterfalls
- Spline-free river creation (no manual river path placement required)
- Water automatically follows the terrain
- Create flowing rivers using zones, sources, forces, and obstacles
- Natural flow redirection around rocks and other geometry
- Support for long rivers built from multiple simulation zones
- Transfer of incoming water between connected zones
- Waterfall rendering with flow, foam, splashes, particles, and wetness
Rain, Puddles, and Flooding
- Rain can physically add water to simulation zones
- Natural puddle formation based on terrain depth
- Persistent water accumulation and flooding
- Configurable evaporation
- Independent rain control for different water areas
- Concentric raindrop ripples on water surfaces
- Wetness effects around flooded or rainy areas
Object Interaction
- Interaction with moving and rotating objects
- Shoreline response from ocean waves
- Water flow redirection around obstacles
- Dynamic wave generation from objects
- Water displacement and local flow changes
- Configurable water source, force, and drain effectors
- Custom water source color (blood, oil, etc)
- Splash/foam particles generation from surface impacts
- Projectile and bullet impact effects
Buoyancy
- Built-in buoyancy system
- Water height, flow and velocity sampling
- Suitable for boats, debris, characters, and other floating objects
- Public API for custom buoyancy and gameplay systems
- Support for both ocean waves and locally simulated water
Rendering and Lighting
Physically Based Water Rendering
- Physically-based lighting with absorption, subsurface scattering, caustics, sunshafts, and PBR shading
- Volumetric lighting above/below surface + underwater sunshafts
- Reflections stack: ultra-fast screen space reflection, planar, skybox and anisotropic reflection
- Physical refraction (screen-space approximation) with chromatic dispersion and water IOR
- Internal underwater reflections (Snell’s window) with full immersion support
- Anisotropic highlights and Fresnel-based shimmer
- Dynamic underwater caustics (generated by ocean and simulation waves)
- Dynamic foam generated from waves and water movement (breaking-wave foam, shoreline foam, ocean foam, foam transported by water flow, foam trails)
Compute-Based Particle Rendering
Foam particles are rendered using compute shaders instead of traditional billboard geometry.
This provides:
- Approximately three times faster particle rendering compared to the previous billboard-based implementation, and several times faster than equivalent VFX Graph setups in tested scenarios
- Distance-based particle LOD with occlusion culling
- Configurable particle density and quality
- Efficient rendering for large simulation zones
- Particle spawning and rendering are distributed across frames using time slicing, reducing frame-time spikes and improving overall performance
- Interpolation is used for rendering particles and splashes, which allows the particles to be updated at only 15 FPS instead of each frame
Visual Effects & Environment
- Dynamic foam, splash particles, wetness, and rain droplets
- Custom local zones that allow you to override water color, wind, water level, etc
- Bioluminescent foam/plankton style
- Persistent puddles and flooding with depth awareness
- Camera effects: underwater transitions, water-on-lens, blur, droplets, half-water line
- Custom decals on the water surface, such as foam trails, duckweed, blood, etc
- Underwater bubbles and bullet tracers. Underwater bubbles use an infinite-projection technique, creating the appearance of a much larger particle field while rendering only a few thousand particles
- Custom waterfall spray and splash effects, using shuriken particles
Mesh-Based and Stencil Clip Masking
Clip Masking allows a mesh to define a volumetric area inside the water.
It can be used to remove or isolate water inside complex shapes such as caves, submarine interiors, underwater windows, etc
Large Worlds and Runtime Control
KWS2 includes tools and APIs for large-world projects and custom rendering workflows.
Available functionality includes:
- Quadtree-based mesh rendering with infinite projection
- Runtime water origin shifting
- Global water scaling
- Manual water rendering control
Optimization
KWS2 is designed with performance as a core priority, and its simulation and rendering systems are continuously optimized.
Optimization features include:
- GPU-driven mesh generation
- Quadtree-based ocean LOD
- Procedural mesh instancing
- Compute-based particle rasterization
- Automatic simulation LOD
- Distance-based particle count reduction
- Simulation update-rate scaling
- Distance and occlusion culling
- Frame-distributed particle spawning and rendering
- Simulation cascade optimization
- Cached simulation initialization
- Configurable quality settings
- Per-feature rendering controls
- Support for Unity global quality levels
- Efficient rendering for large water surfaces and simulation zones
- Aggressive shader variant stripping that significantly reduces shader compilation and build size
Quality settings can be connected directly to Unity's global quality levels, allowing water quality to scale automatically across different hardware configurations.
Integration:
- Full support for Built-in, URP, and HDRP pipelines
- Writes to depth buffer (for DoF, third-party fog, volumetrics)
- One-click fog support: Enviro, Azure, Aura2, COZY, and more
- In-editor video tooltips and documentation for every parameter
- Quality settings are linked to Unity's global quality levels for seamless scaling
- Public runtime APIs
- Includes interactive example scenes covering ocean environments, rivers, waterfalls, dynamic simulation, shoreline waves, flooding, puddles, rain accumulation, pools, caves, underwater rendering and shooting, local zones and clip masking, projectile impacts, splash effects, foam trails, floating-origin workflows, dynamic object interaction, buoyancy, wetness, and decals.
Limitations:
While KWS2 offers a powerful and physically - grounded simulation system, there are a few important limitations to keep in mind:
- Not suited for extreme waves – The shallow water algorithm works best for low- to mid-scale wave heights. Using wave heights above ~20 meters may cause unnatural simulation behavior, artifacts, or instability. For large-scale ocean swell, use the FFT ocean rendering system instead of attempting to generate the entire wave through a dynamic simulation zone.
- Simulation zones are flat – water doesn’t fall, only spreads across a surface. Sloped surfaces like waterfalls are handled visually and through flow redirection, but cannot simulate true 3D fluid volume or pressure.
- Objects outside of zone camera – Each simulation zone uses an orthographic camera to detect terrain and object intersections. This means only objects visible to that camera will influence the water. If part of an object (e.g. a rock or terrain overhang) is hidden behind another object or wall, like inside a cave or behind steep geometry - it won’t be visible to the zone camera and won't affect the simulation. As a result, water might appear to flow incorrectly over or through it
- Non-flat or steep surfaces - such as undercuts, cliffs, or slanted rocks — may not be properly recognized by the simulation. The system assumes surfaces are mostly horizontal or gently sloped, so vertical or inverted geometry might result in inaccurate water behavior (e.g. water flowing through or ignoring the surface).
You can get all new beta changes/fixes/features and get support on the
Discord channel
Email: kripto289@gmail.com