How do I use Water?
Note: The content on this page applies to the desktop editor mode only.
Unity includes several water prefabs (including needed shaders, scripts and art assets) within the Standard Assets and Pro Standard Assets packages. Unity includes a basic water, while Unity Pro includes water with real-time reflections and refractions, and in both cases those are provided as separate daylight and nighttime water prefabs.
Reflective daylight water (Unity Pro)
Reflective/Refractive daylight water (Unity Pro)
Water setup
In most cases you just need to place one of the existing Prefabs into your scene (make sure to have the Standard Assets installed):
- Unity has Daylight Simple Water and Nighttime Simple Water in .
- Unity Pro has Daylight Water and Nighttime Water in (but it needs some assets from as well). Water mode (Simple, Reflective, Refractive) can be set in the Inspector.
The prefab uses an oval-shaped mesh for the water. If you need to use a different Mesh the easiest way is to simply change it in the Mesh Filter of the water object:
Creating water from scratch (Advanced)
The simple water in Unity requires attaching a script to a plane-like mesh and using the water shader:
- Have mesh for the water. This should be a flat mesh, oriented horizontally. UV coordinates are not required. The water GameObject should use the Water layer, which you can set in the Inspector.
- Attach WaterSimple script (from ) to the object.
- Use shader in the material, or tweak one of provided water materials ( or ).
The reflective/refractive water in Unity Pro requires similar steps to set up from scratch:
- Have mesh for the water. This should be a flat mesh, oriented horizontally. UV coordinates are not required. The water GameObject should use the Water layer, which you can set in the Inspector.
- Attach Water script (from ) to the object.
- Water rendering mode can be set in the Inspector: Simple, Reflective or Refractive.
- Use shader in the material, or tweak one of provided water materials ( or ).
Properties in water materials
These properties are used in Reflective & Refractive water shader. Most of them are used in simple water shader as well.
Wave scale | Scaling of waves normal map. The smaller the value, the larger water waves. |
Reflection/refraction distort | How much reflection/refraction is distorted by the waves normal map. |
Refraction color | Additional tint for refraction. |
Environment reflection/refraction | Render textures for real-time reflection and refraction. |
Normalmap | Defines the shape of the waves. The final waves are produced by combining two these normal maps, each scrolling at different direction, scale and speed. The second normal map is half as large as the first one. |
Wave speed | Scrolling speed for first normal map (1st and 2nd numbers) and the second normal map (3rd and 4th numbers). |
Fresnel | A texture with alpha channel controlling the Fresnel efffect - how much reflection vs. refraction is visible, based on viewing angle. |
The rest of properties are not used by Reflective & Refractive shader by itself, but need to be set up in case user's video card does not suppor it and must fallback to the simpler shader:
Reflective color/cube and fresnel | A texture that defines water color (RGB) and Fresnel effect (A) based on viewing angle. |
Horizon color | The color of the water at horizon. (Used only in the simple water shader) |
Fallback texture | Texture used to represent the water on really old video cards, if none of better looking shaders can't run on it. |
Hardware support
- Reflective + Refractive water works on graphics cards with pixel shader 2.0 support (GeForce FX and up, Radeon 9500 and up, Intel 9xx). On older cards, Reflective water is used.
- Reflective water works on graphics cards with pixel shader 1.4 support (GeForce FX and up, Radeon 8500 and up, Intel 9xx). On older cards, Simple water is used.
- Simple water works about everywhere, with various levels of detail depending on hardware capabilities.