How do I use Water?

Unity Manual > FAQ > Graphics Questions > How do I use Water?

Unity includes several water prefabs (including needed shaders, scripts and art assets) within the Standard Assets and Pro Standard Assets packages. The Indie version 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 Indie has Daylight Simple Water and Nighttime Simple Water in Standard Assets->Water.
  • Unity Pro has Daylight Water and Nighttime Water in Pro Standard Assets->Water (but it needs some assets from Standard Assets->Water 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 Indie requires attaching a script to a plane-like mesh and using the water shader:

  1. 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.
  2. Attach WaterSimple script (from Standard Assets/Water/Sources) to the object.
  3. Use FX/Water (simple) shader in the material, or tweak one of provided water materials (Daylight Simple Water or Nighttime Simple Water).

The reflective/refractive water in Unity Pro requires similar steps to set up from scratch:

  1. 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.
  2. Attach Water script (from Pro Standard Assets/Water/Sources) to the object.
    • Water rendering mode can be set in the Inspector: Simple, Reflective or Refractive.
  3. Use FX/Water shader in the material, or tweak one of provided water materials (Daylight Water or Nighttime Water).

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 scaleScaling of waves bumpmap. The smaller the value, the larger water waves.
Reflection/refraction distortHow much reflection/refraction is distorted by the waves bumpmap.
Refraction colorAdditional tint for refraction.
Environment reflection/refractionRender textures for real-time reflection and refraction.
BumpmapDefines the shape of the waves. The final waves are produced by combining two these bumpmaps, each scrolling at different direction, scale and speed. The second bumpmap is half as large as the first one.
Wave speedScrolling speed for first bumpmap (1st and 2nd numbers) and the second bumpmap (3rd and 4th numbers).
FresnelA 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 fresnelA texture that defines water color (RGB) and Fresnel effect (A) based on viewing angle.
Horizon colorThe color of the water at horizon. (Used only in the simple water shader)
Fallback textureTexture 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.