Mobile Interactive Water System
Boats leave wakes, characters wade through, falling objects splash — and resting objects sit ... Scales up, too. ... Targeting PC or console? ... Water Surface renderer and URP water shader
by ParaziT
Price History +
Key features
• Two GPU simulation modes: Spring Grid and Wave Equation, one compute dispatch per tick
• Zero CPU readback, zero per-frame allocations
• Collider-shaped interaction: exact footprints for sphere, box, capsule and character controllers; bounds fallback for every other collider
• Real surface displacement: objects hold the water down to their underside and release it into a natural wake
• Far Water Ring + Edge Fade: a small interactive area blends seamlessly into a large static water surface with no seam and no waves bouncing back
• Realistic shader configures itself: Depth/Opaque textures are enabled per camera at runtime, and the Inspector offers a one-click fix on the URP assets for the Scene view
• Auto-sleep: the simulation stops dispatching once every wave has died out and wakes on the next touch
• Adjustable simulation rate (Steps Per Second), independent from FixedUpdate — 30 Hz is a good mobile target
• Solvers clamp themselves safely below their stability limits at any step rate
• One-click setup from the Hierarchy context menu; components resolve the water body automatically
• Per-vertex normal reconstruction by default, per-pixel toggle for high-end devices
• Bring your own shader: the height map is exposed as _HeightMap / _HeightMapParams on the renderer and as WaterSimulationBase.HeightMap in code, so custom HLSL or Shader Graph water (PC, console) plugs straight into the simulation
• Scripting API: Splash, SplashSphere, SplashBox, SplashCapsule, WaterSimulationBase.FindAt
• AI Skills: six SKILL.md files (setup and overview, create water, object interaction, scripted splashes, tuning and performance, realistic shader) verified against the source, in the Asset Store AI Skills format, discoverable by Unity AI Assistant and usable by Claude Code, Cursor, Copilot and other agents
Custom shaders: 2 water surface shaders (standard, realistic) + 1 demo gradient skybox + 2 compute shaders, URP, Shader Model 3.5
Textures: the water uses none — height maps are generated at runtime as 16-bit (RHalf) render textures, 32–512 cells per side (128 recommended for mobile). The demo props ship with 6 small PNG textures (256–1024 px).
Models: one demo-only rubber duck (4.5k triangles); the other demo props are Unity primitives or procedurally generated meshes.
Height map output: RHalf RenderTexture, R = surface height (m); _HeightMapParams = (texel size xy, world cell size zw) for normal reconstruction
Simulation cost (128², 30 Hz): one 16K-thread dispatch per step, ~130 KB (Spring) / ~100 KB (Wave) GPU memory, zero while asleep
Scripts: 6 runtime + 2 editor + 4 demo C# files, no assembly definitions, no third-party dependencies
AI Skills: 6 Markdown files under AI/Skills, no code, no effect on builds
Mobile Interactive Water System is built for phones from the first line, not scaled down from a desktop system. Ripples, wakes and splashes are simulated entirely in compute shaders — nothing is ever read back to the CPU and nothing is allocated per frame — and rendered by a single vertex-displacement shader on a static mesh.
Create a water object with one click, add a Water Interactor to anything that has a Collider, press Play. Boats leave wakes, characters wade through, falling objects splash — and resting objects sit in a real dent instead of floating on a flat sheet.
Two simulation modes cover most needs: Spring Grid for soft, fast-settling pools and puddles, and Wave Equation for physically travelling, reflecting waves on lakes and ponds. Both are stable by construction — no inspector value can make the water explode — and both sleep automatically when the surface is calm, so idle water costs nothing.
Scales up, too. The simulation's output is a plain height map (a RenderTexture, R = height in meters) that the included shaders displace a static mesh with and reconstruct normals from. Targeting PC or console? Keep the simulation and feed the same height map to your own water shader — HLSL or Shader Graph — by declaring the _HeightMap and _HeightMapParams properties; Water Surface supplies them to any material.
AI Skills included. The package ships six SKILL.md files under AI/Skills that teach AI coding agents (Unity AI Assistant, Claude Code, Cursor, Copilot and others) when to use the asset and exactly how: setting it up, creating water, making objects interact, scripting splashes, tuning for mobile, and configuring the realistic shader. Every menu path, API call and default value in them is verified against the shipped source. Unity AI Assistant picks them up automatically; for other agents, point them at the AI/Skills folder or copy it into your agent's skills directory (see AI/Skills in the package).
What's included
• Spring Grid and Wave Equation simulations (C# + compute shaders)
• Water Surface renderer and URP water shader
• Water Interactor component (sphere, box, capsule, character controller, and a bounds fallback for any other collider)
• Bonus realistic water shader (refraction, absorption, foam, reflections) with a ready-made material — it turns on the camera Depth/Opaque textures it needs by itself at runtime; a one-click Inspector button covers the Scene view
• Two demo scenes (sunset lake showcase + minimal setup) and PDF documentation
• Six AI Skills (SKILL.md) for AI coding agents
• Full, documented source code
Requirements
• Unity 2022.3 LTS or newer, Universal Render Pipeline (URP)
• Compute shader support: Metal (iOS/macOS), Vulkan or OpenGL ES 3.1+ (Android), DX11+ (Windows)
• Not compatible with the Built-in Render Pipeline, HDRP or WebGL
• Tested on a 2017 Galaxy Note 8 (Mali-G71): the water scripts stay under 1.5 ms per frame. The realistic shader and the showcase demo's post-processing are aimed at high-end devices; use the standard water shader on low-end phones
Questions and feature requests are welcome through the publisher page.